[webbeans-commits] Webbeans SVN: r762 - in doc/trunk/reference: es-ES and 7 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Sun Jan 4 18:44:15 EST 2009


Author: nico.ben
Date: 2009-01-04 18:44:14 -0500 (Sun, 04 Jan 2009)
New Revision: 762

Added:
   doc/trunk/reference/en-US/Author_Group.xml
   doc/trunk/reference/en-US/Book_Info.xml
   doc/trunk/reference/en-US/decorators.xml
   doc/trunk/reference/en-US/ee.xml
   doc/trunk/reference/en-US/events.xml
   doc/trunk/reference/en-US/example.xml
   doc/trunk/reference/en-US/extend.xml
   doc/trunk/reference/en-US/injection.xml
   doc/trunk/reference/en-US/interceptors.xml
   doc/trunk/reference/en-US/intro.xml
   doc/trunk/reference/en-US/next.xml
   doc/trunk/reference/en-US/part1.xml
   doc/trunk/reference/en-US/part2.xml
   doc/trunk/reference/en-US/part3.xml
   doc/trunk/reference/en-US/part4.xml
   doc/trunk/reference/en-US/producermethods.xml
   doc/trunk/reference/en-US/ri-spi.xml
   doc/trunk/reference/en-US/ri.xml
   doc/trunk/reference/en-US/scopescontexts.xml
   doc/trunk/reference/en-US/specialization.xml
   doc/trunk/reference/en-US/stereotypes.xml
   doc/trunk/reference/en-US/xml.xml
   doc/trunk/reference/es-ES/Author_Group.po
   doc/trunk/reference/es-ES/Book_Info.po
   doc/trunk/reference/es-ES/decorators.po
   doc/trunk/reference/es-ES/ee.po
   doc/trunk/reference/es-ES/events.po
   doc/trunk/reference/es-ES/example.po
   doc/trunk/reference/es-ES/extend.po
   doc/trunk/reference/es-ES/injection.po
   doc/trunk/reference/es-ES/interceptors.po
   doc/trunk/reference/es-ES/intro.po
   doc/trunk/reference/es-ES/next.po
   doc/trunk/reference/es-ES/part1.po
   doc/trunk/reference/es-ES/part2.po
   doc/trunk/reference/es-ES/part3.po
   doc/trunk/reference/es-ES/part4.po
   doc/trunk/reference/es-ES/producermethods.po
   doc/trunk/reference/es-ES/ri-spi.po
   doc/trunk/reference/es-ES/ri.po
   doc/trunk/reference/es-ES/scopescontexts.po
   doc/trunk/reference/es-ES/specialization.po
   doc/trunk/reference/es-ES/stereotypes.po
   doc/trunk/reference/es-ES/xml.po
   doc/trunk/reference/fr-FR/Author_Group.po
   doc/trunk/reference/fr-FR/Book_Info.po
   doc/trunk/reference/fr-FR/decorators.po
   doc/trunk/reference/fr-FR/ee.po
   doc/trunk/reference/fr-FR/events.po
   doc/trunk/reference/fr-FR/example.po
   doc/trunk/reference/fr-FR/extend.po
   doc/trunk/reference/fr-FR/injection.po
   doc/trunk/reference/fr-FR/interceptors.po
   doc/trunk/reference/fr-FR/intro.po
   doc/trunk/reference/fr-FR/next.po
   doc/trunk/reference/fr-FR/part1.po
   doc/trunk/reference/fr-FR/part2.po
   doc/trunk/reference/fr-FR/part3.po
   doc/trunk/reference/fr-FR/part4.po
   doc/trunk/reference/fr-FR/producermethods.po
   doc/trunk/reference/fr-FR/ri-spi.po
   doc/trunk/reference/fr-FR/ri.po
   doc/trunk/reference/fr-FR/scopescontexts.po
   doc/trunk/reference/fr-FR/specialization.po
   doc/trunk/reference/fr-FR/stereotypes.po
   doc/trunk/reference/fr-FR/xml.po
   doc/trunk/reference/it-IT/Author_Group.po
   doc/trunk/reference/it-IT/Book_Info.po
   doc/trunk/reference/it-IT/decorators.po
   doc/trunk/reference/it-IT/ee.po
   doc/trunk/reference/it-IT/events.po
   doc/trunk/reference/it-IT/example.mo
   doc/trunk/reference/it-IT/example.po
   doc/trunk/reference/it-IT/extend.po
   doc/trunk/reference/it-IT/injection.po
   doc/trunk/reference/it-IT/interceptors.mo
   doc/trunk/reference/it-IT/interceptors.po
   doc/trunk/reference/it-IT/intro.po
   doc/trunk/reference/it-IT/next.po
   doc/trunk/reference/it-IT/part1.po
   doc/trunk/reference/it-IT/part2.po
   doc/trunk/reference/it-IT/part3.po
   doc/trunk/reference/it-IT/part4.po
   doc/trunk/reference/it-IT/producermethods.po
   doc/trunk/reference/it-IT/ri-spi.mo
   doc/trunk/reference/it-IT/ri-spi.po
   doc/trunk/reference/it-IT/ri.po
   doc/trunk/reference/it-IT/scopescontexts.po
   doc/trunk/reference/it-IT/specialization.mo
   doc/trunk/reference/it-IT/specialization.po
   doc/trunk/reference/it-IT/stereotypes.po
   doc/trunk/reference/it-IT/xml.po
   doc/trunk/reference/ja-JP/Author_Group.po
   doc/trunk/reference/ja-JP/Book_Info.po
   doc/trunk/reference/ja-JP/decorators.po
   doc/trunk/reference/ja-JP/ee.po
   doc/trunk/reference/ja-JP/events.po
   doc/trunk/reference/ja-JP/example.po
   doc/trunk/reference/ja-JP/extend.po
   doc/trunk/reference/ja-JP/injection.po
   doc/trunk/reference/ja-JP/interceptors.po
   doc/trunk/reference/ja-JP/intro.po
   doc/trunk/reference/ja-JP/next.po
   doc/trunk/reference/ja-JP/part1.po
   doc/trunk/reference/ja-JP/part2.po
   doc/trunk/reference/ja-JP/part3.po
   doc/trunk/reference/ja-JP/part4.po
   doc/trunk/reference/ja-JP/producermethods.po
   doc/trunk/reference/ja-JP/ri-spi.po
   doc/trunk/reference/ja-JP/ri.po
   doc/trunk/reference/ja-JP/scopescontexts.po
   doc/trunk/reference/ja-JP/specialization.po
   doc/trunk/reference/ja-JP/stereotypes.po
   doc/trunk/reference/ja-JP/xml.po
   doc/trunk/reference/pot/Author_Group.pot
   doc/trunk/reference/pot/Book_Info.pot
   doc/trunk/reference/pot/decorators.pot
   doc/trunk/reference/pot/ee.pot
   doc/trunk/reference/pot/events.pot
   doc/trunk/reference/pot/example.pot
   doc/trunk/reference/pot/extend.pot
   doc/trunk/reference/pot/injection.pot
   doc/trunk/reference/pot/interceptors.pot
   doc/trunk/reference/pot/intro.pot
   doc/trunk/reference/pot/next.pot
   doc/trunk/reference/pot/part1.pot
   doc/trunk/reference/pot/part2.pot
   doc/trunk/reference/pot/part3.pot
   doc/trunk/reference/pot/part4.pot
   doc/trunk/reference/pot/producermethods.pot
   doc/trunk/reference/pot/ri-spi.pot
   doc/trunk/reference/pot/ri.pot
   doc/trunk/reference/pot/scopescontexts.pot
   doc/trunk/reference/pot/specialization.pot
   doc/trunk/reference/pot/stereotypes.pot
   doc/trunk/reference/pot/xml.pot
   doc/trunk/reference/zh-CN/Author_Group.po
   doc/trunk/reference/zh-CN/Book_Info.po
   doc/trunk/reference/zh-CN/decorators.po
   doc/trunk/reference/zh-CN/ee.po
   doc/trunk/reference/zh-CN/events.po
   doc/trunk/reference/zh-CN/example.po
   doc/trunk/reference/zh-CN/extend.po
   doc/trunk/reference/zh-CN/injection.po
   doc/trunk/reference/zh-CN/interceptors.po
   doc/trunk/reference/zh-CN/intro.po
   doc/trunk/reference/zh-CN/next.po
   doc/trunk/reference/zh-CN/part1.po
   doc/trunk/reference/zh-CN/part2.po
   doc/trunk/reference/zh-CN/part3.po
   doc/trunk/reference/zh-CN/part4.po
   doc/trunk/reference/zh-CN/producermethods.po
   doc/trunk/reference/zh-CN/ri-spi.po
   doc/trunk/reference/zh-CN/ri.po
   doc/trunk/reference/zh-CN/scopescontexts.po
   doc/trunk/reference/zh-CN/specialization.po
   doc/trunk/reference/zh-CN/stereotypes.po
   doc/trunk/reference/zh-CN/xml.po
Removed:
   doc/trunk/reference/en-US/modules/
   doc/trunk/reference/es-ES/modules/
   doc/trunk/reference/fr-FR/modules/
   doc/trunk/reference/it-IT/modules/Book_Info.po
   doc/trunk/reference/it-IT/modules/decorators.po
   doc/trunk/reference/it-IT/modules/ee.po
   doc/trunk/reference/it-IT/modules/events.po
   doc/trunk/reference/it-IT/modules/example.po
   doc/trunk/reference/it-IT/modules/extend.po
   doc/trunk/reference/it-IT/modules/injection.po
   doc/trunk/reference/it-IT/modules/interceptors.po
   doc/trunk/reference/it-IT/modules/intro.po
   doc/trunk/reference/it-IT/modules/next.po
   doc/trunk/reference/it-IT/modules/part1.po
   doc/trunk/reference/it-IT/modules/part2.po
   doc/trunk/reference/it-IT/modules/part3.po
   doc/trunk/reference/it-IT/modules/part4.po
   doc/trunk/reference/it-IT/modules/producermethods.po
   doc/trunk/reference/it-IT/modules/ri-spi.po
   doc/trunk/reference/it-IT/modules/ri.po
   doc/trunk/reference/it-IT/modules/scopescontexts.po
   doc/trunk/reference/it-IT/modules/specialization.po
   doc/trunk/reference/it-IT/modules/stereotypes.po
   doc/trunk/reference/it-IT/modules/xml.po
   doc/trunk/reference/ja-JP/modules/
   doc/trunk/reference/pot/modules/
   doc/trunk/reference/zh-CN/modules/Book_Info.po
   doc/trunk/reference/zh-CN/modules/decorators.po
   doc/trunk/reference/zh-CN/modules/ee.po
   doc/trunk/reference/zh-CN/modules/events.po
   doc/trunk/reference/zh-CN/modules/example.po
   doc/trunk/reference/zh-CN/modules/extend.po
   doc/trunk/reference/zh-CN/modules/injection.po
   doc/trunk/reference/zh-CN/modules/interceptors.po
   doc/trunk/reference/zh-CN/modules/intro.po
   doc/trunk/reference/zh-CN/modules/next.po
   doc/trunk/reference/zh-CN/modules/part1.po
   doc/trunk/reference/zh-CN/modules/part2.po
   doc/trunk/reference/zh-CN/modules/part3.po
   doc/trunk/reference/zh-CN/modules/part4.po
   doc/trunk/reference/zh-CN/modules/producermethods.po
   doc/trunk/reference/zh-CN/modules/ri-spi.po
   doc/trunk/reference/zh-CN/modules/ri.po
   doc/trunk/reference/zh-CN/modules/scopescontexts.po
   doc/trunk/reference/zh-CN/modules/specialization.po
   doc/trunk/reference/zh-CN/modules/stereotypes.po
   doc/trunk/reference/zh-CN/modules/xml.po
Modified:
   doc/trunk/reference/en-US/master.xml
   doc/trunk/reference/pot/master.pot
Log:
Moved all modules from directory modules/ to root, regenerated POT and updated all POs

Copied: doc/trunk/reference/en-US/Author_Group.xml (from rev 759, doc/trunk/reference/en-US/modules/Author_Group.xml)
===================================================================
--- doc/trunk/reference/en-US/Author_Group.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/Author_Group.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,31 @@
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+<authorgroup>
+	<author>
+		<firstname>Gavin</firstname>
+		<surname>King</surname>
+		<affiliation>
+			<jobtitle>Web Beans (JSR-299) specification lead</jobtitle>
+			<orgname>Red Hat Middleware LLC</orgname>
+		</affiliation>
+	</author>
+	<author>
+		<firstname>Pete</firstname>
+		<surname>Muir</surname>
+		<affiliation>
+			<jobtitle>Web Beans (JSR-299) Reference Implementation lead
+			</jobtitle>
+			<orgname>Red Hat Middleware LLC</orgname>
+		</affiliation>
+	</author>
+	<othercredit>
+		<firstname>Nicola</firstname>
+		<surname>Benaglia</surname>
+		<contrib>Italian Translation</contrib>
+	</othercredit>
+	<othercredit>
+		<firstname>Francesco</firstname>
+		<surname>Milesi</surname>
+		<contrib>Italian Translation</contrib>
+	</othercredit>
+</authorgroup>


Property changes on: doc/trunk/reference/en-US/Author_Group.xml
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:keywords
   + Date Author Id Revision HeadURL
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/Book_Info.xml (from rev 759, doc/trunk/reference/en-US/modules/Book_Info.xml)
===================================================================
--- doc/trunk/reference/en-US/Book_Info.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/Book_Info.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,8 @@
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<bookinfo>
+  <title>Introduction to Web Beans</title>
+  <subtitle>The new Java standard for dependency injection and contextual state management</subtitle>
+
+  <xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>


Property changes on: doc/trunk/reference/en-US/Book_Info.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/decorators.xml (from rev 759, doc/trunk/reference/en-US/modules/decorators.xml)
===================================================================
--- doc/trunk/reference/en-US/decorators.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/decorators.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,132 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="decorators">
+  <title>Decorators</title>
+  
+  <para>Interceptors are a powerful way to capture and separate concerns
+  which are <emphasis>orthogonal</emphasis> to the type system. Any
+  interceptor is able to intercept invocations of any Java type. This makes
+  them perfect for solving technical concerns such as transaction management
+  and security. However, by nature, interceptors are unaware of the actual
+  semantics of the events they intercept. Thus, interceptors aren't an
+  appropriate tool for separating business-related concerns.</para>
+  
+  <para>The reverse is true of <emphasis>decorators</emphasis>. A decorator
+  intercepts invocations only for a certain Java interface, and is therefore
+  aware of all the semantics attached to that interface. This makes decorators
+  a perfect tool for modeling some kinds of business concerns. It also 
+  means that a decorator doesn't have the generality of an interceptor. 
+  Decorators aren't able to solve technical concerns that cut across many
+  disparate types.</para>
+  
+  <para>Suppose we have an interface that represents accounts:</para>
+  
+<programlisting role="JAVA"><![CDATA[public interface Account {
+    public BigDecimal getBalance();
+    public User getOwner();
+    public void withdraw(BigDecimal amount);
+    public void deposit(BigDecimal amount);
+}]]></programlisting>
+
+  <para>Several different Web Beans in our system implement the 
+  <literal>Account</literal> interface. However, we have a common legal 
+  requirement that, for any kind of account, large transactions must be 
+  recorded by the system in a special log. This is a perfect job for a
+  decorator.</para>
+  
+  <para>A decorator is a simple Web Bean that implements the type it
+  decorates and is annotated <literal>@Decorator</literal>.</para>
+  
+<programlisting role="JAVA"><![CDATA[@Decorator
+public abstract class LargeTransactionDecorator 
+        implements Account {
+    
+    @Decorates Account account;
+    
+    @PersistenceContext EntityManager em;
+    
+    public void withdraw(BigDecimal amount) {
+        account.withdraw(amount);
+        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {
+            em.persist( new LoggedWithdrawl(amount) );
+        }
+    }
+    
+    public void deposit(BigDecimal amount);
+        account.deposit(amount);
+        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {
+            em.persist( new LoggedDeposit(amount) );
+        }
+    }
+    
+}]]></programlisting>
+
+  <para>Unlike other simple Web Beans, a decorator may be an abstract 
+  class. If there's nothing special the decorator needs to do for a 
+  particular method of the decorated interface, you don't need to 
+  implement that method.</para>
+  
+  <section>
+    <title>Delegate attributes</title>
+  
+    <para>All decorators have a <emphasis>delegate attribute</emphasis>. 
+    The type and binding types of the delegate attribute determine which
+    Web Beans the decorator is bound to. The delegate attribute type must
+    implement or extend all interfaces implemented by the decorator.</para>
+    
+    <para>This delegate attribute specifies that the decorator is bound to
+    all Web Beans that implement <literal>Account</literal>:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Decorates Account account;]]></programlisting>
+
+    <para>A delegate attribute may specify a binding annotation. Then the
+    decorator will only be bound to Web Beans with the same binding.</para>
+    
+<programlisting role="JAVA"><![CDATA[@Decorates @Foreign Account account;]]></programlisting>
+
+    <para>A decorator is bound to any Web Bean which:</para>
+    
+    <itemizedlist>
+      <listitem>
+        <para>has the type of the delegate attribute as an API type, and</para>
+      </listitem>
+      <listitem>
+        <para>has all binding types that are declared by the delegate attribute.</para>
+      </listitem>
+    </itemizedlist>
+    
+    <para>The decorator may invoke the delegate attribute, which has much the same
+    effect as calling <literal>InvocationContext.proceed()</literal> from an
+    interceptor.</para>
+  
+  </section>
+  
+<section>
+  <title>Enabling decorators</title>
+
+  <para>We need to <emphasis>enable</emphasis> our decorator in 
+  <literal>web-beans.xml</literal>.</para>
+
+<programlisting role="XML"><![CDATA[<Decorators>
+    <myapp:LargeTransactionDecorator/>
+</Decorators>]]></programlisting>
+
+  <para>This declaration serves the same purpose for decorators that the
+  <literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>it enables us to specify a total ordering for all decorators 
+      in our system, ensuring deterministic behavior, and</para>
+    </listitem>
+    <listitem>
+      <para>it lets us enable or disable decorator classes at deployment time.</para>
+    </listitem>
+  </itemizedlist> 
+
+  <para>Interceptors for a method are called before decorators that apply to
+  that method.</para>
+
+</section>
+  
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/decorators.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/ee.xml (from rev 759, doc/trunk/reference/en-US/modules/ee.xml)
===================================================================
--- doc/trunk/reference/en-US/ee.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/ee.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,186 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="ee">
+  <title>Java EE integration</title>
+  
+  <para>Web Beans is fully integrated into the Java EE environment. Web Beans have 
+  access to Java EE resources and JPA persistence contexts. They may be used in 
+  Unified EL expressions in JSF and JSP pages. They may even be injected into some 
+  objects, such as Servlets and Message-Driven Beans, which are not Web Beans.</para>
+  
+  <section>
+    <title>Injecting Java EE resources into a Web Bean</title>
+    
+    <para>All simple and enterprise Web Beans may take advantage of Java EE dependency 
+    injection using <literal>@Resource</literal>, <literal>@EJB</literal> and 
+    <literal>@PersistenceContext</literal>. We've already seen a couple of examples of 
+    this, though we didn't pay much attention at the time:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Transactional @Interceptor
+public class TransactionInterceptor {
+
+    @Resource Transaction transaction;
+
+    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }
+    
+}]]></programlisting>
+
+<programlisting role="JAVA"><![CDATA[@SessionScoped
+public class Login {
+
+    @Current Credentials credentials;
+    @PersistenceContext EntityManager userDatabase;
+    
+    ...
+
+}]]></programlisting>
+    
+    <para>The Java EE <literal>@PostConstruct</literal> and 
+    <literal>@PreDestroy</literal> callbacks are also supported for all simple
+    and enterprise Web Beans. The <literal>@PostConstruct</literal> method is
+    called after <emphasis>all</emphasis> injection has been performed.</para>
+    
+    <para>There is one restriction to be aware of here: 
+    <literal>@PersistenceContext(type=EXTENDED)</literal> is not supported
+    for simple Web Beans.</para>
+    
+  </section>
+  
+  <section>
+    <title>Calling a Web Bean from a Servlet</title>
+    
+    <para>It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject 
+    the Web Bean using Web Beans field or initializer method injection.</para>
+    
+<programlisting role="JAVA">public class Login extends HttpServlet {
+
+    @Current Credentials credentials;
+    @Current Login login;
+
+    @Override
+    public void service(HttpServletRequest request, HttpServletResponse response)
+        throws ServletException, IOException {
+        credentials.setUsername( request.getAttribute("username") ):
+        credentials.setPassword( request.getAttribute("password") ):
+        login.login();
+        if ( login.isLoggedIn() ) {
+            response.sendRedirect("/home.jsp");
+        }
+        else {
+            response.sendRedirect("/loginError.jsp");
+        }
+    }
+            
+}</programlisting>
+
+    <para>The Web Beans client proxy takes care of routing method invocations from
+    the Servlet to the correct instances of <literal>Credentials</literal> and
+    <literal>Login</literal> for the current request and HTTP session.</para> 
+    
+  </section>
+  
+  <section>
+    <title>Calling a Web Bean from a Message-Driven Bean</title>
+    
+    <para>Web Beans injection applies to all EJBs, even when they aren't under the
+    control of the Web Bean manager (if they were obtained by direct JNDI lookup,
+    or injection using <literal>@EJB</literal>, for example. In particular, you can 
+    use Web Beans injection in Message-Driven Beans, which are not considered Web
+    Beans because you can't inject them.</para>
+    
+    <para>You can even use Web Beans interceptor bindings for Message-Driven Beans.</para>
+
+<programlisting role="JAVA">@Transactional @MessageDriven
+public class ProcessOrder implements MessageListener {
+
+    @Current Inventory inventory;
+    @PersistenceContext EntityManager em;
+
+    public void onMessage(Message message) {
+        ...
+    }
+            
+}</programlisting>
+
+    <para>Thus, receiving messages is super-easy in a Web Beans environment. But 
+    beware that there is no session or conversation context available when a message
+    is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</literal> and
+    <literal>@ApplicationScoped</literal> Web Beans are available.</para>
+    
+    <para>It's also easy to send messages using Web Beans.</para>
+
+  </section>
+  
+  <section id="jms">
+    <title>JMS endpoints</title>
+    
+    <para>Sending messages using JMS can be quite complex, because of the number of
+    different objects you need to deal with. For queues we have <literal>Queue</literal>, 
+    <literal>QueueConnectionFactory</literal>, <literal>QueueConnection</literal>, 
+    <literal>QueueSession</literal> and <literal>QueueSender</literal>. For topics we
+    have <literal>Topic</literal>, <literal>TopicConnectionFactory</literal>, 
+    <literal>TopicConnection</literal>, <literal>TopicSession</literal> and 
+    <literal>TopicPublisher</literal>. Each of these objects has its own lifecycle and 
+    threading model that we need to worry about.</para>
+    
+    <para>Web Beans takes care of all this for us. All we need to do is declare the
+    queue or topic in <literal>web-beans.xml</literal>, specifying an associated
+    binding type and connection factory.</para>
+    
+      <programlisting role="XML"><![CDATA[<Queue>
+    <destination>java:comp/env/jms/OrderQueue</destination>
+    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</connectionFactory>
+    <myapp:OrderProcessor/>    
+</Queue>]]></programlisting>
+    
+      <programlisting role="XML"><![CDATA[<Topic>
+    <destination>java:comp/env/jms/StockPrices</destination>
+    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</connectionFactory>
+    <myapp:StockPrices/>    
+</Topic>]]></programlisting>
+
+    <para>Now we can just inject the <literal>Queue</literal>, 
+    <literal>QueueConnection</literal>, <literal>QueueSession</literal> or 
+    <literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, 
+    <literal>TopicConnection</literal>, <literal>TopicSession</literal> or 
+    <literal>TopicPublisher</literal> for a topic.</para>
+    
+    <programlisting role="JAVA">@OrderProcessor QueueSender orderSender;
+ at OrderProcessor QueueSession orderSession;
+
+public void sendMessage() {
+    MapMessage msg = orderSession.createMapMessage();
+    ...
+    orderSender.send(msg);
+}</programlisting>
+    
+    <programlisting role="JAVA">@StockPrices TopicPublisher pricePublisher;
+ at StockPrices TopicSession priceSession;
+
+public void sendMessage(String price) {
+    pricePublisher.send( priceSession.createTextMessage(price) );
+}</programlisting>
+
+    <para>The lifecycle of the injected JMS objects is completely controlled by the
+    Web Bean manager.</para> 
+    
+  </section>
+  
+  <section>
+    <title>Packaging and deployment</title>
+    
+    <para>Web Beans doesn't define any special deployment archive. You can package
+    Web Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the application 
+    classpath. However, each archive that contains Web Beans must include a file named 
+    <literal>web-beans.xml</literal> in the <literal>META-INF</literal> or
+    <literal>WEB-INF</literal> directory. The file may be empty. Web Beans deployed in 
+    archives that do not have a <literal>web-beans.xml</literal> file will not be available 
+    for use in the application.</para>
+    
+    <para>For Java SE execution, Web Beans may be deployed in any location in which
+    EJBs may be deployed for execution by the embeddable EJB Lite container. Again,
+    each location must contain a <literal>web-beans.xml</literal> file.</para>
+    
+  </section>
+  
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/ee.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/events.xml (from rev 759, doc/trunk/reference/en-US/modules/events.xml)
===================================================================
--- doc/trunk/reference/en-US/events.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/events.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,315 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="events">
+  <title>Events</title>
+
+  <para>The Web Beans event notification facility allows Web Beans to interact in a 
+  totally decoupled manner. Event <emphasis>producers</emphasis> raise events that 
+  are then delivered to event <emphasis>observers</emphasis> by the Web Bean manager. 
+  This basic schema might sound like the familiar observer/observable pattern, but 
+  there are a couple of twists:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>not only are event producers decoupled from observers; observers are 
+      completely decoupled from producers,</para>
+    </listitem>
+    <listitem>
+      <para>observers can specify a combination of "selectors" to narrow the set of 
+      event notifications they will receive, and</para>
+    </listitem>
+    <listitem>
+      <para>observers can be notified immediately, or can specify that delivery
+      of the event should be delayed until the end of the current transaction</para>
+    </listitem>
+  </itemizedlist>
+
+<section>
+  <title>Event observers</title>
+
+  <para>An <emphasis>observer method</emphasis> is a method of a Web Bean with a 
+  parameter annotated <literal>@Observes</literal>.</para>
+
+<programlisting role="JAVA"><![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }]]></programlisting>
+
+  <para>The annotated parameter is called the <emphasis>event parameter</emphasis>. 
+  The type of the event parameter is the observed <emphasis>event type</emphasis>.
+  Observer methods may also specify "selectors", which are just instances of Web Beans 
+  binding types. When a binding type is used as an event selector, it is called an 
+  <emphasis>event binding type</emphasis>.</para>
+
+<programlisting role="JAVA"><![CDATA[@BindingType
+ at Target({PARAMETER, FIELD})
+ at Retention(RUNTIME)
+public @interface Updated { ... }]]></programlisting>
+
+  <para>We specify the event bindings of the observer method by annotating the event 
+  parameter:</para>
+
+<programlisting role="JAVA"><![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document) { ... }]]></programlisting>
+
+  <para>An observer method need not specify any event bindings&#151;in this case it
+  is interested in <emphasis>all</emphasis> events of a particular type. If it does
+  specify event bindings, it is only interested in events which also have those
+  event bindings.</para>
+
+  <para>The observer method may have additional parameters, which are injected according 
+  to the usual Web Beans method parameter injection semantics:</para>
+
+<programlisting role="JAVA"><![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document, User user) { ... }]]></programlisting>
+
+</section>
+
+<section>
+  <title>Event producers</title>
+
+  <para>The event producer may obtain an <emphasis>event notifier</emphasis> object 
+  by injection:</para>
+
+<programlisting role="JAVA"><![CDATA[@Observable Event<Document> documentEvent]]></programlisting>
+
+  <para>The <literal>@Observable</literal> annotation implicitly defines a Web Bean
+  with scope <literal>@Dependent</literal> and deployment type <literal>@Standard</literal>,
+  with an implementation provided by the Web Bean manager.</para>
+
+  <para>A producer raises events by calling the <literal>fire()</literal> method 
+  of the <literal>Event</literal> interface, passing an <emphasis>event object</emphasis>:</para>
+
+<programlisting role="JAVA"><![CDATA[documentEvent.fire(document);]]></programlisting>
+
+  <para>An event object may be an instance of any Java class that has no type
+  variables or wildcard type parameters. The event will be delivered to every
+  observer method that:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>has an event parameter to which the event object is assignable, and</para>
+    </listitem>
+    <listitem>
+      <para>specifies no event bindings.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>The Web Bean manager simply calls all the observer methods, passing
+  the event object as the value of the event parameter. If any observer method
+  throws an exception, the Web Bean manager stops calling observer methods, and
+  the exception is rethrown by the <literal>fire()</literal> method.</para>
+
+  <para>To specify a "selector", the event producer may pass an instance of the event 
+  binding type to the <literal>fire()</literal> method:</para>
+
+<programlisting role="JAVA"><![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>(){} );]]></programlisting>
+
+  <para>The helper class <literal>AnnotationLiteral</literal> makes it possible to
+  instantiate binding types inline, since this is otherwise difficult to do in Java.</para>
+  
+  <para>The event will be delivered to every observer method that:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>has an event parameter to which the event object is assignable, and</para>
+    </listitem>
+    <listitem>
+      <para>does not specify any event binding <emphasis>except</emphasis> for the
+      event bindings passed to <literal>fire()</literal>.</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>Alternatively, event bindings may be specified by annotating the event notifier
+  injection point:</para>
+
+<programlisting role="JAVA"><![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]></programlisting>
+
+  <para>Then every event fired via this instance of <literal>Event</literal> has
+  the annotated event binding. The event will be delivered to every observer method 
+  that:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>has an event parameter to which the event object is assignable, and</para>
+    </listitem>
+    <listitem>
+      <para>does not specify any event binding <emphasis>except</emphasis> for the
+      event bindings passed to <literal>fire()</literal> or the annotated event
+      bindings of the event notifier injection point.</para>
+    </listitem>
+  </itemizedlist>
+
+</section>
+
+<section>
+  <title>Registering observers dynamically</title>
+  
+  <para>It's often useful to register an event observer dynamically. The application
+  may implement the <literal>Observer</literal> interface and register an instance
+  with an event notifier by calling the <literal>observe()</literal> method.</para>
+  
+  <programlisting role="JAVA"><![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } } );]]></programlisting>
+  
+  <para>Event binding types may be specified by the event notifier injection point or by 
+  passing event binding type instances to the <literal>observe()</literal> method:</para>
+  
+<programlisting role="JAVA"><![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } }, 
+                                                new AnnotationLiteral<Updated>(){} );]]></programlisting>
+
+</section>
+
+<section>
+  <title>Event bindings with members</title>
+
+  <para>An event binding type may have annotation members:</para>
+
+<programlisting role="JAVA"><![CDATA[@BindingType
+ at Target({PARAMETER, FIELD})
+ at Retention(RUNTIME)
+public @interface Role {
+    RoleType value();
+}]]></programlisting>
+
+  <para>The member value is used to narrow the messages delivered to the observer:</para>
+
+<programlisting role="JAVA"><![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) { ... }]]></programlisting>
+
+  <para>Event binding type members may be specified statically by the event producer, via
+  annotations at the event notifier injection point:</para>
+
+<programlisting role="JAVA"><![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]></programlisting>
+
+  <para>Alternatively, the value of the event binding type member may be determined dynamically
+  by the event producer. We start by writing an abstract subclass of <literal>AnnotationLiteral</literal>:</para>
+  
+<programlisting role="JAVA"><![CDATA[abstract class RoleBinding 
+    extends AnnotationLiteral<Role> 
+    implements Role {}]]></programlisting>
+    
+  <para>The event producer passes an instance of this class to <literal>fire()</literal>:</para>
+
+<programlisting role="JAVA"><![CDATA[documentEvent.fire( document, new RoleBinding() { public void value() { return user.getRole(); } } );]]></programlisting>
+
+</section>
+
+<section>
+  <title>Multiple event bindings</title>
+
+  <para>Event binding types may be combined, for example:</para>
+
+<programlisting role="JAVA"><![CDATA[@Observable @Blog Event<Document> blogEvent;
+...
+if (document.isBlog()) blogEvent.fire(document, new AnnotationLiteral<Updated>(){});]]></programlisting>
+
+  <para>When this event occurs, all of the following observer methods will be notified:</para>
+
+<programlisting role="JAVA"><![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document document) { ... }]]></programlisting>
+<programlisting role="JAVA"><![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document) { ... }]]></programlisting>
+<programlisting role="JAVA"><![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) { ... }]]></programlisting>
+<programlisting role="JAVA"><![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }}}]]></programlisting>
+
+</section>
+
+<section>
+  <title>Transactional observers</title>
+
+  <para>Transactional observers receive their event notifications during the before or 
+  after completion phase of the transaction in which the event was raised. For example, 
+  the following observer method needs to refresh a query result set that is cached in 
+  the application context, but only when transactions that update the 
+  <literal>Category</literal> tree succeed:</para>
+
+<programlisting role="JAVA"><![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes CategoryUpdateEvent event) { ... }]]></programlisting>
+
+  <para>There are three kinds of transactional observers:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para><literal>@AfterTransactionSuccess</literal> observers are called during 
+      the after completion phase of the transaction, but only if the transaction completes 
+      successfully</para>
+    </listitem>
+    <listitem>
+      <para><literal>@AfterTransactionFailure</literal> observers are called during 
+      the after completion phase of the transaction, but only if the transaction fails to 
+      complete successfully</para>
+    </listitem>
+    <listitem>
+      <para><literal>@AfterTransactionCompletion</literal> observers are called 
+      during the after completion phase of the transaction</para>
+    </listitem>
+    <listitem>
+      <para><literal>@BeforeTransactionCompletion</literal> observers are called 
+      during the before completion phase of the transaction</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>Transactional observers are very important in a stateful object model like Web
+  Beans, because state is often held for longer than a single atomic transaction.</para>
+  
+  <para>Imagine that we have cached a JPA query result set in the application scope:</para>
+  
+  <programlisting role="JAVA"><![CDATA[@ApplicationScoped @Singleton
+public class Catalog {
+
+    @PersistenceContext EntityManager em;
+    
+    List<Product> products;
+
+    @Produces @Catalog 
+    List<Product> getCatalog() {
+        if (products==null) {
+            products = em.createQuery("select p from Product p where p.deleted = false")
+                .getResultList();
+        }
+        return products;
+    }
+    
+}]]></programlisting>
+
+  <para>From time to time, a <literal>Product</literal> is created or deleted. When this
+  occurs, we need to refresh the <literal>Product</literal> catalog. But we should wait
+  until <emphasis>after</emphasis> the transaction completes successfully before performing
+  this refresh!</para>
+  
+  <para>The Web Bean that creates and deletes <literal>Product</literal>s could raise
+  events, for example:</para>
+  
+  <programlisting role="JAVA"><![CDATA[@Stateless
+public class ProductManager {
+
+    @PersistenceContext EntityManager em;
+    @Observable Event<Product> productEvent;
+
+    public void delete(Product product) {
+        em.delete(product);
+        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});
+    }
+    
+    public void persist(Product product) {
+        em.persist(product);
+        productEvent.fire(product, new AnnotationLiteral<Created>(){});
+    }
+    
+    ...
+    
+}]]></programlisting>
+
+  <para>And now <literal>Catalog</literal> can observe the events after successful
+  completion of the transaction:</para>
+  
+  <programlisting role="JAVA"><![CDATA[@ApplicationScoped @Singleton
+public class Catalog {
+
+    ...
+    
+    void addProduct(@AfterTransactionSuccess @Observes @Created Product product) {
+        products.add(product);
+    }
+    
+    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product product) {
+        products.remove(product);
+    }
+    
+}]]></programlisting>
+
+
+</section>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/events.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/example.xml (from rev 759, doc/trunk/reference/en-US/modules/example.xml)
===================================================================
--- doc/trunk/reference/en-US/example.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/example.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,104 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="example">
+  <title>JSF web application example</title>
+
+  <para>Let's illustrate these ideas with a full example. We're going 
+  to implement user login/logout for an application that uses JSF. First, 
+  we'll define a Web Bean to hold the username and password entered during 
+  login:</para>
+
+<programlisting role="JAVA"><![CDATA[@Named @RequestScoped
+public class Credentials {
+	
+    private String username;
+    private String password;
+    
+    public String getUsername() { return username; }
+    public void setUsername(String username) { this.username = username; }
+    
+    public String getPassword() { return password; }
+    public void setPassword(String password) { this.password = password; }
+    
+}]]></programlisting>
+
+  <para>This Web Bean is bound to the login prompt in the following JSF form:</para>
+
+<programlisting role="JAVA"><![CDATA[<h:form>
+    <h:panelGrid columns="2" rendered="#{!login.loggedIn}">
+        <h:outputLabel for="username">Username:</h:outputLabel>
+        <h:inputText id="username" value="#{credentials.username}"/>
+        <h:outputLabel for="password">Password:</h:outputLabel>
+        <h:inputText id="password" value="#{credentials.password}"/>
+    </h:panelGrid>
+    <h:commandButton value="Login" action="#{login.login}" rendered="#{!login.loggedIn}"/>
+    <h:commandButton value="Logout" acion="#{login.logout}" rendered="#{login.loggedIn}"/>
+</h:form>]]></programlisting>
+
+  <para>The actual work is done by a session scoped Web Bean that maintains 
+  information about the currently logged-in user and exposes the <literal>User</literal>
+  entity to other Web Beans:</para>
+
+<programlisting role="JAVA"><![CDATA[@SessionScoped @Named
+public class Login {
+
+    @Current Credentials credentials;
+    @PersistenceContext EntityManager userDatabase;
+
+    private User user;
+    
+    public void login() {
+    	
+        List<User> results = userDatabase.createQuery(
+           "select u from User u where u.username=:username and u.password=:password")
+           .setParameter("username", credentials.getUsername())
+           .setParameter("password", credentials.getPassword())
+           .getResultList();
+        
+        if ( !results.isEmpty() ) {
+           user = results.get(0);
+        }
+        
+    }
+    
+    public void logout() {
+        user = null;
+    }
+    
+    public boolean isLoggedIn() {
+       return user!=null;
+    }
+    
+    @Produces @LoggedIn User getCurrentUser() {
+        return user;
+    }
+
+}]]></programlisting>
+
+  <para>Of course, <literal>@LoggedIn</literal> is a binding annotation:</para>
+
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target({TYPE, METHOD, FIELD})
+ at BindingType
+public @interface LoggedIn {}]]></programlisting>
+
+  <para>Now, any other Web Bean can easily inject the current user:</para>
+
+<programlisting role="JAVA"><![CDATA[public class DocumentEditor {
+
+    @Current Document document;
+    @LoggedIn User currentUser;
+    @PersistenceContext EntityManager docDatabase;
+    
+    public void save() {
+        document.setCreatedBy(currentUser);
+        docDatabase.persist(document);
+    }
+    
+}]]></programlisting>
+
+  <para>Hopefully, this example gives a flavor of the Web Bean programming model.
+  In the next chapter, we'll explore Web Beans dependency injection in greater
+  depth.</para>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/example.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/extend.xml (from rev 759, doc/trunk/reference/en-US/modules/extend.xml)
===================================================================
--- doc/trunk/reference/en-US/extend.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/extend.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,163 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="extend">
+  <title>Extending Web Beans</title>
+  
+  <para>Web Beans is intended to be a platform for frameworks, extensions and 
+  integration with other technologies. Therefore, Web Beans exposes a set of 
+  SPIs for the use of developers of portable extensions to Web Beans. For
+  example, the following kinds of extensions were envisaged by the designers
+  of Web Beans:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>integration with Business Process Management engines,</para>
+    </listitem>
+    <listitem>
+      <para>integration with third-party frameworks such as Spring, 
+      Seam, GWT or Wicket, and</para>
+    </listitem>
+    <listitem>
+      <para>new technology based upon the Web Beans programming model.</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>The nerve center for extending Web Beans is the <literal>Manager</literal>
+  object.</para>
+  
+  <section>
+    <title>The <literal>Manager</literal> object</title>
+    
+    <para>The <literal>Manager</literal> interface lets us register and obtain
+    Web Beans, interceptors, decorators, observers and contexts programatically.</para>
+    
+<programlisting role="JAVA"><![CDATA[public interface Manager
+{
+
+   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... bindings);
+
+   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,
+         Annotation... bindings);
+
+   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);
+
+   public <T> T getInstanceByType(TypeLiteral<T> type,
+         Annotation... bindings);
+
+   public Set<Bean<?>> resolveByName(String name);
+
+   public Object getInstanceByName(String name);
+
+   public <T> T getInstance(Bean<T> bean);
+
+   public void fireEvent(Object event, Annotation... bindings);
+
+   public Context getContext(Class<? extends Annotation> scopeType);
+
+   public Manager addContext(Context context);
+
+   public Manager addBean(Bean<?> bean);
+
+   public Manager addInterceptor(Interceptor interceptor);
+
+   public Manager addDecorator(Decorator decorator);
+
+   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,
+         Annotation... bindings);
+
+   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> eventType,
+         Annotation... bindings);
+
+   public <T> Manager removeObserver(Observer<T> observer, Class<T> eventType,
+         Annotation... bindings);
+
+   public <T> Manager removeObserver(Observer<T> observer,
+         TypeLiteral<T> eventType, Annotation... bindings);
+
+   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings);
+
+   public List<Interceptor> resolveInterceptors(InterceptionType type,
+         Annotation... interceptorBindings);
+
+   public List<Decorator> resolveDecorators(Set<Class<?>> types,
+         Annotation... bindings);
+
+}]]></programlisting>
+
+    <para>We can obtain an instance of <literal>Manager</literal> via injection:</para>
+    
+<programlisting role="JAVA">@Current Manager manager</programlisting>
+    
+  </section>
+  
+  <section>
+    <title>The <literal>Bean</literal> class</title>
+    
+    <para>Instances of the abstract class <literal>Bean</literal> represent
+    Web Beans. There is an instance of <literal>Bean</literal> registered
+    with the <literal>Manager</literal> object for every Web Bean in the
+    application.</para>
+    
+<programlisting role="JAVA">public abstract class Bean&lt;T&gt; {
+    
+    private final Manager manager;
+    
+    protected Bean(Manager manager) {
+        this.manager=manager;
+    }
+    
+    protected Manager getManager() {
+        return manager;
+    }
+    
+    public abstract Set&lt;Class&gt; getTypes();
+    public abstract Set&lt;Annotation&gt; getBindingTypes();
+    public abstract Class&lt;? extends Annotation&gt; getScopeType();
+    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); 
+    public abstract String getName();
+    
+    public abstract boolean isSerializable();
+    public abstract boolean isNullable();
+
+    public abstract T create();
+    public abstract void destroy(T instance);
+    
+}</programlisting>
+
+    <para>It's possible to extend the <literal>Bean</literal> class and
+    register instances by calling <literal>Manager.addBean()</literal> to
+    provide support for new kinds of Web Beans, beyond those defined by the
+    Web Beans specification (simple and enterprise Web Beans, producer 
+    methods and JMS endpoints). For example, we could use the 
+    <literal>Bean</literal> class to allow objects managed by another framework
+    to be injected into Web Beans.</para>
+    
+    <para>There are two subclasses of <literal>Bean</literal> defined by the
+    Web Beans specification: <literal>Interceptor</literal> and
+    <literal>Decorator</literal>.</para>
+    
+  </section>
+
+  <section>
+    <title>The <literal>Context</literal> interface</title>
+    
+    <para>The <literal>Context</literal> interface supports addition of new
+    scopes to Web Beans, or extension of the built-in scopes to new environments.</para>
+    
+<programlisting role="JAVA">public interface Context {
+    
+    public Class&lt;? extends Annotation&gt; getScopeType();
+    
+    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);
+    
+    boolean isActive();
+    
+}</programlisting>
+
+    <para>For example, we might implement <literal>Context</literal> to add a
+    business process scope to Web Beans, or to add support for the conversation
+    scope to an application that uses Wicket.</para>
+    
+  </section>
+  
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/extend.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/injection.xml (from rev 759, doc/trunk/reference/en-US/modules/injection.xml)
===================================================================
--- doc/trunk/reference/en-US/injection.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/injection.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,613 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="injection">
+  <title>Dependency injection</title>
+
+<para>Web Beans supports three primary mechanisms for dependency injection:</para>
+
+<para>Constructor parameter injection:</para>
+
+<programlisting role="JAVA"><![CDATA[public class Checkout {
+        
+    private final ShoppingCart cart;
+    
+    @Initializer
+    public Checkout(ShoppingCart cart) {
+        this.cart = cart;
+    }
+
+}]]></programlisting>
+
+<para><emphasis>Initializer</emphasis> method parameter injection:</para>
+
+<programlisting role="JAVA"><![CDATA[public class Checkout {
+        
+    private ShoppingCart cart;
+
+    @Initializer 
+    void setShoppingCart(ShoppingCart cart) {
+        this.cart = cart;
+    }
+    
+}]]></programlisting>
+
+<para>And direct field injection:</para>
+
+<programlisting role="JAVA"><![CDATA[public class Checkout {
+
+    private @Current ShoppingCart cart;
+    
+}]]></programlisting>
+
+<para>Dependency injection always occurs when the Web Bean instance is first 
+instantiated.</para>
+
+<itemizedlist>
+  <listitem>
+    <para>First, the Web Bean manager calls the Web Bean constructor, to
+    obtain an instance of the Web Bean.</para>
+  </listitem>
+  <listitem>
+    <para>Next, the Web Bean manager initializes the values of all injected
+    fields of the Web Bean.</para>
+  </listitem>
+  <listitem>
+    <para>Next, the Web Bean manager calls all initializer methods of Web 
+    Bean.</para>
+  </listitem>
+  <listitem>
+    <para>Finally, the <literal>@PostConstruct</literal> method of the Web 
+    Bean, if any, is called.</para>
+  </listitem>
+</itemizedlist>
+
+<para>Constructor parameter injection is not supported for EJB beans, since
+the EJB is instantiated by the EJB container, not the Web Bean manager.</para>
+
+<para>Parameters of constructors and initializer methods need not be explicitly
+annotated when the default binding type <literal>@Current</literal> applies. 
+Injected fields, however, <emphasis>must</emphasis> specify a binding type, even 
+when the default binding type applies. If the field does not specify a binding
+type, it will not be injected.</para>
+
+<para>Producer methods also support parameter injection:</para>
+
+<programlisting role="JAVA"><![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {
+    return new Checkout(cart);
+}]]></programlisting>
+
+<para>Finally, observer methods (which we'll meet in <xref linkend="events"/>), 
+disposal methods and destructor methods all support parameter injection.</para>
+
+<para>The Web Beans specification defines a procedure, called the <emphasis>typesafe
+resolution algorithm</emphasis>, that the Web Bean manager follows when identifying 
+the Web Bean to inject to an injection point. This algorithm looks complex at first, 
+but once you understand it, it's really quite intuitive. Typesafe resolution is 
+performed at system initialization time, which means that the manager will inform 
+the user immediately if a Web Bean's dependencies cannot be satisfied, by throwing
+a <literal>UnsatisfiedDependencyException</literal> or 
+<literal>AmbiguousDependencyException</literal>.</para>
+
+<para>The purpose of this algorithm is to allow multiple Web Beans to implement the
+same API type and either:</para>
+
+<itemizedlist>
+  <listitem>
+    <para>allow the client to select which implementation it requires using 
+    <emphasis>binding annotations</emphasis>,
+    </para>
+  </listitem>
+  <listitem>
+    <para>allow the application deployer to select which implementation is appropriate 
+    for a particular deployment, without changes to the client, by enabling or 
+    disabling <emphasis>deployment types</emphasis>, or</para>
+  </listitem>
+  <listitem>
+    <para>allow one implementation of an API to override another implementation of 
+    the same API at deployment time, without changes to the client, using 
+    <emphasis>deployment type precedence</emphasis>.</para>
+  </listitem>
+</itemizedlist>
+
+<para>Let's explore how the Web Beans manager determines a Web Bean to be injected.</para>
+
+<section>
+  <title>Binding annotations</title>
+
+<para>If we have more than one Web Bean that implements a particular API type, the 
+injection point can specify exactly which Web Bean should be injected using a binding 
+annotation. For example, there might be two implementations of 
+<literal>PaymentProcessor</literal>:</para>
+
+<programlisting role="JAVA"><![CDATA[@PayByCheque
+public class ChequePaymentProcessor implements PaymentProcessor {
+    public void process(Payment payment) { ... }
+}]]></programlisting>      
+
+<programlisting role="JAVA"><![CDATA[@PayByCreditCard
+public class CreditCardPaymentProcessor implements PaymentProcessor {
+    public void process(Payment payment) { ... }
+}]]></programlisting>
+
+<para>Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</literal> 
+are binding annotations:</para>
+
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target({TYPE, METHOD, FIELD, PARAMETER})
+ at BindingType
+public @interface PayByCheque {}]]></programlisting>
+
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target({TYPE, METHOD, FIELD, PARAMETER})
+ at BindingType
+public @interface PayByCreditCard {}]]></programlisting>
+
+<para>A client Web Bean developer uses the binding annotation to specify exactly which 
+Web Bean should be injected.</para>
+
+<para>Using field injection:</para>
+
+<programlisting role="JAVA"><![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;
+ at PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]></programlisting>
+
+<para>Using initializer method injection:</para>
+
+<programlisting role="JAVA"><![CDATA[@Initializer
+public void setPaymentProcessors(@PayByCheque PaymentProcessor chequePaymentProcessor, 
+                                 @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {
+   this.chequePaymentProcessor = chequePaymentProcessor;
+   this.creditCardPaymentProcessor = creditCardPaymentProcessor;
+}]]></programlisting>
+
+<para>Or using constructor injection:</para>
+
+<programlisting role="JAVA"><![CDATA[@Initializer
+public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, 
+                @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {
+   this.chequePaymentProcessor = chequePaymentProcessor;
+   this.creditCardPaymentProcessor = creditCardPaymentProcessor;
+}]]></programlisting>
+
+<section>
+  <title>Binding annotations with members</title>
+
+  <para>Binding annotations may have members:</para>
+
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target({TYPE, METHOD, FIELD, PARAMETER})
+ at BindingType
+public @interface PayBy {
+    PaymentType value();
+}]]></programlisting>
+
+  <para>In which case, the member value is significant:</para>
+
+<programlisting role="JAVA"><![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;
+ at PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]></programlisting>
+
+  <para>You can tell the Web Bean manager to ignore a member of a binding annotation
+  type by annotating the member <literal>@NonBinding</literal>.</para>
+
+</section>
+
+<section>
+  <title>Combinations of binding annnotations</title>
+
+  <para>An injection point may even specify multiple binding annotations:</para>
+
+<programlisting role="JAVA"><![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]></programlisting>
+
+  <para>In this case, only a Web Bean which has <emphasis>both</emphasis> binding 
+  annotations would be eligible for injection.</para>
+
+</section>
+
+<section>
+  <title>Binding annotations and producer methods</title>
+
+<para>Even producer methods may specify binding annotations:</para>
+
+<programlisting role="JAVA"><![CDATA[@Produces 
+ at Asynchronous @PayByCheque 
+PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor processor) {
+    return new AsynchronousPaymentProcessor(processor);
+}]]></programlisting>
+
+</section>
+
+<section>
+  <title>The default binding type</title>
+  
+  <para>Web Beans defines a binding type <literal>@Current</literal> that is the 
+  default binding type for any injection point or Web Bean that does not explicitly
+  specify a binding type.</para>
+  
+  <para>There are two common circumstances in which it is necessary to explicitly 
+  specify <literal>@Current</literal>:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>on a field, in order to declare it as an injected field with the
+      default binding type, and</para>
+    </listitem>
+    <listitem>
+      <para>on a Web Bean which has another binding type in addition to the
+      default binding type.</para>
+    </listitem>
+  </itemizedlist>
+  
+</section>
+  
+</section>
+
+<section id="deploymenttypes">
+  <title>Deployment types</title>
+
+  <para>All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment 
+  type identifies a set of Web Beans that should be conditionally installed in some 
+  deployments of the system.</para>
+
+  <para>For example, we could define a deployment type named <literal>@Mock</literal>, 
+  which would identify Web Beans that should only be installed when the system executes
+  inside an integration testing environment:</para>
+
+  <programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+  @Target({TYPE, METHOD})
+  @DeploymentType
+  public @interface Mock {}]]></programlisting>
+
+  <para>Suppose we had some Web Bean that interacted with an external system to
+  process payments:</para>
+
+<programlisting role="JAVA"><![CDATA[public class ExternalPaymentProcessor {
+        
+    public void process(Payment p) {
+        ...
+    }
+    
+}]]></programlisting>
+
+  <para>Since this Web Bean does not explicitly specify a deployment type, it has the
+  default deployment type <literal>@Production</literal>.</para>
+
+  <para>For integration or unit testing, the external system is slow or unavailable.
+  So we would create a mock object:</para>
+
+<programlisting role="JAVA"><![CDATA[@Mock 
+public class MockPaymentProcessor implements PaymentProcessor {
+
+    @Override
+    public void process(Payment p) {
+        p.setSuccessful(true);
+    }
+
+}]]></programlisting>
+
+  <para>But how does the Web Bean manager determine which implementation to use in
+  a particular deployment?</para>
+
+<section>
+  <title>Enabling deployment types</title>
+
+  <para>Web Beans defines two built-in deployment types: <literal>@Production</literal> 
+  and <literal>@Standard</literal>. By default, only Web Beans with the built-in deployment 
+  types are enabled when the system is deployed. We can identify additional deployment 
+  types to be enabled in a particular deployment by listing them in 
+  <literal>web-beans.xml</literal>.</para>
+
+  <para>Going back to our example, when we deploy our integration tests, we want all 
+  our <literal>@Mock</literal> objects to be installed:</para>
+
+<programlisting role="XML"><![CDATA[<WebBeans>
+    <Deploy>
+        <Standard/>
+        <Production/>
+        <test:Mock/>
+    </Deploy>
+</WebBeans>]]></programlisting>
+
+  <para>Now the Web Bean manager will identify and install all Web Beans annotated
+  <literal>@Production</literal>, <literal>@Standard</literal> or <literal>@Mock</literal> 
+  at deployment time.</para>
+  
+  <para>The deployment type <literal>@Standard</literal> is used only for certain
+  special Web Beans defined by the Web Beans specification. We can't use it for
+  our own Web Beans, and we can't disable it.</para>
+  
+  <para>The deployment type <literal>@Production</literal> is the default deployment
+  type for Web Beans which don't explicitly declare a deployment type, and may be
+  disabled.</para>
+  
+</section>
+
+<section>
+  <title>Deployment type precedence</title>
+
+<para>If you've been paying attention, you're probably wondering how the Web Bean 
+manager decides which implementation&#151;<literal>ExternalPaymentProcessor</literal> 
+or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider what happens when 
+the manager encounters this injection point:</para>
+
+<programlisting role="JAVA"><![CDATA[@Current PaymentProcessor paymentProcessor]]></programlisting>
+
+<para>There are now two Web Beans which satisfy the <literal>PaymentProcessor</literal> 
+contract. Of course, we can't use a binding annotation to disambiguate, since binding 
+annotations are hard-coded into the source at the injection point, and we want the 
+manager to be able to decide at deployment time!</para>
+
+<para>The solution to this problem is that each deployment type has a different
+<emphasis>precedence</emphasis>. The precedence of the deployment types is determined 
+by the order in which they appear in <literal>web-beans.xml</literal>. In our example, 
+<literal>@Mock</literal> appears later than <literal>@Production</literal> so it 
+has a higher precedence.</para>
+
+<para>Whenever the manager discovers that more than one Web Bean could satisfy the 
+contract (API type plus binding annotations) specified by an injection point, it 
+considers the relative precedence of the Web Beans. If one has a higher precedence 
+than the others, it chooses the higher precedence Web Bean to inject. So, in our example, 
+the Web Bean manager will inject <literal>MockPaymentProcessor</literal> when executing 
+in our integration testing environment (which is exactly what we want).</para>
+
+<para>It's interesting to compare this facility to today's popular manager 
+architectures. Various "lightweight" containers also allow conditional deployment 
+of classes that exist in the classpath, but the classes that are to be deployed 
+must be explicity, individually, listed in configuration code or in some XML 
+configuration file. Web Beans does support Web Bean definition and configuration 
+via XML, but in the common case where no complex configuration is required, deployment 
+types allow a whole set of Web Beans to be enabled with a single line of XML.
+Meanwhile, a developer browsing the code can easily identify what deployment
+scenarios the Web Bean will be used in.</para>
+
+</section>
+
+<section>
+  <title>Example deployment types</title>
+
+<para>Deployment types are useful for all kinds of things, here's some examples:</para>
+
+<itemizedlist>
+  <listitem>
+    <para><literal>@Mock</literal> and <literal>@Staging</literal> deployment types 
+    for testing</para>
+  </listitem>
+  <listitem>
+    <para><literal>@AustralianTaxLaw</literal> for site-specific Web Beans</para>
+  </listitem>
+  <listitem>
+    <para><literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party 
+    frameworks which build on Web Beans</para>
+  </listitem>
+  <listitem>
+    <para><literal>@Standard</literal> for standard Web Beans defined by the Web Beans 
+    specification</para>
+  </listitem>
+</itemizedlist>
+
+<para>I'm sure you can think of more applications...</para>
+
+</section>
+
+</section>
+
+<section>
+  <title>Fixing unsatisfied dependencies</title>
+  
+  <para>The typesafe resolution algorithm fails when, after considering the binding 
+  annotations and and deployment types of all Web Beans that implement the API type
+  of an injection point, the Web Bean manager is unable to identify exactly one
+  Web Bean to inject.</para>
+  
+  <para>It's usually easy to fix an <literal>UnsatisfiedDependencyException</literal> or 
+  <literal>AmbiguousDependencyException</literal>.</para>
+  
+  <para>To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide 
+  a Web Bean which implements the API type and has the binding types of the injection
+  point&#151;or enable the deployment type of a Web Bean that already implements the 
+  API type and has the binding types.</para>
+  
+  <para>To fix an <literal>AmbiguousDependencyException</literal>, introduce a 
+  binding type to distinguish between the two implementations of the API type,
+  or change the deployment type of one of the implementations so that the Web
+  Bean manager can use deployment type precedence to choose between them. An
+  <literal>AmbiguousDependencyException</literal> can only occur if two Web Beans
+  share a binding type and have exactly the same deployment type.</para>
+  
+  <para>There's one more issue you need to be aware of when using dependency injection
+  in Web Beans.</para>
+
+</section>
+
+<section>
+  <title>Client proxies</title>
+  
+  <para>Clients of an injected Web Bean do not usually hold a direct reference to
+  a Web Bean instance.</para> 
+  
+  <para>Imagine that a Web Bean bound to the application scope held a direct reference 
+  to a Web Bean bound to the request scope. The application scoped Web Bean is shared 
+  between many different requests. However, each request should see a different instance
+  of the request scoped Web bean!</para>
+  
+  <para>Now imagine that a Web Bean bound to the session scope held a direct reference
+  to a Web Bean bound to the application scope. From time to time, the session context
+  is serialized to disk in order to use memory more efficiently. However, the application
+  scoped Web Bean instance should not be serialized along with the session scoped Web
+  Bean!</para>
+  
+  <para>Therefore, unless a Web Bean has the default scope <literal>@Dependent</literal>, 
+  the Web Bean manager must indirect all injected references to the Web Bean through a 
+  proxy object. This <emphasis>client proxy</emphasis> is responsible for ensuring that 
+  the Web Bean instance that receives a method invocation is the instance that is
+  associated with the current context. The client proxy also allows Web Beans bound
+  to contexts such as the session context to be serialized to disk without recursively
+  serializing other injected Web Beans.</para>
+  
+  <para>Unfortunately, due to limitations of the Java language, some Java types cannot
+  be proxied by the Web Bean manager. Therefore, the Web Bean manager throws an
+  <literal>UnproxyableDependencyException</literal> if the type of an injection point
+  cannot be proxied.</para>
+  
+  <para>The following Java types cannot be proxied by the Web Bean manager:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>classes which are declared <literal>final</literal> or have a 
+      <literal>final</literal> method,</para>
+    </listitem>
+    <listitem>
+      <para>classes which have no non-private constructor with no parameters, and</para>
+    </listitem>
+    <listitem>
+      <para>arrays and primitive types.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>It's usually very easy to fix an <literal>UnproxyableDependencyException</literal>.
+  Simply add a constructor with no parameters to the injected class, introduce an interface, 
+  or change the scope of the injected Web Bean to <literal>@Dependent</literal>.</para>
+  
+</section>
+
+<section>
+  <title>Obtaining a Web Bean by programatic lookup</title>
+  
+  <para>The application may obtain an instance of the interface <literal>Manager</literal>
+  by injection:</para>
+  
+  <programlisting role="JAVA"><![CDATA[@Current Manager manager;]]></programlisting>
+  
+  <para>The <literal>Manager</literal> object provides a set of methods for obtaining a
+  Web Bean instance programatically.</para>
+  
+  <programlisting role="JAVA"><![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class);]]></programlisting>
+  
+  <para>Binding annotations may be specified by subclassing the helper class 
+  <literal>AnnotationLiteral</literal>, since it is otherwise difficult to instantiate an
+  annotation type in Java.</para>
+  
+  <programlisting role="JAVA"><![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, 
+                                               new AnnotationLiteral<CreditCard>(){});]]></programlisting>
+  
+  <para>If the binding type has an annotation member, we can't use an anonymous subclass of 
+  <literal>AnnotationLiteral</literal>&#151;instead we'll need to create a named subclass:</para>
+  
+<programlisting role="JAVA"><![CDATA[abstract class CreditCardBinding 
+    extends AnnotationLiteral<CreditCard> 
+    implements CreditCard {}]]></programlisting>
+
+<programlisting role="JAVA"><![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, 
+                                               new CreditCardBinding() { 
+                                                   public void value() { return paymentType; } 
+                                               } );]]></programlisting>
+</section>
+
+<section>
+  <title>Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> and
+  <literal>@PersistenceContext</literal></title>
+  
+  <para>Enterprise Web Beans support all the lifecycle callbacks defined by the EJB
+  specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>,
+  <literal>@PrePassivate</literal> and <literal>@PostActivate</literal>.</para>
+  
+  <para>Simple Web Beans support only the <literal>@PostConstruct</literal> and 
+  <literal>@PreDestroy</literal> callbacks.</para>
+  
+  <para>Both enterprise and simple Web Beans support the use of <literal>@Resource</literal>, 
+  <literal>@EJB</literal> and <literal>@PersistenceContext</literal> for injection of Java
+  EE resources, EJBs and JPA persistence contexts, respectively. Simple Web Beans do not 
+  support the use of <literal>@PersistenceContext(type=EXTENDED)</literal>.</para>
+  
+  <para>The <literal>@PostConstruct</literal> callback always occurs after all dependencies
+  have been injected.</para>
+  
+</section>
+
+<section>
+  <title>The <literal>InjectionPoint</literal> object</title>
+  
+  <para>There are certain kinds of dependent objects&#151;Web Beans with scope 
+  <literal>@Dependent</literal>&#151;that need to know something about the object or injection 
+  point into which they are injected in order to be able to do what they do. For example:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>The log category for a <literal>Logger</literal> depends upon the class of the object 
+      that owns it.</para>
+    </listitem>
+    <listitem>
+      <para>Injection of a HTTP parameter or header value depends upon what parameter 
+      or header name was specified at the injection point.</para>
+    </listitem>
+    <listitem>
+      <para>Injection of the result of an EL expression evaluation depends upon the 
+      expression that was specified at the injection point.</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>A Web Bean with scope <literal>@Dependent</literal> may inject an instance of 
+  <literal>InjectionPoint</literal> and access metadata relating to the injection point to which 
+  it belongs.</para>
+
+  <para>Let's look at an example. The following code is verbose, and vulnerable to refactoring
+  problems:</para>
+
+<programlisting role="JAVA"><![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]></programlisting>
+
+  <para>This clever little producer method lets you inject a JDK <literal>Logger</literal> without 
+  explicitly specifying the log category:</para>
+
+<programlisting role="JAVA"><![CDATA[class LogFactory {
+
+   @Produces Logger createLogger(InjectionPoint injectionPoint) { 
+      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName()); 
+   }
+
+}]]></programlisting>
+
+  <para>We can now write:</para>
+
+<programlisting role="JAVA"><![CDATA[@Current Logger log;]]></programlisting>
+
+  <para>Not convinced? Then here's a second example. To inject HTTP parameters, we need to define 
+  a binding type:</para>
+
+<programlisting role="JAVA"><![CDATA[@BindingType
+ at Retention(RUNTIME)
+ at Target({TYPE, METHOD, FIELD, PARAMETER})
+public @interface HttpParam {
+   @NonBinding public String value();
+}]]></programlisting>
+
+  <para>We would use this binding type at injection points as follows:</para>
+
+<programlisting role="JAVA"><![CDATA[@HttpParam("username") String username;
+ at HttpParam("password") String password;]]></programlisting>
+
+  <para>The following producer method does the work:</para>
+
+<programlisting role="JAVA"><![CDATA[class HttpParams
+
+   @Produces @HttpParam("")
+   String getParamValue(ServletRequest request, InjectionPoint ip) {
+      return request.getParameter(ip.getAnnotation(HttpParam.class).value());
+   }
+
+}]]></programlisting>
+
+  <para>(Note that the <literal>value()</literal> member of the <literal>HttpParam</literal>
+  annotation is ignored by the Web Bean manager since it is annotated <literal>@NonBinding.</literal>)</para>
+
+<para>The Web Bean manager provides a built-in Web Bean that implements the
+<literal>InjectionPoint</literal> interface:</para>
+
+<programlisting role="JAVA"><![CDATA[public interface InjectionPoint { 
+   public Object getInstance(); 
+   public Bean<?> getBean(); 
+   public Member getMember(): 
+   public <T extends Annotation> T getAnnotation(Class<T> annotation); 
+   public Set<T extends Annotation> getAnnotations(); 
+}]]></programlisting>
+
+</section>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/injection.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/interceptors.xml (from rev 759, doc/trunk/reference/en-US/modules/interceptors.xml)
===================================================================
--- doc/trunk/reference/en-US/interceptors.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/interceptors.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,280 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="interceptors">
+  <title>Interceptors</title>
+
+<para>Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending 
+the functionality in two directions:</para>
+
+<itemizedlist>
+  <listitem>
+    <para>Any Web Bean may have interceptors, not just session beans.</para>
+  </listitem>
+  <listitem>
+    <para>Web Beans features a more sophisticated annotation-based approach 
+    to binding interceptors to Web Beans.</para>
+  </listitem>
+</itemizedlist>
+
+<!--section>
+  <title>Method and lifecycle callback interceptors</title-->
+  
+  <para>The EJB specification defines two kinds of interception points:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>business method interception, and</para>
+    </listitem>
+    <listitem>
+      <para>lifecycle callback interception.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>A <emphasis>business method interceptor</emphasis> applies to 
+  invocations of methods of the Web Bean by clients of the Web Bean:</para>
+  
+<programlisting role="JAVA"><![CDATA[public class TransactionInterceptor {
+    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }
+}]]></programlisting>
+  
+  <para>A <emphasis>lifecycle callback interceptor</emphasis> applies to
+  invocations of lifecycle callbacks by the container:</para>
+  
+<programlisting role="JAVA"><![CDATA[public class DependencyInjectionInterceptor {
+    @PostConstruct public void injectDependencies(InvocationContext ctx) { ... }
+}]]></programlisting>
+
+  <para>An interceptor class may intercept both lifecycle callbacks and 
+  business methods.</para>
+  
+<!--/section-->
+
+<section>
+  <title>Interceptor bindings</title>
+
+  <para>Suppose we want to declare that some of our Web Beans are transactional. 
+  The first thing we need is an <emphasis>interceptor binding annotation</emphasis> 
+  to specify exactly which Web Beans we're interested in:</para>
+
+<programlisting role="JAVA"><![CDATA[@InterceptorBindingType
+ at Target({METHOD, TYPE})
+ at Retention(RUNTIME)
+public @interface Transactional {}]]></programlisting>
+
+  <para>Now we can easily specify that our <literal>ShoppingCart</literal> is a 
+  transactional object:</para>
+
+<programlisting role="JAVA"><![CDATA[@Transactional
+public class ShoppingCart { ... }]]></programlisting>
+
+  <para>Or, if we prefer, we can specify that just one method is transactional:</para>
+
+<programlisting role="JAVA"><![CDATA[public class ShoppingCart {
+    @Transactional public void checkout() { ... }
+}]]></programlisting>
+
+</section>
+
+<section>
+  <title>Implementing interceptors</title>
+
+  <para>That's great, but somewhere along the line we're going to have to actually 
+  implement the interceptor that provides this transaction management aspect. All 
+  we need to do is create a standard EJB interceptor, and annotate it 
+  <literal>@Interceptor</literal> and <literal>@Transactional</literal>.</para>
+
+<programlisting role="JAVA"><![CDATA[@Transactional @Interceptor
+public class TransactionInterceptor {
+    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }
+}]]></programlisting>
+
+  <para>All Web Beans interceptors are simple Web Beans, and can take advantage
+  of dependency injection and contextual lifecycle management.</para>
+
+<programlisting role="JAVA"><![CDATA[@ApplicationScoped @Transactional @Interceptor
+public class TransactionInterceptor {
+
+    @Resource Transaction transaction;
+
+    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }
+    
+}]]></programlisting>
+
+  <para>Multiple interceptors may use the same interceptor binding type.</para>
+
+</section>
+
+<section>
+  <title>Enabling interceptors</title>
+
+  <para>Finally, we need to <emphasis>enable</emphasis> our interceptor in 
+  <literal>web-beans.xml</literal>.</para>
+
+<programlisting role="XML"><![CDATA[<Interceptors>
+    <tx:TransactionInterceptor/>
+</Interceptors>]]></programlisting>
+
+  <para>Whoah! Why the angle bracket stew?</para> 
+
+  <para>Well, the XML declaration solves two problems:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>it enables us to specify a total ordering for all the interceptors 
+      in our system, ensuring deterministic behavior, and</para>
+    </listitem>
+    <listitem>
+      <para>it lets us enable or disable interceptor classes at deployment time.</para>
+    </listitem>
+  </itemizedlist> 
+
+  <para>For example, we could specify that our security interceptor runs before our 
+  <literal>TransactionInterceptor</literal>.</para>
+
+<programlisting role="XML"><![CDATA[<Interceptors>
+    <sx:SecurityInterceptor/>
+    <tx:TransactionInterceptor/>
+</Interceptors>]]></programlisting>
+
+<para>Or we could turn them both off in our test environment!</para>
+
+  </section>
+
+<section>
+  <title>Interceptor bindings with members</title>
+
+  <para>Suppose we want to add some extra information to our <literal>@Transactional</literal> 
+  annotation:</para>
+
+<programlisting role="JAVA"><![CDATA[@InterceptorBindingType
+ at Target({METHOD, TYPE})
+ at Retention(RUNTIME)
+public @interface Transactional {
+    boolean requiresNew() default false;
+}]]></programlisting>
+
+  <para>Web Beans will use the value of <literal>requiresNew</literal> to choose between 
+  two different interceptors, <literal>TransactionInterceptor</literal> and 
+  <literal>RequiresNewTransactionInterceptor</literal>.</para>
+
+<programlisting role="JAVA"><![CDATA[@Transactional(requiresNew=true) @Interceptor
+public class RequiresNewTransactionInterceptor {
+    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }
+}]]></programlisting>
+
+  <para>Now we can use <literal>RequiresNewTransactionInterceptor</literal> like this:</para>
+
+<programlisting role="JAVA"><![CDATA[@Transactional(requiresNew=true)
+public class ShoppingCart { ... }]]></programlisting>
+
+  <para>But what if we only have one interceptor and we want the manager to ignore the 
+  value of <literal>requiresNew</literal> when binding interceptors? We can use the 
+  <literal>@NonBinding</literal> annotation:</para>
+
+<programlisting role="JAVA"><![CDATA[@InterceptorBindingType
+ at Target({METHOD, TYPE})
+ at Retention(RUNTIME)
+public @interface Secure {
+    @NonBinding String[] rolesAllowed() default {};
+}]]></programlisting>
+
+</section>
+
+<section>
+  <title>Multiple interceptor binding annotations</title>
+
+  <para>Usually we use combinations of interceptor bindings types to bind multiple 
+  interceptors to a Web Bean. For example, the following declaration would be used 
+  to bind <literal>TransactionInterceptor</literal> and 
+  <literal>SecurityInterceptor</literal> to the same Web Bean:</para>
+
+<programlisting role="JAVA"><![CDATA[@Secure(rolesAllowed="admin") @Transactional
+public class ShoppingCart { ... }]]></programlisting>
+
+  <para>However, in very complex cases, an interceptor itself may specify some 
+  combination of interceptor binding types:</para>
+
+<programlisting role="JAVA"><![CDATA[@Transactional @Secure @Interceptor
+public class TransactionalSecureInterceptor { ... }]]></programlisting>
+
+  <para>Then this interceptor could be bound to the <literal>checkout()</literal> 
+  method using any one of the following combinations:</para>
+
+<programlisting role="JAVA"><![CDATA[public class ShoppingCart {
+    @Transactional @Secure public void checkout() { ... }
+}]]></programlisting>
+
+<programlisting role="JAVA"><![CDATA[@Secure
+public class ShoppingCart {
+    @Transactional public void checkout() { ... }
+}]]></programlisting>
+
+<programlisting role="JAVA"><![CDATA[@Transactionl
+public class ShoppingCart {
+    @Secure public void checkout() { ... }
+}]]></programlisting>
+
+<programlisting role="JAVA"><![CDATA[@Transactional @Secure
+public class ShoppingCart {
+    public void checkout() { ... }
+}]]></programlisting>
+
+</section>
+
+<section>
+  <title>Interceptor binding type inheritance</title>
+  
+  <para>One limitation of the Java language support for annotations is the lack 
+  of annotation inheritance. Really, annotations should have reuse built in, to 
+  allow this kind of thing to work:</para>
+
+<programlisting role="JAVA"><![CDATA[public @interface Action extends Transactional, Secure { ... }]]></programlisting>
+
+  <para>Well, fortunately, Web Beans works around this missing feature of Java.
+  We may annotate one interceptor binding type with other interceptor binding
+  types. The interceptor bindings are transitive&#151;any Web Bean with the first
+  interceptor binding inherits the interceptor bindings declared as meta-annotations.</para>
+
+<programlisting role="JAVA"><![CDATA[@Transactional @Secure
+ at InterceptorBindingType
+ at Target(TYPE)
+ at Retention(RUNTIME)
+public @interface Action { ... }]]></programlisting>
+
+  <para>Any Web Bean annotated <literal>@Action</literal> will be bound to both 
+  <literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</literal>. 
+  (And even <literal>TransactionalSecureInterceptor</literal>, if it exists.)</para>
+
+</section>
+
+<section>
+  <title>Use of <literal>@Interceptors</literal></title>
+  
+  <para>The <literal>@Interceptors</literal> annotation defined by the EJB specification
+  is supported for both enterprise and simple Web Beans, for example:</para>
+  
+<programlisting role="JAVA"><![CDATA[@Interceptors({TransactionInterceptor.class, SecurityInterceptor.class})
+public class ShoppingCart {
+    public void checkout() { ... }
+}]]></programlisting>
+
+  <para>However, this approach suffers the following drawbacks:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>the interceptor implementation is hardcoded in business code,</para>
+    </listitem>
+    <listitem>
+      <para>interceptors may not be easily disabled at deployment time, and</para>
+    </listitem>
+    <listitem>
+      <para>the interceptor ordering is non-global&#151;it is determined 
+      by the order in which interceptors are listed at the class level.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>Therefore, we recommend the use of Web Beans-style interceptor bindings.</para>
+  
+</section>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/interceptors.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/intro.xml (from rev 759, doc/trunk/reference/en-US/modules/intro.xml)
===================================================================
--- doc/trunk/reference/en-US/intro.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/intro.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,538 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="intro">
+  <title>Getting started with Web Beans</title>
+  
+  <para>So you're already keen to get started writing your first Web Bean?
+  Or perhaps you're skeptical, wondering what kinds of hoops the Web Beans
+  specification will make you jump through! The good news is that you've
+  probably already written and used hundreds, perhaps thousands of Web Beans.
+  You might not even remember the first Web Bean you wrote.</para>
+      
+  <section>
+    <title>Your first Web Bean</title>
+    
+    <para>With certain, very special exceptions, every Java class with a 
+    constructor that accepts no parameters is a Web Bean. That includes every 
+    JavaBean. Furthermore, every EJB 3-style session bean is a Web Bean. Sure, 
+    the JavaBeans and EJBs you've been writing every day have not been able to 
+    take advantage of the new services defined by the Web Beans specification, 
+    but you'll be able to use every one of them as Web Beans&#151;injecting them 
+    into other Web Beans, configuring them via the Web Beans XML configuration 
+    facility, even adding interceptors and decorators to them&#151;without 
+    touching your existing code.</para>
+    
+    <para>Suppose that we have two existing Java classes, that we've been using
+    for years in various applications. The first class parses a string into a 
+    list of sentences:</para>
+    
+    <programlisting role="JAVA"><![CDATA[public class SentenceParser {
+    public List<String> parse(String text) { ... }
+}]]></programlisting>
+
+    <para>The second existing class is a stateless session bean front-end for an
+    external system that is able to translate sentences from one language to 
+    another:</para>
+    
+    <programlisting role="JAVA"><![CDATA[@Stateless
+public class SentenceTranslator implements Translator {
+    public String translate(String sentence) { ... }
+}]]></programlisting>
+
+    <para>Where <literal>Translator</literal> is the local interface:</para>
+    
+    <programlisting role="JAVA"><![CDATA[@Local
+public interface Translator {
+    public String translate(String sentence);
+}]]></programlisting>
+
+    <para>Unfortunately, we don't have a preexisting class that translates whole
+    text documents. So let's write a Web Bean that does this job:</para>
+    
+    <programlisting role="JAVA"><![CDATA[public class TextTranslator {
+    
+    private SentenceParser sentenceParser;
+    private Translator sentenceTranslator;
+    
+    @Initializer
+    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {
+        this.sentenceParser = sentenceParser;
+        this.sentenceTranslator = sentenceTranslator;
+    }
+    
+    public String translate(String text) {
+        StringBuilder sb = new StringBuilder();
+        for (String sentence: sentenceParser.parse(text)) {
+            sb.append(sentenceTranslator.translate(sentence));
+        }
+        return sb.toString();
+    }
+    
+}]]></programlisting>
+
+    <para>We may obtain an instance of <literal>TextTranslator</literal> by 
+    injecting it into a Web Bean, Servlet or EJB:</para>
+    
+    <programlisting role="JAVA"><![CDATA[@Initializer
+public setTextTranslator(TextTranslator textTranslator) {
+    this.textTranslator = textTranslator;
+}]]></programlisting>
+
+    <para>Alternatively, we may obtain an instance by directly calling a method 
+    of the Web Bean manager:</para>
+
+    <programlisting role="JAVA"><![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]></programlisting>
+    
+    <para>But wait: <literal>TextTranslator</literal> does not have a constructor
+    with no parameters! Is it still a Web Bean? Well, a class that does not have a 
+    constructor with no parameters can still be a Web Bean if it has a constructor
+    annotated <literal>@Initializer</literal>.</para>
+        
+    <para>As you've guessed, the <literal>@Initializer</literal> annotation has
+    something to do with dependency injection! <literal>@Initializer</literal>
+    may be applied to a constructor or method of a Web Bean, and tells the
+    Web Bean manager to call that constructor or method when instantiating the
+    Web Bean. The Web Bean manager will inject other Web Beans to the parameters
+    of the constructor or method.</para>
+    
+    <para>At system initialization time, the Web Bean manager must validate that 
+    exactly one Web Bean exists which satisfies each injection point. In our example,
+    if no implementation of <literal>Translator</literal> available&#151;if the
+    <literal>SentenceTranslator</literal> EJB was not deployed&#151;the Web Bean
+    manager would throw an <literal>UnsatisfiedDependencyException</literal>. If
+    more than one implementation of <literal>Translator</literal> was available,
+    the Web Bean manager would throw an 
+    <literal>AmbiguousDependencyException</literal>.</para>
+    
+  </section>
+  
+<section>
+  <title>What is a Web Bean?</title>
+
+  <para>So what, <emphasis>exactly</emphasis>, is a Web Bean?</para>
+
+  <para>A Web Bean is an application class that contains business logic. A Web 
+  Bean may be called directly from Java code, or it may be invoked via Unified EL.
+  A Web Bean may access transactional resources. Dependencies between Web Beans 
+  are managed automatically by the Web Bean manager. Most Web Beans are 
+  <emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The lifecycle 
+  of a Web Bean is always managed by the Web Bean manager.</para>
+
+  <para>Let's back up a second. What does it really mean to be "contextual"? Since 
+  Web Beans may be stateful, it matters <emphasis>which</emphasis> bean instance I 
+  have. Unlike a stateless component model (for example, stateless session beans) 
+  or a singleton component model (such as servlets, or singleton beans), different 
+  clients of a Web Bean see the Web Bean in different states. The client-visible 
+  state depends upon which instance of the Web Bean the client has a reference to.</para> 
+
+  <para>However, like a stateless or singleton model, but <emphasis>unlike</emphasis> 
+  stateful session beans, the client does not control the lifecycle of the instance 
+  by explicitly creating and destroying it. Instead, the <emphasis>scope</emphasis> 
+  of the Web Bean determines:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>the lifecycle of each instance of the Web Bean and</para>
+    </listitem>
+    <listitem>
+      <para>which clients share a reference to a particular instance of the Web 
+      Bean.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>For a given thread in a Web Beans application, there may be an 
+  <emphasis>active context</emphasis> associated with the scope of the Web Bean. 
+  This context may be unique to the thread (for example, if the Web Bean is request
+  scoped), or it may be shared with certain other threads (for example, if the Web
+  Bean is session scoped) or even all other threads (if it is application scoped).</para>
+
+  <para>Clients (for example, other Web Beans) executing in the same context will 
+  see the same instance of the Web Bean. But clients in a different context will 
+  see a different instance.</para>
+
+  <para>One great advantage of the contextual model is that it allows stateful
+  Web Beans to be treated like services! The client need not concern itself with 
+  managing the lifecycle of the Web Bean it is using, <emphasis>nor does it even 
+  need to know what that lifecyle is.</emphasis> Web Beans interact by passing 
+  messages, and the Web Bean implementations define the lifecycle of their own state. 
+  The Web Beans are loosely coupled because:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>they interact via well-defined public APIs</para>
+    </listitem>
+    <listitem>
+      <para>their lifecycles are completely decoupled</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>We can replace one Web Bean with a different Web Bean that implements the 
+  same API and has a different lifecycle (a different scope) without affecting the 
+  other Web Bean implementation. In fact, Web Beans defines a sophisticated 
+  facility for overriding Web Bean implementations at deployment time, as we will 
+  see in <xref linkend="deploymenttypes"/>.</para>
+  
+  <para>Note that not all clients of a Web Bean are Web Beans. Other objects
+  such as Servlets or Message-Driven Beans&#151;which are by nature not injectable,
+  contextual objects&#151;may also obtain references to Web Beans by injection.</para>
+
+  <para>Enough hand-waving. More formally, according to the spec:</para>
+
+  <blockquote>
+
+  <para>A Web Bean comprises:</para>
+
+  <itemizedlist>
+    <listitem><para>A (nonempty) set of API types</para></listitem>
+    <listitem><para>A (nonempty) set of binding annotation types</para></listitem>
+    <listitem><para>A scope</para></listitem>
+    <listitem><para>A deployment type</para></listitem>
+    <listitem><para>Optionally, a Web Bean name</para></listitem>
+    <listitem><para>A set of interceptor binding types</para></listitem>
+    <listitem><para>A Web Bean implementation</para></listitem>
+  </itemizedlist>
+
+  </blockquote>
+
+  <para>Let's see what some of these terms mean, to the Web Bean developer.</para>
+
+<section>
+  <title>API types, binding types and dependency injection</title>
+
+  <para>Web Beans usually acquire references to other Web Beans via dependency 
+  injection. Any injected attribute specifies a "contract" that must be
+  satisfied by the Web Bean to be injected. The contract is:</para>
+
+  <itemizedlist>
+    <listitem><para>an API type, together with</para></listitem>
+    <listitem><para>a set of binding types.</para></listitem>
+  </itemizedlist>
+
+  <para>An API is a user-defined class or interface. (If the Web Bean is an
+  EJB session bean, the API type is the <literal>@Local</literal> interface or
+  bean-class local view). A binding type represents some client-visible semantic 
+  that is satisfied by some implementations of the API and not by others.</para>
+
+  <para>Binding types are represented by user-defined annotations that are 
+  themselves annotated <literal>@BindingType</literal>. For example, the following
+  injection point has API type <literal>PaymentProcessor</literal> and binding
+  type <literal>@CreditCard</literal>:</para>
+
+<programlisting role="JAVA"><![CDATA[@CreditCard PaymentProcessor paymentProcessor]]></programlisting>
+
+  <para>If no binding type is explicitly specified at an injection point, the 
+  default binding type <literal>@Current</literal> is assumed.</para>
+
+  <para>For each injection point, the Web Bean manager searches for a Web Bean 
+  which satisfies the contract (implements the API, and has all the binding 
+  types), and injects that Web Bean.</para>
+
+  <para>The following Web Bean has the binding type <literal>@CreditCard</literal>
+  and implements the API type <literal>PaymentProcessor</literal>. It could 
+  therefore be injected to the example injection point:</para>
+
+<programlisting role="JAVA"><![CDATA[@CreditCard
+public class CreditCardPaymentProcessor 
+    implements PaymentProcessor { ... }]]></programlisting>
+
+  <para>If a Web Bean does not explicitly specify a set of binding types, it has 
+  exactly one binding type: the default binding type <literal>@Current</literal>.</para>
+
+  <para>Web Beans defines a sophisticated but intuitive <emphasis>resolution 
+  algorithm</emphasis> that helps the container decide what to do if there is more 
+  than one Web Bean that satisfies a particular contract. We'll get into the
+  details in <xref linkend="injection"/>.</para>
+
+</section>
+
+<section>
+  <title>Deployment types</title>
+
+  <para><emphasis>Deployment types</emphasis> let us classify our Web Beans by
+  deployment scenario. A deployment type is an annotation that represents a particular
+  deployment scenario, for example <literal>@Mock</literal>, <literal>@Staging</literal> 
+  or <literal>@AustralianTaxLaw</literal>. We apply the annotation to Web Beans which
+  should be deployed in that scenario. A deployment type allows a whole set of Web Beans 
+  to be conditionally deployed, with a just single line of configuration.</para>
+
+  <para>Many Web Beans just use the default deployment type <literal>@Production</literal>, 
+  in which case no deployment type need be explicitly specified. All three Web Bean 
+  in our example have the deployment type <literal>@Production</literal>.</para>
+
+  <para>In a testing environment, we might want to replace the <literal>SentenceTranslator</literal>
+  Web Bean with a "mock object":</para>
+
+<programlisting role="JAVA"><![CDATA[@Mock
+public class MockSentenceTranslator implements Translator {
+    public String translate(String sentence) {
+        return "Lorem ipsum dolor sit amet";
+    }
+}]]></programlisting>
+
+
+  <para>We would enable the deployment type <literal>@Mock</literal> in our testing
+  environment, to indicate that <literal>MockSentenceTranslator</literal> and any other
+  Web Bean annotated <literal>@Mock</literal> should be used.</para>
+
+  <para>We'll talk more about this unique and powerful feature in 
+  <xref linkend="deploymenttypes"/>.</para>
+
+</section>
+
+<section>
+  <title>Scope</title>
+
+  <para>The <emphasis>scope</emphasis> defines the lifecycle and visibility 
+  of instances of the Web Bean. The Web Beans context model is extensible, 
+  accommodating arbitrary scopes. However, certain important scopes are 
+  built-in to the specification, and provided by the Web Bean manager. A
+  scope is represented by an annotation type.</para>
+
+  <para>For example, any web application may have <emphasis>session scoped</emphasis> 
+  Web Beans:</para>
+
+<programlisting role="JAVA"><![CDATA[@SessionScoped
+public class ShoppingCart { ... }]]></programlisting>
+
+  <para>An instance of a session scoped Web Bean is bound to a user session
+  and is shared by all requests that execute in the context of that session.</para>
+
+  <para>By default, Web Beans belong to a special scope called the 
+  <emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are
+  pure dependent objects of the object into which they are injected, and their
+  lifecycle is bound to the lifecycle of that object.</para>
+
+  <para>We'll talk more about scopes in <xref linkend="scopescontexts"/>.</para>
+
+</section>
+
+<section>
+  <title>Web Bean names and Unified EL</title>
+
+  <para>A Web Bean may have a <emphasis>name</emphasis>, allowing it to be 
+  used in Unified EL expressions. It's easy to specify the name of a Web 
+  Bean:</para>
+
+<programlisting role="JAVA"><![CDATA[@SessionScoped @Named("cart")
+public class ShoppingCart { ... }]]></programlisting>
+
+  <para>Now we can easily use the Web Bean in any JSF or JSP page:</para>
+
+<programlisting role="HTML"><![CDATA[<h:dataTable value="#{cart.lineItems}" var="item">
+    ....
+</h:dataTable>]]></programlisting>
+
+  <para>It's even easier to just let the name be defaulted by the Web Bean
+  manager:</para>
+
+<programlisting role="JAVA"><![CDATA[@SessionScoped @Named
+public class ShoppingCart { ... }]]></programlisting>
+
+  <para>In this case, the name defaults to <literal>shoppingCart</literal>&#151;the
+  unqualified class name, with the first character changed to lowercase.</para>
+
+</section>
+
+<section>
+  <title>Interceptor binding types</title>
+  
+  <para>Web Beans supports the interceptor functionality defined by EJB 3,
+  not only for EJB beans, but also for plain Java classes. In addition, 
+  Web Beans provides a new approach to binding interceptors to EJB beans
+  and other Web Beans.</para> 
+  
+  <para>It remains possible to directly specify the interceptor class via 
+  use of the <literal>@Interceptors</literal> annotation:</para>
+  
+<programlisting role="JAVA"><![CDATA[@SessionScoped 
+ at Interceptors(TransactionInterceptor.class)
+public class ShoppingCart { ... }]]></programlisting>
+
+  <para>However, it is more elegant, and better practice, to indirect the
+  interceptor binding through an <emphasis>interceptor binding 
+  type</emphasis>:</para>
+  
+<programlisting role="JAVA"><![CDATA[@SessionScoped @Transactional
+public class ShoppingCart { ... }]]></programlisting>
+
+  <para>We'll discuss Web Beans interceptors and decorators in
+  <xref linkend="interceptors"/> and <xref linkend="decorators"/>.</para>
+
+</section>
+
+</section>
+
+<section>
+  <title>What kinds of objects can be Web Beans?</title>
+  
+  <para>We've already seen that JavaBeans, EJBs and some other Java classes can
+  be Web Beans. But exactly what kinds of objects are Web Beans?</para>
+  
+  <section>
+    <title>Simple Web Beans</title>
+  
+    <para>The Web Beans specification says that a concrete Java class is a 
+    <emphasis>simple</emphasis> Web Bean if:</para>
+    
+    <itemizedlist>
+      <listitem>
+        <para>it is not an EE container-managed component, like an EJB, a Servlet
+        or a JPA entity,</para>
+      </listitem>
+      <listitem>
+        <para>it is not a non-static static inner class,</para>
+      </listitem>
+      <listitem>
+        <para>it is not a parameterized type, and</para>
+      </listitem>
+      <listitem>
+        <para>it has a constructor with no parameters, or a constructor annotated
+        <literal>@Initializer</literal>.</para>
+      </listitem>
+    </itemizedlist>
+    
+    <para>Thus, almost every JavaBean is a simple Web Bean.</para>
+    
+    <para>Every interface implemented directly or indirectly by a simple Web Bean
+    is an API type of the simple Web Bean. The class and its superclasses are also 
+    API types.</para>
+    
+  </section>
+  
+  <section>
+    <title>Enterprise Web Beans</title>
+  
+    <para>The specification says that all EJB 3-style session and singleton beans
+    are <emphasis>enterprise</emphasis> Web Beans. Message driven beans are not
+    Web Beans&#151;since they are not intended to be injected into other 
+    objects&#151;but they can take advantage of most of the functionality of Web 
+    Beans, including dependency injection and interceptors.</para>
+   
+    <para>Every local interface of an enterprise Web Bean that does not have a 
+    wildcard type parameter or type variable, and every one of its superinterfaces, 
+    is an API type of the enterprise Web Bean. If the EJB bean has a bean class
+    local view, the bean class, and every one of its superclasses, is also an API 
+    type.</para>
+    
+    <para>Stateful session beans should declare a remove method with no parameters
+    or a remove method annotated <literal>@Destructor</literal>. The Web Bean
+    manager calls this method to destroy the stateful session bean instance at the
+    end of its lifecycle. This method is called the <emphasis>destructor</emphasis>
+    method of the enterprise Web Bean.</para>
+    
+<programlisting role="JAVA"><![CDATA[@Stateful @SessionScoped
+public class ShoppingCart {
+
+    ...
+    
+    @Remove
+    public void destroy() {}
+
+}]]></programlisting>
+
+    <para>So when should we use an enterprise Web Bean instead of a simple Web Bean?
+    Well, whenever we need the advanced enterprise services offered by EJB, such
+    as:</para>
+    
+    
+    <itemizedlist>
+      <listitem>
+        <para>method-level transaction management and security,</para>
+      </listitem>
+      <listitem>
+        <para>concurrency management,</para>
+      </listitem>
+      <listitem>
+        <para>instance-level passivation for stateful session beans and 
+        instance-pooling for stateless session beans,</para>
+      </listitem>
+      <listitem>
+        <para>remote and web service invocation, and</para>
+      </listitem>
+      <listitem>
+        <para>timers and asynchronous methods,</para>
+      </listitem>
+    </itemizedlist>
+    
+    <para>we should use an enterprise Web Bean. When we don't need any of these things, 
+    a simple Web Bean will serve just fine.</para>
+    
+    <para>Many Web Beans (including any session or application scoped Web Bean) are
+    available for concurrent access. Therefore, the concurrency management provided
+    by EJB 3.1 is especially useful. Most session and application scoped Web Beans
+    should be EJBs.</para>
+    
+    <para>Web Beans which hold references to heavy-weight resources, or hold a lot
+    of internal state benefit from the advanced container-managed lifecycle defined
+    by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal>
+    model, with its support for passivation and instance pooling.</para>
+    
+    <para>Finally, it's usually obvious when method-level transaction management,
+    method-level security, timers, remote methods or asynchronous methods are needed.</para>
+    
+    <para>It's usually easy to start with simple Web Bean, and then turn it into an 
+    EJB, just by adding an annotation: <literal>@Stateless</literal>, 
+    <literal>@Stateful</literal> or <literal>@Singleton</literal>.</para>
+
+  </section>
+  
+  <section>
+    <title>Producer methods</title>
+
+    <para>A <emphasis>producer method</emphasis> is a method that is called by the 
+    Web Bean manager to obtain an instance of the Web Bean when no instance exists 
+    in the current context. A producer method lets the application take full control
+    of the instantiation process, instead of leaving instantiation to the Web Bean
+    manager. For example:</para>
+
+<programlisting role="JAVA"><![CDATA[@ApplicationScoped
+public class Generator {
+
+    private Random random = new Random( System.currentTimeMillis() );
+    
+    @Produces @Random int next() {
+        return random.nextInt(100);
+    }
+
+}]]></programlisting>
+
+    <para>The result of a producer method is injected just like any other Web Bean.</para>
+
+    <programlisting role="JAVA"><![CDATA[@Random int randomNumber]]></programlisting>
+    
+    <para>The method return type and all interfaces it extends/implements directly or indirectly 
+    are API types of the producer method. If the return type is a class, all superclasses are 
+    also API types.</para>
+    
+    <para>Some producer methods return objects that require explicit destruction:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Produces @RequestScoped Connection connect(User user) {
+    return createConnection( user.getId(), user.getPassword() );
+}]]></programlisting>
+
+    <para>These producer methods may define matching <emphasis>disposal methods</emphasis>:</para>
+    
+<programlisting role="JAVA"><![CDATA[void close(@Disposes Connection connection) {
+    connection.close();
+}]]></programlisting>
+
+    <para>This disposal method is called automatically by the Web Bean manager at 
+    the end of the request.</para>
+
+    <para>We'll talk much more about producer methods in <xref linkend="producermethods"/>.</para>
+
+  </section>
+
+  <section>
+    <title>JMS endpoints</title>
+    
+    <para>Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the
+    developer from the tedium of managing the lifecycles of all the various JMS 
+    objects required to send messages to queues and topics. We'll discuss JMS
+    endpoints in <xref linkend="jms"/>.</para>
+    
+  </section>
+
+</section>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/intro.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: doc/trunk/reference/en-US/master.xml
===================================================================
--- doc/trunk/reference/en-US/master.xml	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/en-US/master.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -4,56 +4,56 @@
 
 <book lang="en">
 
-	 <xi:include href="modules/Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	 <xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
     
     <toc/>
     
     <part>
       <title>Using contextual objects</title>
       
-      <xi:include href="modules/part1.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/intro.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/example.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/ri.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/injection.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/scopescontexts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/producermethods.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="part1.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="intro.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="example.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="ri.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="injection.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="scopescontexts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="producermethods.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
       
     </part>
     
     <part>
       <title>Developing loosely-coupled code</title>
       
-      <xi:include href="modules/part2.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/interceptors.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/decorators.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/events.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="part2.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="interceptors.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="decorators.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="events.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
       
     </part>
     
     <part>
       <title>Making the most of strong typing</title>
       
-      <xi:include href="modules/part3.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="part3.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
       
-      <xi:include href="modules/stereotypes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/specialization.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/xml.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="stereotypes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="specialization.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="xml.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
 
     </part>
     
     <part>
       <title>Web Beans and the Java EE ecosystem</title>
       
-      <xi:include href="modules/part4.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="part4.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
       
-      <xi:include href="modules/ee.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-      <xi:include href="modules/extend.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="ee.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+      <xi:include href="extend.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
       
     </part>
 
-    <xi:include href="modules/next.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-    <xi:include href="modules/ri-spi.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="next.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="ri-spi.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
     
 </book>
 

Copied: doc/trunk/reference/en-US/next.xml (from rev 759, doc/trunk/reference/en-US/modules/next.xml)
===================================================================
--- doc/trunk/reference/en-US/next.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/next.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,21 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter>
+  <title>Next steps</title>
+  
+  <para>Because Web Beans is so new, there's not yet a lot of information
+  available online.</para>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  !
                                                                                                                                                                                                                                                                                                                                     
+  
+  <para>Of course, the Web Beans specification is the best source of more
+  information about Web Beans. The spec is about 100 pages long, only 
+  twice the length of this article, and almost as readable. But, of course, 
+  it covers many details that we've skipped over. The spec is available 
+  from <literal>http://jcp.org/en/jsr/detail?id=299</literal>.</para>
+  
+  <para>The Web Beans Reference implementation is being developed at
+  <literal>http://seamframework.org/WebBeans</literal>. The RI development
+  team and the Web Beans spec lead blog at <literal>http://in.relation.to</literal>.
+  This article is substantially based upon a series of blog entries published
+  there.</para>
+  
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/next.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/part1.xml (from rev 759, doc/trunk/reference/en-US/modules/part1.xml)
===================================================================
--- doc/trunk/reference/en-US/part1.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/part1.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,129 @@
+<!DOCTYPE partintro PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<partintro>
+  
+  <para>The Web Beans (JSR-299) specification defines a set of services for
+  the Java EE environment that makes applications much easier to develop.
+  Web Beans layers an enhanced lifecycle and interaction model over existing 
+  Java component types including JavaBeans and Enterprise Java Beans. As a
+  complement to the traditional Java EE programming model, the Web Beans 
+  services provide:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>an improved lifecycle for stateful components, bound to well-defined 
+      <emphasis>contexts</emphasis>,</para>
+    </listitem>
+    <listitem>
+      <para>a typesafe approach to <emphasis>dependency injection</emphasis>,</para>
+    </listitem>
+    <listitem>
+      <para>interaction via an <emphasis>event notification</emphasis> facility, 
+      and</para>
+    </listitem>
+    <listitem>
+      <para>a better approach to binding <emphasis>interceptors</emphasis> to
+      components, along with a new kind of interceptor, called a 
+      <emphasis>decorator</emphasis>, that is more appropriate for use in
+      solving business problems.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>Dependency injection, together with contextual lifecycle management, 
+  saves the user of an unfamiliar API from having to ask and answer the following 
+  questions:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>what is the lifecycle of this object?</para>
+    </listitem>
+    <listitem>
+      <para>how many simultaneous clients can it have?</para>
+    </listitem>
+    <listitem>
+      <para>is it multithreaded?</para>
+    </listitem>
+    <listitem>
+      <para>where can I get one from?</para>
+    </listitem>
+    <listitem>
+      <para>do I need to explicitly destroy it?</para>
+    </listitem>
+    <listitem>
+      <para>where should I keep my reference to it when I'm not
+      using it directly?</para>
+    </listitem>
+    <listitem>
+      <para>how can I add an indirection layer, so that the implementation
+      of this object can vary at deployment time?</para>
+    </listitem>
+    <listitem>
+      <para>how should I go about sharing this object between other objects?</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>A Web Bean specifies only the type and semantics of other Web Beans
+  it depends upon. It need not be aware of the actual lifecycle, concrete 
+  implementation, threading model or other clients of any Web Bean it depends 
+  upon. Even better, the concrete implementation, lifecycle and threading model 
+  of a Web Bean it depends upon may vary according to the deployment scenario, 
+  without affecting any client.</para>
+  
+  <para>Events, interceptors and decorators enhance the <emphasis>loose-coupling</emphasis> 
+  that is inherent in this model:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para><emphasis>event notifications</emphasis> decouple event producers 
+      from event consumers,</para>
+    </listitem>
+    <listitem>
+      <para><emphasis>interceptors</emphasis> decouple technical concerns from 
+      business logic, and</para>
+    </listitem>
+    <listitem>
+      <para><emphasis>decorators</emphasis> allow business concerns to be 
+      compartmentalized.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>Most importantly, Web Beans provides all these facilities in a
+  <emphasis>typesafe</emphasis> way. Web Beans never uses string-based
+  identifiers to determine how collaborating objects fit together. And
+  XML, though it remains an option, is rarely used. Instead, Web Beans
+  uses the typing information that is already available in the Java
+  object model, together with a new pattern, called 
+  <emphasis>binding annotations</emphasis>, to wire together Web Beans,
+  their dependencies, their interceptors and decorators and their event
+  consumers.</para>
+  
+  <para>The Web Beans services are general and apply to the following types of 
+  components that exist in the Java EE environment:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>all JavaBeans,</para>
+    </listitem>
+    <listitem>
+      <para>all EJBs, and</para>
+    </listitem>
+    <listitem>
+      <para>all Servlets.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>Web Beans even provides the necessary integration points so that other
+  kinds of components defined by future Java EE specifications or by non-standard
+  frameworks may be cleanly integrated with Web Beans, take advantage of the Web 
+  Beans services, and interact with any other kind of Web Bean.</para>
+  
+  <para>Web Beans was influenced by a number of existing Java frameworks,
+  including Seam, Guice and Spring. However, Web Beans has its own very distinct 
+  character: more typesafe than Seam, more stateful and less XML-centric than 
+  Spring, more web and enterprise-application capable than Guice.</para>
+  
+  <para>Most importantly, Web Beans is a JCP standard that integrates
+  cleanly with Java EE, and with any Java SE environment where embeddable
+  EJB Lite is available.</para>
+  
+</partintro>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/part1.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/part2.xml (from rev 759, doc/trunk/reference/en-US/modules/part2.xml)
===================================================================
--- doc/trunk/reference/en-US/part2.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/part2.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,54 @@
+<!DOCTYPE partintro PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<partintro>
+
+<para>The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. 
+We've already seen three means of achieving loose coupling:</para>
+
+<itemizedlist>
+  <listitem>
+    <para><emphasis>deployment types</emphasis> enable deployment 
+    time polymorphism,</para>
+  </listitem>
+  <listitem>
+    <para><emphasis>producer methods</emphasis> enable runtime
+    polymorphism, and</para>
+  </listitem>
+  <listitem>
+    <para><emphasis>contextual lifecycle management</emphasis> decouples 
+    Web Bean lifecycles.</para>
+  </listitem>
+</itemizedlist>
+
+<para>These techniques serve to enable loose coupling of client and server. 
+The client is no longer tightly bound to an implementation of an API, nor 
+is it required to manage the lifecycle of the server object. This approach 
+lets <emphasis>stateful objects interact as if they were services</emphasis>.</para>
+
+<para>Loose coupling makes a system more <emphasis>dynamic</emphasis>. The 
+system can respond to change in a well-defined manner. In the past, frameworks 
+that attempted to provide the facilities listed above invariably did it by 
+sacrificing type safety. Web Beans is the first technology that achieves this
+level of loose coupling in a typesafe way.</para>
+
+<para>Web Beans provides three extra important facilities that further the goal 
+of loose coupling:</para>
+
+<itemizedlist>
+  <listitem>
+    <para><emphasis>interceptors</emphasis> decouple technical concerns from 
+    business logic,</para>
+  </listitem>
+  <listitem>
+    <para><emphasis>decorators</emphasis> may be used to decouple some business 
+    concerns, and</para>
+  </listitem>
+  <listitem>
+    <para><emphasis>event notifications</emphasis> decouple event producers 
+    from event consumers.</para>
+  </listitem>
+</itemizedlist>
+
+<para>Let's explore interceptors first.</para>
+
+</partintro>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/part2.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/part3.xml (from rev 759, doc/trunk/reference/en-US/modules/part3.xml)
===================================================================
--- doc/trunk/reference/en-US/part3.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/part3.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,76 @@
+<!DOCTYPE partintro PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<partintro>
+  
+  <para>The second major theme of Web Beans is <emphasis>strong typing</emphasis>.
+  The information about the dependencies, interceptors and decorators of a 
+  Web Bean, and the information about event consumers for an event producer, is
+  contained in typesafe Java constructs that may be validated by the compiler.</para>
+  
+  <para>You don't see string-based identifiers in Web Beans code, not because the 
+  framework is hiding them from you using clever defaulting rules&#151;so-called
+  "configuration by convention"&#151;but because there are simply no strings there 
+  to begin with!</para>
+
+  <para>The obvious benefit of this approach is that <emphasis>any</emphasis> IDE can 
+  provide autocompletion, validation and refactoring without the need for special tooling. 
+  But there is a second, less-immediately-obvious, benefit. It turns out that when you 
+  start thinking of identifying objects, events or interceptors via annotations instead 
+  of names, you have an opportunity to lift the semantic level of your code.</para>
+
+  <para>Web Beans encourages you develop annotations that model concepts, for 
+  example,</para>
+
+  <itemizedlist>
+    <listitem>
+      <para><literal>@Asynchronous</literal>,</para>
+    </listitem>
+    <listitem>
+      <para><literal>@Mock</literal>,</para>
+    </listitem>
+    <listitem>
+      <para><literal>@Secure</literal> or</para>
+    </listitem>
+    <listitem>
+      <para><literal>@Updated</literal>,</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>instead of using compound names like</para>
+
+  <itemizedlist>
+    <listitem>
+      <para><literal>asyncPaymentProcessor</literal>,</para>
+    </listitem>
+    <listitem>
+      <para><literal>mockPaymentProcessor</literal>,</para>
+    </listitem>
+    <listitem>
+      <para><literal>SecurityInterceptor</literal> or</para>
+    </listitem>
+    <listitem>
+      <para><literal>DocumentUpdatedEvent</literal>.</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>The annotations are reusable. They help describe common qualities of disparate
+  parts of the system. They help us categorize and understand our code. They help us
+  deal with common concerns in a common way. They make our code more literate and
+  more understandable.</para>
+  
+  <para>Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A
+  stereotype models a common <emphasis>role</emphasis> in your application architecture. 
+  It encapsulates various properties of the role, including scope, interceptor bindings, 
+  deployment type, etc, into a single reusable package.</para>
+  
+  <para>Even Web Beans XML metadata is strongly typed! There's no compiler for XML, so 
+  Web Beans takes advantage of XML schemas to validate the Java types and attributes
+  that appear in XML. This approach turns out to make the XML more literate, just like
+  annotations made our Java code more literate.</para>
+  
+  <para>We're now ready to meet some more advanced features of Web Beans. Bear in mind that 
+  these features exist to make our code both easier to validate and more understandable.
+  Most of the time you don't ever really <emphasis>need</emphasis> to use these features,
+  but if you use them wisely, you'll come to appreciate their power.</para>
+  
+</partintro>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/part3.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/part4.xml (from rev 759, doc/trunk/reference/en-US/modules/part4.xml)
===================================================================
--- doc/trunk/reference/en-US/part4.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/part4.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,28 @@
+<!DOCTYPE partintro PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<partintro>
+
+  <para>The third theme of Web Beans is <emphasis>integration</emphasis>. Web
+  Beans was designed to work in concert with other technologies, helping the 
+  application developer fit the other technologies together. Web Beans is an 
+  open technology. It forms a part of the Java EE ecosystem, and is itself the 
+  foundation for a new ecosystem of portable extensions and integration with 
+  existing frameworks and technologies.</para>
+  
+  <para>We've already seen how Web Beans helps integrate EJB and JSF, allowing
+  EJBs to be bound directly to JSF pages. That's just the beginning. Web Beans
+  offers the same potential to diverse other technologies, such as Business
+  Process Management engines, other Web Frameworks, and third-party component
+  models. The Java EE platform will never be able to standardize all the
+  interesting technologies that are used in the world of Java application
+  development, but Web Beans makes it easier to use the technologies which are
+  not yet part of the platform seamlessly within the Java EE environment.</para>
+  
+  <para>We're about to see how to take full advantage of the Java EE platform
+  in an application that uses Web Beans. We'll also briefly meet a set of SPIs 
+  that are provided to support portable extensions to Web Beans. You might not
+  ever need to use these SPIs directly, but it's nice to know they are there if
+  you need them. Most importantly, you'll take advantage of them indirectly, 
+  every time you use a third-party extension.</para>
+  
+</partintro>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/part4.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/producermethods.xml (from rev 759, doc/trunk/reference/en-US/modules/producermethods.xml)
===================================================================
--- doc/trunk/reference/en-US/producermethods.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/producermethods.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,173 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="producermethods">
+ 
+  <title>Producer methods</title>
+  
+  <para>Producer methods let us overcome certain limitations that arise when the Web Bean manager, 
+  instead of the application, is responsible for instantiating objects. They're also the easiest 
+  way to integrate objects which are not Web Beans into the Web Beans environment. (We'll meet
+  a second approach in <xref linkend="xml"/>.)</para>
+
+  <para>According to the spec:</para>
+
+  <blockquote>
+
+    <para>A Web Beans producer method acts as a source of objects to be injected, where:</para>
+
+    <itemizedlist>
+      <listitem>
+        <para>the objects to be injected are not required to be instances of Web Beans,</para>
+      </listitem>
+      <listitem>
+        <para>the concrete type of the objects to be injected may vary at runtime or</para>
+      </listitem>
+      <listitem>
+        <para>the objects require some custom initialization that is not performed by the 
+        Web Bean constructor</para>
+      </listitem>
+    </itemizedlist>
+
+  </blockquote>
+
+  <para>For example, producer methods let us:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>expose a JPA entity as a Web Bean,</para>
+    </listitem>
+    <listitem>
+      <para>expose any JDK class as a Web Bean,</para>
+    </listitem>
+    <listitem>
+      <para>define multiple Web Beans, with different scopes or initialization, 
+      for the same implementation class, or</para>
+    </listitem>
+    <listitem>
+      <para>vary the implementation of an API type at runtime.</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>In particular, producer methods let us use runtime polymorphism with 
+  Web Beans. As we've seen, deployment types are a powerful solution to the problem 
+  of deployment-time polymorphism. But once the system is deployed, the Web Bean 
+  implementation is fixed. A producer method has no such limitation:</para>
+
+<programlisting role="JAVA"><![CDATA[@SessionScoped
+public class Preferences {
+    
+    private PaymentStrategyType paymentStrategy;
+    
+    ...
+    
+    @Produces @Preferred 
+    public PaymentStrategy getPaymentStrategy() {
+        switch (paymentStrategy) {
+            case CREDIT_CARD: return new CreditCardPaymentStrategy();
+            case CHEQUE: return new ChequePaymentStrategy();
+            case PAYPAL: return new PayPalPaymentStrategy();
+            default: return null;
+        } 
+    }
+    
+}]]></programlisting>
+
+  <para>Consider an injection point:</para>
+
+<programlisting role="JAVA"><![CDATA[@Preferred PaymentStrategy paymentStrat;]]></programlisting>
+
+  <para>This injection point has the same type and binding annotations as the producer
+  method, so it resolves to the producer method using the usual Web Beans injection 
+  rules. The producer method will be called by the Web Bean manager to obtain an instance 
+  to service this injection point.</para>.
+
+<section>
+  <title>Scope of a producer method</title>
+
+  <para>The scope of the producer method defaults to <literal>@Dependent</literal>, and so
+  it will be called <emphasis>every time</emphasis> the Web Bean manager injects this field 
+  or any other field that resolves to the same producer method. Thus, there could be 
+  multiple instances of the <literal>PaymentStrategy</literal> object for each user session.</para>
+
+  <para>To change this behavior, we can add a <literal>@SessionScoped</literal> annotation 
+  to the method.</para>
+  
+<programlisting role="JAVA"><![CDATA[@Produces @Preferred @SessionScoped
+public PaymentStrategy getPaymentStrategy() {
+    ...
+}]]></programlisting>
+
+  <para>Now, when the producer method is called, the returned <literal>PaymentStrategy</literal> 
+  will be bound to the session context. The producer method won't be called again in the same 
+  session.</para>
+  
+</section>
+
+<section>
+  <title>Injection into producer methods</title>
+
+  <para>There's one potential problem with the code above. The implementations of 
+  <literal>CreditCardPaymentStrategy</literal> are instantiated using the Java
+  <literal>new</literal> operator. Objects instantiated directly by the application
+  can't take advantage of dependency injection and don't have interceptors.</para>
+   
+  <para>If this isn't what we want we can use dependency injection into the 
+  producer method to obtain Web Bean instances:</para>
+
+<programlisting role="JAVA"><![CDATA[@Produces @Preferred @SessionScoped
+public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,
+                                          ChequePaymentStrategy cps,
+                                          PayPalPaymentStrategy ppps) {
+    switch (paymentStrategy) {
+        case CREDIT_CARD: return ccps;
+        case CHEQUE: return cps;
+        case PAYPAL: return ppps;
+        default: return null;
+    } 
+}]]></programlisting>
+
+  <para>Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request scoped 
+  Web Bean? Then the producer method has the effect of "promoting" the current request 
+  scoped instance into session scope. This is almost certainly a bug! The request
+  scoped object will be destroyed by the Web Bean manager before the session ends, but
+  the reference to the object will be left "hanging" in the session scope. This error 
+  will <emphasis>not</emphasis> be detected by the Web Bean manager, so please take 
+  extra care when returning Web Bean instances from producer methods!</para>
+  
+  <para>There's at least three ways we could go about fixing this bug. We could change
+  the scope of the <literal>CreditCardPaymentStrategy</literal> implementation, but this
+  would affect other clients of that Web Bean. A better option would be to change the 
+  scope of the producer method to <literal>@Dependent</literal> or 
+  <literal>@RequestScoped</literal>.</para>
+  
+  <para>But a more common solution is to use the special <literal>@New</literal> binding 
+  annotation.</para>
+  
+</section>
+
+<section>
+  <title>Use of <literal>@New</literal> with producer methods</title>
+  
+  <para>Consider the following producer method:</para>
+
+<programlisting role="JAVA"><![CDATA[@Produces @Preferred @SessionScoped
+public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy ccps,
+                                          @New ChequePaymentStrategy cps,
+                                          @New PayPalPaymentStrategy ppps) {
+    switch (paymentStrategy) {
+        case CREDIT_CARD: return ccps;
+        case CHEQUE: return cps;
+        case PAYPAL: return ppps;
+        default: return null;
+    } 
+}]]></programlisting>
+
+  <para>Then a new <emphasis>dependent</emphasis> instance of 
+  <literal>CreditCardPaymentStrategy</literal> will be created, passed to the producer 
+  method, returned by the producer method and finally bound to the session context. The 
+  dependent object won't be destroyed until the <literal>Preferences</literal> object is 
+  destroyed, at the end of the session.</para>
+
+</section>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/producermethods.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/ri-spi.xml (from rev 759, doc/trunk/reference/en-US/modules/ri-spi.xml)
===================================================================
--- doc/trunk/reference/en-US/ri-spi.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/ri-spi.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,209 @@
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<appendix id="ri-spi">
+   <title>Integrating the Web Beans RI into other environments</title>
+
+    <para>
+      Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI 
+      into other EE environments (for example another application server like
+      Glassfish), into a servlet container (like Tomcat), or with an
+      Embedded EJB3.1 implementation is fairly easy. In this Appendix we will
+      briefly discuss the steps needed. 
+    </para>
+    
+    <note>
+      <para>
+         It should be possible to run Web Beans in an SE environment, but 
+         you'll to do more work, adding your own contexts and lifecycle. The
+         Web Beans RI currently doesn't expose lifecycle extension points, so
+         you would have to code directly against Web Beans RI classes.
+      </para>
+    </note>
+    
+    <section>
+      <title>The Web Beans RI SPI</title>
+      
+      <para>
+         The Web Beans SPI is located in <literal>webbeans-ri-spi</literal>
+         module, and packaged as <literal>webbeans-ri-spi.jar</literal>.
+      </para>
+      
+      <para>
+         Currently, the only SPI to implement is the bootstrap spi:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[public interface WebBeanDiscovery {
+   /**
+    * Gets list of all classes in classpath archives with web-beans.xml files
+    * 
+    * @return An iterable over the classes 
+    */
+   public Iterable<Class<?>> discoverWebBeanClasses();
+   
+   /**
+    * Gets a list of all web-beans.xml files in the app classpath
+    * 
+    * @return An iterable over the web-beans.xml files 
+    */
+   public Iterable<URL> discoverWebBeansXml();
+   
+   /**
+    * Gets a descriptor for each EJB in the application
+    * 
+    * @return The bean class to descriptor map 
+    */
+   public Iterable<EjbDescriptor<?>> discoverEjbs();
+   
+}]]></programlisting>
+
+      <para>
+         The discovery of Web Bean classes and <literal>web-bean.xml</literal> 
+         files is self-explanatory (the algorithm is described in Section 11.1 
+         of the JSR-299 specification, and isn't repeated here).
+      </para>
+      
+      <para>
+         The Web Beans RI also delegates EJB3 bean discovery to the container
+         so that it doesn't have to scan for EJB3 annotations or parse
+         <literal>ejb-jar.xml</literal>. For each EJB in the application an
+         EJBDescriptor should be discovered:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[public interface EjbDescriptor<T> {
+   
+   /**
+    * Gets the EJB type
+    * 
+    * @return The EJB Bean class
+    */
+   public Class<T> getType();
+
+   /**
+    * Gets the local business interfaces of the EJB
+    * 
+    * @return An iterator over the local business interfaces
+    */
+   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces();
+   
+   /**
+    * Gets the remote business interfaces of the EJB
+    * 
+    * @return An iterator over the remote business interfaces
+    */
+   public Iterable<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces();
+   
+   /**
+    * Get the remove methods of the EJB
+    * 
+    * @return An iterator over the remove methods
+    */
+   public Iterable<Method> getRemoveMethods();
+
+   /**
+    * Indicates if the bean is stateless
+    * 
+    * @return True if stateless, false otherwise
+    */
+   public boolean isStateless();
+
+   /**
+    * Indicates if the bean is a EJB 3.1 Singleton
+    * 
+    * @return True if the bean is a singleton, false otherwise
+    */
+   public boolean isSingleton();
+
+   /**
+    * Indicates if the EJB is stateful
+    * 
+    * @return True if the bean is stateful, false otherwise
+    */
+   public boolean isStateful();
+
+   /**
+    * Indicates if the EJB is and MDB
+    * 
+    * @return True if the bean is an MDB, false otherwise
+    */
+   public boolean isMessageDriven();
+
+   /**
+    * Gets the EJB name
+    * 
+    * @return The name
+    */
+   public String getEjbName();
+   
+   /**
+    * @return The JNDI string which can be used to lookup a proxy which 
+    * implements all local business interfaces 
+    * 
+    */
+   public String getLocalJndiName();
+   
+}]]></programlisting>
+   
+    <para>
+       The contract described the JavaDoc is enough to implement 
+       an EJBDescriptor. In addition to these two interfaces, there is 
+       <literal>BusinessInterfaceDescriptor</literal> which represents a local 
+       business interface (encapsulating the interface class and jndi name).
+    </para>
+    
+    <para>
+      The Web Beans RI can be told to load your implementation of
+      <literal>WebBeanDiscovery</literal> using the property
+      <literal>org.jboss.webbeans.bootstrap.webBeanDiscovery</literal> with the
+      fully qualified class name as the value. For example:
+    </para>
+    
+    <programlisting>org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration.jbossas.WebBeanDiscoveryImpl</programlisting>
+    
+    <para>
+      The property can either be specified as a system property, or in a
+      properties file <literal>META-INF/web-beans-ri.properties</literal>.
+    </para>
+   
+    </section>
+    
+    <section>
+      <title>The contract with the container</title>
+      
+      <para>
+         There are a number of requirements that the Web Beans RI places on the
+         container for correct functioning that fall outside implementation of
+         APIs
+      </para>
+      
+      <variablelist>
+         <varlistentry>
+            <term>
+               Classloader isolation
+            </term>
+            <listitem>
+               <para>
+                  If you are integrating the Web Beans into an environment that
+                  supports deployment of applications, you must enable,
+                  automatically, or through user configuation, classloader
+                  isolation for each Web Beans application
+               </para>
+            </listitem>
+         </varlistentry>
+         <varlistentry>
+            <term>
+               The <literal>webbeans-ri.jar</literal>
+            </term>
+            <listitem>
+               <para>
+                  If you are integrating the Web Beans into an environment that
+                  supports deployment of applications, you must insert the
+                  <literal>webbeans-ri.jar</literal> into the applications
+                  isolated classloader. It cannot be loaded from a shared 
+                  classloader.
+               </para>
+            </listitem>
+         </varlistentry>
+      </variablelist>
+    </section>
+
+</appendix>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/ri-spi.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/ri.xml (from rev 759, doc/trunk/reference/en-US/modules/ri.xml)
===================================================================
--- doc/trunk/reference/en-US/ri.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/ri.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,803 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="ri">
+   <title>The Web Beans Reference Implementation</title>
+
+   <para>
+     The Web Beans Reference Implementation is being developed at
+     <ulink url="http://seamframework.org/WebBeans">the Seam project</ulink>.
+     You can download the latest developer release of Web Beans from the
+     <ulink url="http://seamframework.org/Download">the downloads page</ulink>.
+   </para> 
+
+    <para>
+      The Web Beans RI comes with a two deployable example applications:
+      <literal>webbeans-numberguess</literal>, a war example, containing only
+      simple beans, and <literal>webbeans-translator</literal> an ear example,
+      containing enterprise beans. To run the examples you'll need the following:
+   </para>
+   
+   <itemizedlist>
+     <listitem>
+       <para>the latest release of the Web Beans RI,</para>
+     </listitem>
+     <listitem>
+       <para>JBoss AS 5.0.0.GA, and</para>
+     </listitem>
+     <listitem>
+       <para>Ant 1.7.0.</para>
+     </listitem>
+   </itemizedlist>
+   
+   <para>
+      Currently, the Web Beans RI only runs on JBoss Application Server 5. 
+      You'll need to download JBoss AS 5.0.0.GA from 
+      <ulink url="http://www.jboss.org/jbossas/downloads/">jboss.org</ulink>,
+      and unzip it. For example:
+   </para>
+   
+   <programlisting><![CDATA[$ cd /Applications
+$ unzip ~/jboss-5.0.0.GA.zip]]></programlisting>
+
+   <para>
+      Next, download the Web Beans RI from 
+      <ulink url="http://seamframework.org/Download">seamframework.org</ulink>,
+      and unzip it. For example
+   </para>
+   
+   <programlisting><![CDATA[$ cd ~/
+$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]></programlisting>
+
+   
+   <para>
+      Next, we need to tell Web Beans where JBoss is located. Edit
+      <literal>jboss-as/build.properties</literal> and set the
+      <literal>jboss.home</literal> property. For example:
+   </para>
+   
+   <programlisting>jboss.home=/Applications/jboss-5.0.0.GA</programlisting>
+
+   <para>
+      As Web Beans is a new piece of software, you need to update JBoss AS to 
+      run the Web Beans RI. Future versions of JBoss AS will include these
+      updates, and this step won't be necessary.
+   </para>
+   
+   <note>
+      <para>
+         Currently, two updates are needed. Firstly, a new deployer,
+         <literal>webbeans.deployer</literal> is added. This adds supports for
+         Web Bean archives to JBoss AS, and allows the Web Beans RI to query the
+         EJB3 container and discover which EJBs are installed in your 
+         application. Secondly, an update to JBoss EJB3 is needed.
+      </para>
+   </note>
+   
+   <para>
+      To install the update, you'll need Ant 1.7.0 installed, and the 
+      <literal>ANT_HOME</literal> environment variable set. For example:
+   </para>
+   
+      <programlisting>$ unzip apache-ant-1.7.0.zip
+$ export ANT_HOME=~/apache-ant-1.7.0</programlisting>
+
+   <para>
+      Then, you can install the update. The update script will use Maven to
+      download the Web Beans and EJB3 automatically.
+   </para>
+   
+   <programlisting>$ cd webbeans-1.0.0.ALPHA1/jboss-as
+$ ant update</programlisting>
+
+   <para>
+      Now, you're ready to deploy your first example!
+   </para>
+   
+   <tip>
+      <para>
+         The build scripts for the examples offer a number of targets, these 
+         are:
+      </para>
+      <itemizedlist>
+         <listitem>
+            <para>
+               <literal>ant restart</literal> - deploy the example in exploded 
+               format
+            </para>
+         </listitem>
+         <listitem>
+            <para>
+               <literal>ant explode</literal> - update an exploded example, without
+               restarting the deployment
+            </para>
+         </listitem>
+         <listitem>
+            <para>
+               <literal>ant deploy</literal> - deploy the example in compressed jar format
+            </para>
+         </listitem>
+         <listitem>
+            <para>
+               <literal>ant undeploy</literal> - remove the example from the server
+            </para>
+         </listitem>
+         <listitem>
+            <para>
+               <literal>ant clean</literal> - clean the example
+           </para>
+         </listitem>
+      </itemizedlist>
+   </tip>
+
+   <para>
+      To deploy the numberguess example:
+   </para>
+
+   <programlisting>$ cd examples/numberguess
+ant deploy</programlisting>
+
+   <para>
+      Wait for the application to deploy, and enjoy hours of fun at
+      <ulink url="http://localhost:8080/webbeans-numberguess" />!
+   </para>
+   
+   <para>
+      The Web Beans RI includes a second simple example that will translate your text
+      into Latin. The numberguess example is a war example, and uses only simple
+      beans; the translator example is an ear example, and includes enterprise
+      beans, packaged in an EJB module. To try it out:
+   </para>
+
+   <programlisting>$ cd examples/translator
+ant deploy</programlisting>
+
+   <para>
+      Wait for the application to deploy, and visit
+      <ulink url="http://localhost:8080/webbeans-translator" />!
+   </para>
+   
+   <section>
+      <title>The numberguess example</title>
+      
+      <para>
+         In the numberguess application you get given 10 attempts to guess a
+         number between 1 and 100. After each attempt, you will be told whether
+         you are too high, or too low.
+      </para>
+      
+      <para>
+         The numberguess example is comprised of a number of Web Beans, 
+         configuration files, and Facelet JSF pages, packaged as a war. Let's 
+         start with the configuration files.
+      </para>
+      
+      <para>
+          All the configuration files for this example are located in 
+          <literal>WEB-INF/</literal>, which is stored in
+          <literal>WebContent</literal> in the source tree. First, we have 
+          <literal>faces-config.xml</literal>, in which we tell JSF to use
+          Facelets:
+      </para>
+      
+      <programlisting role="XML"><![CDATA[<?xml version='1.0' encoding='UTF-8'?>
+<faces-config version="1.2"
+              xmlns="http://java.sun.com/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
+    
+    <application>
+        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
+    </application>
+
+</faces-config>]]></programlisting>
+
+      <para>
+         There is an empty <literal>web-beans.xml</literal> file, which marks
+         this application as a Web Beans application.
+      </para>
+      
+      <para>
+         Finally there is <literal>web.xml</literal>:
+      </para>
+      
+      <programlistingco>
+         <areaspec>
+            <area id="faces.servlet" coords="12" />
+            <area id="faces.servlet.mapping" coords="18" />
+            <area id="faces.default.suffix" coords="23" />
+            <area id="session.timeout" coords="28" />
+            <area id="webbeans.listener" coords="32" />
+         </areaspec>
+         <programlisting><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app version="2.5"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+   
+   <display-name>Web Beans Numbergues example</display-name>
+
+   <!-- JSF -->
+
+   <servlet>
+      <servlet-name>Faces Servlet</servlet-name>
+      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+      <load-on-startup>1</load-on-startup>
+   </servlet>
+
+   <servlet-mapping>
+      <servlet-name>Faces Servlet</servlet-name>
+      <url-pattern>*.jsf</url-pattern>
+   </servlet-mapping>
+   
+   <context-param>
+      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+      <param-value>.xhtml</param-value>
+   </context-param>
+
+   <session-config>
+      <session-timeout>10</session-timeout>
+   </session-config>
+   
+    <listener>
+       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-class>
+    </listener>
+
+</web-app>]]></programlisting>
+         <calloutlist>
+            <callout arearefs="faces.servlet">
+               <para>
+                  Enable and load the JSF servlet
+               </para>
+            </callout>
+            <callout arearefs="faces.servlet.mapping">
+               <para>
+                  Configure requests to <literal>.jsf</literal> pages to be
+                  handled by JSF
+               </para>
+            </callout>
+            <callout arearefs="faces.default.suffix">
+               <para>
+                  Tell JSF that we will be giving our source files (facelets) an
+                  extension of <literal>.jsf</literal>
+               </para>
+            </callout>
+            <callout arearefs="session.timeout">
+               <para>
+                  Configure a session timeout of 10 minutes
+               </para>
+            </callout>
+            <callout arearefs="webbeans.listener">
+               <para>
+                  Configure the Web Beans listener, so that Web Beans services
+                  can be used in the servlet request
+               </para>
+            </callout>
+         </calloutlist>
+      </programlistingco>
+      
+      <note>
+         <para>
+            The only configuration required by the Web Beans RI in 
+            <literal>web.xml</literal> is to add the Web Beans listener.
+         </para>
+         <para>
+            Whilst this demo is a JSF demo, you can use the Web Beans RI with 
+            any Servlet based web framework; just configure the Web Beans 
+            listener.
+         </para>
+      </note>
+      
+      <para>
+         Let's take a look at the Facelet view:
+      </para>
+      
+      <programlistingco>
+         <areaspec>
+            <area id="template" coords="8" />
+            <area id="messages" coords="12" />
+            <area id="instructions" coords="19" />
+            <area id="guess" coords="25" />
+            <area id="validator" coords="30" />
+            <area id="submit" coords="33" />
+         </areaspec>
+         <programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    xmlns:s="http://jboss.com/products/seam/taglib">
+
+  <ui:composition template="template.xhtml">
+    <ui:define name="content">
+       <h1>Guess a number...</h1>
+       <h:form id="NumberGuessMain">
+          <div style="color: red">
+             <h:messages id="messages" globalOnly="false"/>
+             <h:outputText id="Higher" value="Higher!" rendered="#{game.number gt game.guess and game.guess ne 0}"/>
+             <h:outputText id="Lower" value="Lower!" rendered="#{game.number lt game.guess and game.guess ne 0}"/>
+          </div>
+   
+          <div>
+             I'm thinking of a number between #{game.smallest} and #{game.biggest}.
+             You have #{game.remainingGuesses} guesses.
+          </div>
+     
+          <div>
+             Your guess: 
+             <h:inputText id="inputGuess" 
+                          value="#{game.guess}" 
+                          required="true" 
+                          size="3" 
+                          disabled="#{game.number eq game.guess}">
+                <f:validateLongRange maximum="#{game.biggest}" 
+                                     minimum="#{game.smallest}"/>
+             </h:inputText>
+            <h:commandButton id="GuessButton"  
+                             value="Guess" 
+                             action="#{game.check}" 
+                             disabled="#{game.number eq game.guess}"/>
+          </div>
+          <div>
+            <h:commandButton id="RestartButton" value="Reset" action="#{game.reset}" immediate="true" />
+          </div>
+       </h:form>
+    </ui:define>
+  </ui:composition>
+</html>]]></programlisting>
+         <calloutlist>
+            <callout arearefs="template">
+               <para>
+                  Facelets is a templating language for JSF, here we are 
+                  wrapping our page in a template which defines the header.
+               </para>
+            </callout>
+            <callout arearefs="messages">
+               <para>
+                  There are a number of messages which can be sent to the user,
+                  "Higher!", "Lower!" and "Correct!"
+               </para>
+            </callout>
+            <callout arearefs="instructions">
+               <para>
+                  As the user guesses, the range of numbers they can guess gets
+                  smaller - this sentance changes to make sure they know what 
+                  range to guess in.
+               </para>
+            </callout>
+            <callout arearefs="guess">
+               <para>
+                  This input field is bound to a Web Bean, using the value
+                  expression.
+               </para>
+            </callout>
+            <callout arearefs="validator">
+               <para>
+                  A range validator is used to make sure the user doesn't
+                  accidentally input a number outside of the range in which they
+                  can guess - if the validator wasn't here, the user might use
+                  up a guess on an out of range number.
+               </para>
+            </callout>
+            <callout arearefs="submit">
+               <para>
+                  And, of course, there must be a way for the user to send their
+                  guess to the server. Here we bind to an action method on the
+                  Web Bean.
+               </para>
+            </callout>
+         </calloutlist>
+      </programlistingco>
+      
+      <para>
+         The example exists of 4 classes, the first two of which are binding
+         types. First, there is the <literal>@Random</literal> binding type, 
+         used for injecting a random number:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+public @interface Random {}]]></programlisting>
+
+      <para>
+         There is also the <literal>@MaxNumber</literal> binding type, used for
+         injecting the maximum number that can be injected:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })
+ at Retention(RUNTIME)
+ at Documented
+ at BindingType
+public @interface MaxNumber {}
+]]></programlisting>
+
+      <para>
+         The <literal>Generator</literal> class is responsible for creating the
+         random number, via a producer method. It also exposes the maximum
+         possible number via a producer method:
+      </para>
+
+      <programlisting role="JAVA"><![CDATA[@ApplicationScoped
+public class Generator {
+   
+   private java.util.Random random = new java.util.Random( System.currentTimeMillis() );
+   
+   private int maxNumber = 100;
+   
+   java.util.Random getRandom()
+   {
+      return random;
+   }
+   
+   @Produces @Random int next() { 
+      return getRandom().nextInt(maxNumber); 
+   }
+   
+   @Produces @MaxNumber int getMaxNumber()
+   {
+      return maxNumber;
+   }
+
+}]]></programlisting>
+
+      <para>
+         You'll notice that the <literal>Generator</literal> is application
+         scoped; therefore we don't get a different random each time.
+      </para>
+      
+      <para>
+         The final Web Bean in the application is the session scoped
+         <literal>Game</literal>.
+      </para>
+      
+      <para>
+         You'll note that we've used the <literal>@Named</literal> 
+         annotation, so that we can use the bean through EL in the JSF page.
+         Finally, we've used constructor injection to initialize the game with
+         a random number. And of course, we need to tell the player when they've
+         won, so we give feedback with a <literal>FacesMessage</literal>.
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[package org.jboss.webbeans.examples.numberguess;
+
+
+import javax.annotation.PostConstruct;
+import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.webbeans.AnnotationLiteral;
+import javax.webbeans.Current;
+import javax.webbeans.Initializer;
+import javax.webbeans.Named;
+import javax.webbeans.SessionScoped;
+import javax.webbeans.manager.Manager;
+
+ at Named
+ at SessionScoped
+public class Game
+{
+   private int number;
+   
+   private int guess;
+   private int smallest;
+   private int biggest;
+   private int remainingGuesses;
+   
+   @Current Manager manager;
+   
+   public Game()
+   {
+   }
+   
+   @Initializer
+   Game(@MaxNumber int maxNumber)
+   {      
+      this.biggest = maxNumber;
+   }
+
+   public int getNumber()
+   {
+      return number;
+   }
+   
+   public int getGuess()
+   {
+      return guess;
+   }
+   
+   public void setGuess(int guess)
+   {
+      this.guess = guess;
+   }
+   
+   public int getSmallest()
+   {
+      return smallest;
+   }
+   
+   public int getBiggest()
+   {
+      return biggest;
+   }
+   
+   public int getRemainingGuesses()
+   {
+      return remainingGuesses;
+   }
+   
+   public String check()
+   {
+      if (guess>number)
+      {
+         biggest = guess - 1;
+      }
+      if (guess<number)
+      {
+         smallest = guess + 1;
+      }
+      if (guess == number)
+      {
+         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Correct!"));
+      }
+      remainingGuesses--;
+      return null;
+   }
+   
+   @PostConstruct
+   public void reset()
+   {
+      this.smallest = 0;
+      this.guess = 0;
+      this.remainingGuesses = 10;
+      this.number = manager.getInstanceByType(Integer.class, new AnnotationLiteral<Random>(){});
+   }
+   
+}]]></programlisting>
+   </section>
+   
+   <section>
+      <title>The translator example</title>
+      
+      <para>
+         The translator example will take any sentences you enter, and translate
+         them to Latin.
+      </para>
+      
+      <para>
+         The translator example is built as an ear, and contains EJBs and 
+         enterprise beans. As a result, it's structure is more complex than
+         the numberguess example.
+      </para>
+      
+      <note>
+         <para>
+            EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will
+            make this structure much simpler!
+         </para>
+      </note>
+      
+      <para>
+         First, let's take a look at the ear aggregator, which is located in 
+         <literal>webbeans-translator-ear</literal> module. Maven automatically
+         generates the <literal>application.xml</literal> and 
+         <literal>jboss-app.xml</literal> for us:
+      </para>
+      
+      <programlisting role="XML"><![CDATA[<plugin>
+   <groupId>org.apache.maven.plugins</groupId>
+   <artifactId>maven-ear-plugin</artifactId>
+   <configuration>
+      <modules>
+         <webModule>
+            <groupId>org.jboss.webbeans.examples.translator</groupId>
+            <artifactId>webbeans-translator-war</artifactId>
+            <contextRoot>/webbeans-translator</contextRoot>
+         </webModule>
+      </modules>
+      <jboss>
+         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-repository>
+      </jboss>
+   </configuration>
+</plugin>]]></programlisting>
+
+      <para>
+         We're doing a couple of things here - firstly we set the context path,
+         which gives us a nice url 
+         (<ulink url="http://localhost:8080/webbeans-translator">http://localhost:8080/webbeans-translator</ulink>)
+         and we also enable class loader isolation for JBoss AS.
+      </para>
+      
+      <tip>
+         <para>
+            If you aren't using Maven to generate these files, you would need
+            <literal>META-INF/jboss-app.xml</literal>:
+         </para>
+
+         <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jboss-app
+    PUBLIC "-//JBoss//DTD J2EE Application 4.2//EN"
+    "http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd">
+<jboss-app>
+  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-repository>
+</jboss-app>]]></programlisting>
+
+         <para>
+            and <literal>META-INF/application.xml</literal>:
+         </para>
+         
+         <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://java.sun.com/xml/ns/javaee" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"
+             version="5">
+  <display-name>webbeans-translator-ear</display-name>
+  <description>Ear Example for the reference implementation of JSR 299: Web Beans</description>
+  
+  <module>
+    <web>
+      <web-uri>webbeans-translator.war</web-uri>
+      <context-root>/webbeans-translator</context-root>
+    </web>
+  </module>
+  <module>
+    <ejb>webbeans-translator.jar</ejb>
+  </module>
+</application>]]></programlisting>
+      </tip>
+      
+      <para>
+         Next, lets look at the war. Just as in the numberguess example, we have
+         a <literal>faces-config.xml</literal> (to enabled Facelets) and a 
+         <literal>web.xml</literal> (to enable JSF and attach Web Beans services
+         to the servlet container) in <literal>WebContent/WEB-INF</literal>.
+      </para>
+      
+      <para>
+         More intersting is the facelet used to translate text. Just as in
+         the numberguess example we have a template, which surrounds the form
+         (ommitted here for brevity):
+      </para>
+      
+      <programlisting role="XML"><![CDATA[<h:form id="NumberGuessMain">
+            
+   <table>
+      <tr align="center" style="font-weight: bold" >
+         <td>
+            Your text
+         </td>
+         <td>
+            Translation
+         </td>
+      </tr>
+      <tr>
+         <td>
+            <h:inputTextarea id="text" value="#{translator.text}" required="true" rows="5" cols="80" />
+         </td>
+         <td>
+            <h:outputText value="#{translator.translatedText}" />
+         </td>
+      </tr>
+   </table>
+   <div>
+      <h:commandButton id="button" value="Translate" action="#{translator.translate}"/>
+   </div>
+   
+</h:form>]]></programlisting>
+
+      <para>
+         The user can enter some text in the lefthand textarea, and hit the 
+         translate button to see the result to the right.
+      </para>
+      
+      <para>
+         Finally, let's look at the ejb module, 
+         <literal>webbeans-translator-ejb</literal>.
+         There are two configuration files in 
+         <literal>src/main/resources/META-INF</literal>, an empty
+         <literal>web-beans.xml</literal>, used to mark the archive as 
+         containing Web Beans, and <literal>ejb-jar.xml</literal>. Web Beans
+         provides injection and initializtion services for all EJBs, and uses 
+         <literal>ejb-jar.xml</literal> to enable this, you'll need this in any
+         EJB project which uses Web Beans:
+      </para>
+      
+      <programlisting role="XML"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0">
+         
+   <interceptors>
+     <interceptor>
+       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</interceptor-class>
+     </interceptor>
+   </interceptors>
+   
+   <assembly-descriptor>
+      <interceptor-binding>
+         <ejb-name>*</ejb-name>
+         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</interceptor-class>
+      </interceptor-binding>
+   </assembly-descriptor>
+   
+</ejb-jar>]]></programlisting>
+
+      <para>
+         We've saved the most interesting bit to last, the code! The project has
+         two simple beans, <literal>SentanceParser</literal> and
+         <literal>TextTranslator</literal> and two enterprise beans,
+         <literal>TanslatorControllerBean</literal> and 
+         <literal>SentenceTranslator</literal>. You should be getting quite
+         familiar with what a Web Bean looks like by now, so we'll just 
+         highlight the most interesting bits here.
+      </para>
+      
+      <para>
+         Both <literal>SentanceParser</literal> and 
+         <literal>TextTranslator</literal> are dependent beans, and 
+         <literal>TextTranslator</literal> uses constructor initialization:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[public class TextTranslator { 
+   private SentenceParser sentenceParser; 
+   private Translator sentenceTranslator; 
+   
+   @Initializer
+   TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) 
+   { 
+      this.sentenceParser = sentenceParser; 
+      this.sentenceTranslator = sentenceTranslator;]]></programlisting>
+      
+      <para>
+         <literal>TextTranslator</literal> is a stateless bean (with a local 
+         business interface), where the magic happens - of course, we couldn't 
+         develop a full translator, but we gave it a good go!
+      </para>
+      
+      <para>
+         Finally, there is UI orientated controller, that collects the text from
+         the user, and dispatches it to the translator. This is a request 
+         scoped, named, stateful session bean, which injects the translator.
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[@Stateful
+ at RequestScoped
+ at Named("translator")
+public class TranslatorControllerBean implements TranslatorController
+{
+   
+   @Current TextTranslator translator;]]></programlisting>
+   
+      <para>
+         The bean also has getters and setters for all the fields on the page.
+      </para>
+      
+      <para>
+         As this is a stateful session bean, we have to have a remove method:
+      </para>
+      
+      <programlisting role="JAVA"><![CDATA[   @Remove
+   public void remove()
+   {
+      
+   }]]></programlisting>
+   
+      <para>
+         The Web Beans manager will call the remove method for you when the bean
+         is destroyed; in this case at the end of the request.
+      </para>
+   </section>
+   
+   <para>
+      That concludes our short tour of the Web Beans RI examples. For more on 
+      the RI, or to help out, please visit 
+      <ulink url="http://www.seamframework.org/WebBeans/Development">http://www.seamframework.org/WebBeans/Development</ulink>.
+   </para>
+   
+   <para>
+      We need help in all areas - bug fixing, writing new features, writing
+      examples and translating this reference guide.
+   </para>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/ri.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/scopescontexts.xml (from rev 759, doc/trunk/reference/en-US/modules/scopescontexts.xml)
===================================================================
--- doc/trunk/reference/en-US/scopescontexts.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/scopescontexts.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,323 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="scopescontexts">
+  <title>Scopes and contexts</title>
+
+<para>So far, we've seen a few examples of <emphasis>scope type annotations</emphasis>. 
+The scope of a Web Bean determines the lifecycle of instances of the Web Bean. The 
+scope also determines which clients refer to which instances of the Web Bean. 
+According to the Web Beans specification, a scope determines:</para>
+
+<blockquote>
+<itemizedlist>
+  <listitem>
+    <para>When a new instance of any Web Bean with that scope is created</para>
+  </listitem>
+  <listitem>
+    <para>When an existing instance of any Web Bean with that scope is destroyed</para>
+  </listitem>
+  <listitem>
+    <para>Which injected references refer to any instance of a Web Bean with that scope</para>
+  </listitem>
+</itemizedlist>
+</blockquote>
+
+<para>For example, if we have a session scoped Web Bean, <literal>CurrentUser</literal>, 
+all Web Beans that are called in the context of the same <literal>HttpSession</literal> 
+will see the same instance of <literal>CurrentUser</literal>. This instance will be 
+automatically created the first time a <literal>CurrentUser</literal> is needed in that 
+session, and automatically destroyed when the session ends.</para>
+
+<section>
+  <title>Scope types</title>
+
+<para>Web Beans features an <emphasis>extensible context model</emphasis>. It is possible 
+to define new scopes by creating a new scope type annotation:</para>
+
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target({TYPE, METHOD})
+ at ScopeType
+public @interface ClusterScoped {}]]></programlisting>
+
+<para>Of course, that's the easy part of the job. For this scope type to be useful, we 
+will also need to define a <literal>Context</literal> object that implements the scope! 
+Implementing a <literal>Context</literal> is usually a very technical task, intended for 
+framework development only.</para>
+
+<para>We can apply a scope type annotation to a Web Bean implementation class to specify 
+the scope of the Web Bean:</para>
+
+<programlisting role="JAVA"><![CDATA[@ClusterScoped
+public class SecondLevelCache { ... }]]></programlisting>
+
+<!--  
+
+<para>We can even use the scope type to obtain an instance of the <literal>Context</literal> 
+object for the scope:</para>
+
+<programlisting><![CDATA[Bean<SecondLevelCache> cacheBean = manager.resolveByType(SecondLevelCache.class);
+SecondLevelCache cache = manager.getContext(ClusterScoped.class).get(cacheBean);]]></programlisting>
+
+-->
+
+<para>Usually, you'll use one of Web Beans' built-in scopes.</para>
+
+</section>
+
+<section>
+  <title>Built-in scopes</title>
+
+<para>Web Beans defines four built-in scopes:</para>
+
+<itemizedlist>
+  <listitem>
+    <para><literal>@RequestScoped</literal></para>
+  </listitem>
+  <listitem>
+    <para><literal>@SessionScoped</literal></para>
+  </listitem>
+  <listitem>
+    <para><literal>@ApplicationScoped</literal></para>
+  </listitem>
+  <listitem>
+    <para><literal>@ConversationScoped</literal></para>
+  </listitem>
+</itemizedlist>
+
+<para>For a web application that uses Web Beans:</para>
+
+<itemizedlist>
+  <listitem>
+    <para>any servlet request has access to active request, session and application 
+    scopes, and, additionally</para>
+  </listitem>
+  <listitem>
+    <para>any JSF request has access to an active conversation scope.</para>
+  </listitem>
+</itemizedlist>
+
+<para>The request and application scopes are also active:</para>
+
+<itemizedlist>
+  <listitem>
+    <para>during invocations of EJB remote methods,</para>
+  </listitem>
+  <listitem>
+    <para>during EJB timeouts,</para>
+  </listitem>
+  <listitem>
+    <para>during message delivery to a message-driven bean, and</para>
+  </listitem>
+  <listitem>
+    <para>during web service invocations.</para>
+  </listitem>
+</itemizedlist>
+
+<para>If the application tries to invoke a Web Bean with a scope that does not have 
+an active context, a <literal>ContextNotActiveException</literal> is thrown by the 
+Web Bean manager at runtime.</para>
+
+<para>Three of the four built-in scopes should be extremely familiar to every Java EE
+developer, so let's not waste time discussing them here. One of the scopes, however,
+is new.</para>
+
+</section>
+
+<section>
+  <title>The conversation scope</title>
+  
+  <para>The Web Beans conversation scope is a bit like the traditional session scope
+  in that it holds state associated with a user of the system, and spans multiple
+  requests to the server. However, unlike the session scope, the conversation scope:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>is demarcated explicitly by the application, and</para>
+    </listitem>
+    <listitem>
+      <para>holds state associated with a particular web browser tab in a JSF 
+      application.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>A conversation represents a task, a unit of work from the point of view
+  of the user. The conversation context holds state associated with what the user
+  is currently working on. If the user is doing multiple things at the same time,
+  there are multiple conversations.</para>
+  
+  <para>The conversation context is active during any JSF request. However, most
+  conversations are destroyed at the end of the request. If a conversation should
+  hold state across multiple requests, it must be explicitly promoted to a
+  <emphasis>long-running conversation</emphasis>.</para>
+  
+  <section>
+    <title>Conversation demarcation</title>
+  
+  <para>Web Beans provides a built-in Web Bean for controlling the lifecyle of
+  conversations in a JSF application. This Web Bean may be obtained by injection:</para>
+  
+  <programlisting role="JAVA">@Current Conversation conversation;</programlisting>
+  
+  <para>To promote the conversation associated with the current request to a 
+  long-running conversation, call the <literal>begin()</literal> method from
+  application code. To schedule the current long-running conversation context 
+  for destruction at the end of the current request, call <literal>end()</literal>.</para>
+
+  <para>In the following example, a conversation-scoped Web Bean controls the
+  conversation with which it is associated:</para>
+  
+<programlisting role="JAVA">@ConversationScoped @Stateful
+public class OrderBuilder {
+
+    private Order order;
+    private @Current Conversation conversation;
+    private @PersistenceContext(type=EXTENDED) EntityManager em;
+    
+    @Produces public Order getOrder() {
+        return order;
+    }
+
+    public Order createOrder() {
+        order = new Order();
+        conversation.begin();
+        return order;
+    }
+    
+    public void addLineItem(Product product, int quantity) {
+        order.add( new LineItem(product, quantity) );
+    }
+
+    public void saveOrder(Order order) {
+        em.persist(order);
+        conversation.end();
+    }
+    
+    @Remove
+    public void destroy() {}
+    
+}</programlisting>
+
+  <para>This Web Bean is able to control its own lifecycle through use of the
+  <literal>Conversation</literal> API. But some other Web Beans have a lifecycle
+  which depends completely upon another object.</para>
+
+  </section>
+  
+  <section>
+    <title>Conversation propagation</title>
+    
+    <para>The conversation context automatically propagates with any JSF faces 
+    request (JSF form submission). It does not automatically propagate with 
+    non-faces requests, for example, navigation via a link.</para>
+    
+    <para>We can force the conversation to propagate with a non-faces request
+    by including the unique identifier of the conversation as a request 
+    parameter. The Web Beans specification reserves the request parameter named
+    <literal>cid</literal> for this use. The unique identifier of the conversation
+    may be obtained from the <literal>Conversation</literal> object, which has
+    the Web Beans name <literal>conversation</literal>.</para>
+    
+    <para>Therefore, the following link propagates the conversation:</para>
+    
+    <programlisting role="HTML"><![CDATA[<a href="/addProduct.jsp?cid=#{conversation.id}">Add Product</a>]]></programlisting>
+    
+    <para>The Web Bean manager is also required to propagate conversations
+    across any redirect, even if the conversation is not marked long-running.
+    This makes it very easy to implement the common POST-then-redirect pattern,
+    without resort to fragile constructs such as a "flash" object. In this case,
+    the Web Bean manager automatically adds a request parameter to the redirect
+    URL.</para>
+        
+  </section>
+  
+  <section>
+    <title>Conversation timeout</title>
+    
+    <para>The Web Bean manager is permitted to destroy a conversation and all state
+    held in its context at any time in order to preserve resources. A Web Bean 
+    manager implementation will normally do this on the basis of some kind of 
+    timeout&#151;though this is not required by the Web Beans specification.
+    The timeout is the period of inactivity before the conversation is destroyed.</para>
+    
+    <para>The <literal>Conversation</literal> object provides a method to set
+    the timeout. This is a hint to the Web Bean manager, which is free to ignore
+    the setting.</para>
+    
+    <programlisting role="JAVA">conversation.setTimeout(timeoutInMillis);</programlisting>
+    
+  </section>
+  
+</section>
+
+<section>
+  <title>The dependent pseudo-scope</title>
+
+  <para>In addition to the four built-in scopes, Web Beans features the so-called 
+  <emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a Web Bean
+  which does not explicitly declare a scope type.</para>
+
+  <para>For example, this Web Bean has the scope type <literal>@Dependent</literal>:</para>
+
+<programlisting role="JAVA"><![CDATA[public class Calculator { ... }]]></programlisting>
+
+  <para>When an injection point of a Web Bean resolves to a dependent Web Bean,
+  a new instance of the dependent Web Bean is created every time the first
+  Web Bean is instantiated. Instances of dependent Web Beans are never shared
+  between different Web Beans or different injection points. They are
+  <emphasis>dependent objects</emphasis> of some other Web Bean instance.</para>
+  
+  <para>Dependent Web Bean instances are destroyed when the instance they
+  depend upon is destroyed.</para>
+  
+  <!--  
+  <para>Different clients always see different instances of a dependent Web Bean, no 
+  matter what context they execute in.</para>
+  -->
+  
+  <para>Web Beans makes it easy to obtain a dependent instance of a Java class
+  or EJB bean, even if the class or EJB bean is already declared as a Web Bean
+  with some other scope type.</para>
+
+<section>
+  <title>The <literal>@New</literal> annotation</title>
+
+<para>The built-in <literal>@New</literal> binding annotation allows 
+<emphasis>implicit</emphasis> definition of a dependent Web Bean at an injection point. 
+Suppose we declare the following injected field:</para>
+
+<programlisting role="JAVA"><![CDATA[@New Calculator calculator;]]></programlisting>
+
+<para>Then a Web Bean with scope <literal>@Dependent</literal>, binding type 
+<literal>@New</literal>, API type <literal>Calculator</literal>, implementation class 
+<literal>Calculator</literal> and deployment type <literal>@Standard</literal> is 
+implicitly defined.</para>
+
+<para>This is true even if <literal>Calculator</literal> is <emphasis>already</emphasis> 
+declared with a different scope type, for example:</para>
+
+<programlisting role="JAVA"><![CDATA[@ConversationScoped
+public class Calculator { ... }]]></programlisting>
+
+<para>So the following injected attributes each get a different instance of 
+<literal>Calculator</literal>:</para>
+
+<programlisting role="JAVA"><![CDATA[public class PaymentCalc {
+
+    @Current Calculator calculator;
+    @New Calculator newCalculator;
+
+}]]></programlisting>
+
+<para>The <literal>calculator</literal> field has a conversation-scoped instance 
+of <literal>Calculator</literal> injected. The <literal>newCalculator</literal> 
+field has a new instance of <literal>Calculator</literal> injected, with a lifecycle 
+that is bound to the owning <literal>PaymentCalc</literal>.</para>
+
+<para>This feature is particularly useful with producer methods, as we'll see in
+the next chapter.</para>
+
+</section>
+
+</section>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/scopescontexts.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/specialization.xml (from rev 759, doc/trunk/reference/en-US/modules/specialization.xml)
===================================================================
--- doc/trunk/reference/en-US/specialization.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/specialization.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,150 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="specialization">
+  <title>Specialization</title>
+  
+  <para>We've already seen how the Web Beans dependency injection model lets
+  us <emphasis>override</emphasis> the implementation of an API at deployment 
+  time. For example, the following enterprise Web Bean provides an implementation 
+  of the API <literal>PaymentProcessor</literal> in production:</para>
+  
+<programlisting role="JAVA">@CreditCard @Stateless
+public class CreditCardPaymentProcessor 
+        implements PaymentProcessor {
+    ...
+}</programlisting>
+
+  <para>But in our staging environment, we override that implementation of 
+  <literal>PaymentProcessor</literal> with a different Web Bean:</para>
+  
+<programlisting role="JAVA">@CreditCard @Stateless @Staging
+public class StagingCreditCardPaymentProcessor 
+        implements PaymentProcessor {
+    ...
+}</programlisting>
+
+  <para>What we've tried to do with <literal>StagingCreditCardPaymentProcessor</literal> 
+  is to completely replace <literal>AsyncPaymentProcessor</literal> in a particular
+  deployment of the system. In that deployment, the deployment type <literal>@Staging</literal>
+  would have a higher priority than the default deployment type <literal>@Production</literal>,
+  and therefore clients with the following injection point:</para>
+  
+<programlisting role="JAVA">@CreditCard PaymentProcessor ccpp</programlisting>
+
+  <para>Would receive an instance of <literal>StagingCreditCardPaymentProcessor</literal>.</para>
+
+  <para>Unfortunately, there are several traps we can easily fall into:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>the higher-priority Web Bean may not implement all the API types of
+      the Web Bean that it attempts to override,</para>
+    </listitem>
+    <listitem>
+      <para>the higher-priority Web Bean may not declare all the binding types of
+      the Web Bean that it attempts to override,</para>
+    </listitem>
+    <listitem>
+      <para>the higher-priority Web Bean might not have the same name as the Web 
+      Bean that it attempts to override, or</para>
+    </listitem>
+    <listitem>
+      <para>the Web Bean that it attempts to override might declare a producer
+      method, disposal method or observer method.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>In each of these cases, the Web Bean that we tried to override could still 
+  be called at runtime. Therefore, overriding is somewhat prone to developer error.</para>
+  
+  <para>Web Beans provides a special feature, called <emphasis>specialization</emphasis>,
+  that helps the developer avoid these traps. Specialization looks a little esoteric
+  at first, but it's easy to use in practice, and you'll really appreciate the extra
+  security it provides.</para>
+  
+  <section>
+    <title>Using specialization</title>
+  
+  <para>Specialization is a feature that is specific to simple and enterprise Web Beans.
+  To make use of specialization, the higher-priority Web Bean must:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>be a direct subclass of the Web Bean it overrides, and</para>
+    </listitem>
+    <listitem>
+      <para>be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or 
+      an enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, 
+      and</para>
+    </listitem>
+    <listitem>
+      <para>be annotated <literal>@Specializes</literal>.</para>
+    </listitem>
+  </itemizedlist>
+  
+<programlisting role="JAVA">@Stateless @Staging @Specializes
+public class StagingCreditCardPaymentProcessor 
+        extends CreditCardPaymentProcessor {
+    ...
+}</programlisting>
+
+  <para>We say that the higher-priority Web Bean <emphasis>specializes</emphasis> its
+  superclass.</para>
+  
+  </section>
+  
+  <section>
+    <title>Advantages of specialization</title>
+
+  <para>When specialization is used:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>the binding types of the superclass are automatically inherited by the
+      Web Bean annotated <literal>@Specializes</literal>, and</para>
+    </listitem>
+    <listitem>
+      <para>the Web Bean name of the superclass is automatically inherited by the 
+      Web Bean annotated <literal>@Specializes</literal>, and</para>
+    </listitem>
+    <listitem>
+      <para>producer methods, disposal methods and observer methods declared by the
+      superclass are called upon an instance of the Web Bean annotated 
+      <literal>@Specializes</literal>.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>In our example, the binding type <literal>@CreditCard</literal> of 
+  <literal>CreditCardPaymentProcessor</literal> is inherited by 
+  <literal>StagingCreditCardPaymentProcessor</literal>.</para>
+  
+  <para>Furthermore, the Web Bean manager will validate that:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>all API types of the superclass are API types of the Web Bean
+      annotated <literal>@Specializes</literal> (all local interfaces
+      of the superclass enterprise bean are also local interfaces of the
+      subclass),</para>
+    </listitem>
+    <listitem>
+      <para>the deployment type of the Web Bean annotated 
+      <literal>@Specializes</literal> has a higher precedence than the
+      deployment type of the superclass, and</para>
+    </listitem>
+    <listitem>
+      <para>there is no other enabled Web Bean that also specializes
+      the superclass.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>If any of these conditions are violated, the Web Bean manager throws
+  an exception at initialization time.</para>
+  
+  <para>Therefore, we can be certain that the superclass will <emphasis>never</emphasis>
+  be called in any deployment of the system where the Web Bean annotated 
+  <literal>@Specializes</literal> is deployed and enabled.</para>
+  
+  </section>
+  
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/specialization.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/stereotypes.xml (from rev 759, doc/trunk/reference/en-US/modules/stereotypes.xml)
===================================================================
--- doc/trunk/reference/en-US/stereotypes.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/stereotypes.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,179 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="stereotypes">
+  <title>Stereotypes</title>
+  
+  <para>According to the Web Beans specification:</para>
+  
+  <blockquote>
+  
+  <para>In many systems, use of architectural patterns produces a set of recurring Web 
+  Bean roles. A stereotype allows a framework developer to identify such a role and 
+  declare some common metadata for Web Beans with that role in a central place.</para>
+  
+  <para>A stereotype encapsulates any combination of:</para>
+  
+  <itemizedlist>
+    <listitem>
+      <para>a default deployment type,</para>
+    </listitem>
+    <listitem>
+      <para>a default scope type,</para>
+    </listitem>
+    <listitem>
+      <para>a restriction upon the Web Bean scope,</para>
+    </listitem>
+    <listitem>
+      <para>a requirement that the Web Bean implement or extend a certain type, and</para>
+    </listitem>
+    <listitem>
+      <para>a set of interceptor binding annotations.</para>
+    </listitem>
+  </itemizedlist>
+  
+  <para>A stereotype may also specify that all Web Beans with the stereotype have 
+  defaulted Web Bean names.</para>
+  
+  <para>A Web Bean may declare zero, one or multiple stereotypes.</para>
+  
+  </blockquote>
+  
+  <para>A stereotype is a Java annotation type. This stereotype identifies
+  action classes in some MVC framework:</para>
+  
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target(TYPE)
+ at Stereotype
+public @interface Action {}]]></programlisting>
+
+  <para>We use the stereotype by applying the annotation to a Web Bean.</para>
+  
+<programlisting role="JAVA"><![CDATA[@Action 
+public class LoginAction { ... }]]></programlisting>
+
+  <section>
+    <title>Default scope and deployment type for a stereotype</title>
+  
+    <para>A stereotype may specify a default scope and/or default deployment
+    type for Web Beans with that stereotype. For example, if the deployment
+    type <literal>@WebTier</literal> identifies Web Beans that should only
+    be deployed when the system executes as a web application, we might
+    specify the following defaults for action classes:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target(TYPE)
+ at RequestScoped
+ at WebTier
+ at Stereotype
+public @interface Action {}]]></programlisting>
+
+    <para>Of course, a particular action may still override these defaults
+    if necessary:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Dependent @Mock @Action 
+public class MockLoginAction { ... }]]></programlisting>
+
+    <para>If we want to force all actions to a particular scope, we can
+    do that too.</para>
+
+  </section>
+  
+  <section>
+    <title>Restricting scope and type with a stereotype</title>
+    
+    <para>Suppose that we wish to prevent actions from declaring certain
+    scopes. Web Beans lets us explicitly specify the set of allowed scopes
+    for Web Beans with a certain stereotype. For example:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target(TYPE)
+ at RequestScoped
+ at WebTier
+ at Stereotype(supportedScopes=RequestScoped.class)
+public @interface Action {}]]></programlisting>
+
+    <para>If a particular action class attempts to specify a scope other
+    than the Web Beans request scope, an exception will be thrown by the 
+    Web Bean manager at initialization time.</para>
+
+    <para>We can also force all Web Bean with a certain stereotype to
+    implement an interface or extend a class:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target(TYPE)
+ at RequestScoped
+ at WebTier
+ at Stereotype(requiredTypes=AbstractAction.class)
+public @interface Action {}]]></programlisting>
+
+    <para>If a particular action class does not extend the class
+    <literal>AbstractAction</literal>, an exception will be thrown by the 
+    Web Bean manager at initialization time.</para>
+
+  </section>
+  
+  <section>
+    <title>Interceptor bindings for stereotypes</title>
+    
+    <para>A stereotype may specify a set of interceptor bindings to be 
+    inherited by all Web Beans with that stereotype.</para>
+    
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target(TYPE)
+ at RequestScoped
+ at Transactional(requiresNew=true)
+ at Secure
+ at WebTier
+ at Stereotype
+public @interface Action {}]]></programlisting>
+
+    <para>This helps us get technical concerns even further away from the
+    business code!</para>
+
+  </section>
+  
+  <section>
+    <title>Name defaulting with stereotypes</title>
+    
+    <para>Finally, we can specify that all Web Beans with a certain stereotype
+    have a Web Bean name, defaulted by the Web Bean manager. Actions are often
+    referenced in JSP pages, so they're a perfect use case for this feature.
+    All we need to do is add an empty <literal>@Named</literal> annotation:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Retention(RUNTIME)
+ at Target(TYPE)
+ at RequestScoped
+ at Transactional(requiresNew=true)
+ at Secure
+ at Named
+ at WebTier
+ at Stereotype
+public @interface Action {}]]></programlisting>
+
+    <para>Now, <literal>LoginAction</literal> will have the name 
+    <literal>loginAction</literal>.</para>
+    
+  </section>
+  
+  <section>
+    <title>Standard stereotypes</title>
+    
+    <para>We've already met two standard stereotypes defined by the Web Beans
+    specification: <literal>@Interceptor</literal> and <literal>@Decorator</literal>.</para>
+    
+    <para>Web Beans defines one further standard stereotype:</para>
+    
+<programlisting role="JAVA"><![CDATA[@Named 
+ at RequestScoped 
+ at Stereotype 
+ at Target({TYPE, METHOD}) 
+ at Retention(RUNTIME) 
+public @interface Model {} ]]></programlisting>
+
+    <para>This stereotype is intended for use with JSF. Instead of using JSF
+    managed beans, just annotate a Web Bean <literal>@Model</literal>, and
+    use it directly in your JSF page.</para>
+    
+  </section>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/stereotypes.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/en-US/xml.xml (from rev 759, doc/trunk/reference/en-US/modules/xml.xml)
===================================================================
--- doc/trunk/reference/en-US/xml.xml	                        (rev 0)
+++ doc/trunk/reference/en-US/xml.xml	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,188 @@
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"  [ ]>
+
+<chapter id="xml">
+  <title>Defining Web Beans using XML</title>
+
+  <para>So far, we've seen plenty of examples of Web Beans declared using annotations.
+  However, there are a couple of occasions when we can't use annotations to define
+  the Web Bean:</para>
+
+  <itemizedlist>
+    <listitem>
+      <para>when the implementation class comes from some preexisting library, or</para>
+    </listitem>
+    <listitem>
+      <para>when there should be multiple Web Beans with the same implementation 
+      class.</para>
+    </listitem>
+  </itemizedlist>
+
+  <para>In either of these cases, Web Beans gives us two options:</para>
+
+  <itemizedlist>
+    <listitem><para>write a producer method, or</para></listitem>
+    <listitem><para>declare the Web Bean using XML.</para></listitem>
+  </itemizedlist>
+
+  <para>Many frameworks use XML to provide metadata relating to Java classes. However, 
+  Web Beans uses a very different approach to specifying the names of Java classes,
+  fields or methods to most other frameworks. Instead of writing class and member names
+  as the string values of XML elements and attributes, Web Beans lets you use the class
+  or member name as the name of the XML element.</para> 
+
+  <para>The advantage of this approach is that you can write an XML schema that prevents 
+  spelling errors in your XML document. It's even possible for a tool to generate the XML 
+  schema automatically from the compiled Java code. Or, an integrated development environment
+  could perform the same validation without the need for the explicit intermediate 
+  generation step.</para>
+
+<section>
+  <title>Declaring Web Bean classes</title>
+  
+  <para>For each Java package, Web Beans defines a corresponding XML namespace. The 
+  namespace is formed by prepending <literal>urn:java:</literal> to the Java package
+  name. For the package <literal>com.mydomain.myapp</literal>, the XML namespace is 
+  <literal>urn:java:com.mydomain.myapp</literal>.</para>
+
+  <para>Java types belonging to a package are referred to using an XML element in
+  the namespace corresponding to the package. The name of the element is the name
+  of the Java type. Fields and methods of the type are specified by child elements 
+  in the same namespace. If the type is an annotation, members are specified by
+  attributes of the element.</para>
+
+  <para>For example, the element <literal>&lt;util:Date/&gt;</literal> in the following
+  XML fragment refers to the class <literal>java.util.Date</literal>:</para>
+
+<programlisting role="XML"><![CDATA[<WebBeans xmlns="urn:java:javax.webbeans"
+          xmlns:util="urn:java:java.util">
+
+    <util:Date/>
+
+</WebBeans>]]></programlisting>
+
+  <para>And this is all the code we need to declare that <literal>Date</literal> is
+  a simple Web Bean! An instance of <literal>Date</literal> may now be injected by 
+  any other Web Bean:</para>
+
+<programlisting role="JAVA"><![CDATA[@Current Date date]]></programlisting>
+
+</section>
+
+<section>
+  <title>Declaring Web Bean metadata</title>
+
+  <para>We can declare the scope, deployment type and interceptor binding types 
+  using direct child elements of the Web Bean declaration:</para>
+
+<programlisting role="XML"><![CDATA[<myapp:ShoppingCart>
+    <SessionScoped/>
+    <myfwk:Transactional requiresNew="true"/>
+    <myfwk:Secure/>
+</myapp:ShoppingCart>]]></programlisting>
+
+  <para>We use exactly the same approach to specify names and binding type:</para>
+
+<programlisting role="XML"><![CDATA[<util:Date>
+    <Named>currentTime</Named>
+</util:Date>
+
+<util:Date>
+    <SessionScoped/>
+    <myapp:Login/>
+    <Named>loginTime</Named>
+</util:Date>
+
+<util:Date>
+    <ApplicationScoped/>
+    <myapp:SystemStart/>
+    <Named>systemStartTime</Named>
+</util:Date>]]></programlisting>
+
+  <para>Where <literal>@Login</literal> and <literal>@SystemStart</literal> are 
+  binding annotations types.</para>
+
+<programlisting role="JAVA"><![CDATA[@Current Date currentTime;
+ at Login Date loginTime;
+ at SystemStart Date systemStartTime;]]></programlisting>
+
+  <para>As usual, a Web Bean may support multiple binding types:</para>
+
+<programlisting role="XML"><![CDATA[<myapp:AsynchronousChequePaymentProcessor>
+    <myapp:PayByCheque/>
+    <myapp:Asynchronous/>
+</myapp:AsynchronousChequePaymentProcessor>]]></programlisting>
+
+  <para>Interceptors and decorators are just simple Web Beans, so they may be
+  declared just like any other simple Web Bean:</para>
+
+<programlisting role="XML"><![CDATA[<myfwk:TransactionInterceptor>
+    <Interceptor/>
+    <myfwk:Transactional/>
+</myfwk:TransactionInterceptor>]]></programlisting>
+
+</section>
+
+<section>
+  <title>Declaring Web Bean members</title>
+  
+  <para>
+   TODO!
+  </para>
+  
+</section>
+
+<section>
+  <title>Declaring inline Web Beans</title>
+  
+  <para>Web Beans lets us define a Web Bean at an injection point. For example:</para>
+  
+<programlisting role="XML"><![CDATA[<myapp:System>
+    <ApplicationScoped/>
+    <myapp:admin>
+        <myapp:Name>
+            <myapp:firstname>Gavin</myapp:firstname>
+            <myapp:lastname>King</myapp:lastname>
+            <myapp:email>gavin at hibernate.org</myapp:email>
+        </myapp:Name>
+    </myapp:admin>
+</myapp:System>]]></programlisting>
+
+  <para>The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of 
+  scope <literal>@Dependent</literal> and class <literal>Name</literal>, with a
+  set of initial field values. This Web Bean has a special, container-generated
+  binding and is therefore injectable only to the specific injection point at
+  which it is declared.</para>
+  
+  <para>This simple but powerful feature allows the Web Beans XML format to be
+  used to specify whole graphs of Java objects. It's not quite a full databinding
+  solution, but it's close!</para> 
+ 
+</section>
+
+<section>
+  <title>Using a schema</title>
+
+  <para>If we want our XML document format to be authored by people who aren't
+  Java developers, or who don't have access to our code, we need to provide
+  a schema. There's nothing specific to Web Beans about writing or using the
+  schema.</para>
+  
+<programlisting role="XML"><![CDATA[<WebBeans xmlns="urn:java:javax.webbeans"
+          xmlns:myapp="urn:java:com.mydomain.myapp"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="urn:java:javax.webbeans http://java.sun.com/jee/web-beans-1.0.xsd
+                              urn:java:com.mydomain.myapp http://mydomain.com/xsd/myapp-1.2.xsd">
+
+    <myapp:System>
+        ...
+    </myapp:System>
+
+</WebBeans>]]></programlisting>
+
+  <para>Writing an XML schema is quite tedious. Therefore, the Web Beans RI project 
+  will provide a tool which automatically generates the XML schema from compiled Java 
+  code.</para>  
+
+</section>
+
+</chapter>
\ No newline at end of file


Property changes on: doc/trunk/reference/en-US/xml.xml
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/es-ES/Author_Group.po
===================================================================
--- doc/trunk/reference/es-ES/Author_Group.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/Author_Group.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,60 @@
+# Language es-ES translations for Introduction_to_Web_Beans package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Introduction_to_Web_Beans VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-04 23:18+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:4
+#, no-c-format
+msgid "<firstname>Gavin</firstname> <surname>King</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red Hat "
+"Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: author
+#: Author_Group.xml:12
+#, no-c-format
+msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:15
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) Reference Implementation lead </jobtitle> "
+"<orgname>Red Hat Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:21
+#, no-c-format
+msgid "<firstname>Nicola</firstname> <surname>Benaglia</surname>"
+msgstr ""
+
+#. Tag: contrib
+#: Author_Group.xml:24 Author_Group.xml:29
+#, no-c-format
+msgid "Italian Translation"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:26
+#, no-c-format
+msgid "<firstname>Francesco</firstname> <surname>Milesi</surname>"
+msgstr ""

Copied: doc/trunk/reference/es-ES/Book_Info.po (from rev 638, doc/trunk/reference/es-ES/modules/Book_Info.po)
===================================================================
--- doc/trunk/reference/es-ES/Book_Info.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/Book_Info.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,28 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:29+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:4
+#, no-c-format
+msgid "Introduction to Web Beans"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:5
+#, no-c-format
+msgid ""
+"The new Java standard for dependency injection and contextual state "
+"management"
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/Book_Info.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/decorators.po (from rev 638, doc/trunk/reference/es-ES/modules/decorators.po)
===================================================================
--- doc/trunk/reference/es-ES/decorators.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/decorators.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,243 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: decorators.xml:4
+#, no-c-format
+msgid "Decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:6
+#, no-c-format
+msgid ""
+"Interceptors are a powerful way to capture and separate concerns which are "
+"<emphasis>orthogonal</emphasis> to the type system. Any interceptor is able "
+"to intercept invocations of any Java type. This makes them perfect for "
+"solving technical concerns such as transaction management and security. "
+"However, by nature, interceptors are unaware of the actual semantics of the "
+"events they intercept. Thus, interceptors aren't an appropriate tool for "
+"separating business-related concerns."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:14
+#, no-c-format
+msgid ""
+"The reverse is true of <emphasis>decorators</emphasis>. A decorator "
+"intercepts invocations only for a certain Java interface, and is therefore "
+"aware of all the semantics attached to that interface. This makes decorators "
+"a perfect tool for modeling some kinds of business concerns. It also means "
+"that a decorator doesn't have the generality of an interceptor. Decorators "
+"aren't able to solve technical concerns that cut across many disparate types."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:22
+#, no-c-format
+msgid "Suppose we have an interface that represents accounts:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:24
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Account {\n"
+"    public BigDecimal getBalance();\n"
+"    public User getOwner();\n"
+"    public void withdraw(BigDecimal amount);\n"
+"    public void deposit(BigDecimal amount);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:26
+#, no-c-format
+msgid ""
+"Several different Web Beans in our system implement the <literal>Account</"
+"literal> interface. However, we have a common legal requirement that, for "
+"any kind of account, large transactions must be recorded by the system in a "
+"special log. This is a perfect job for a decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:32
+#, no-c-format
+msgid ""
+"A decorator is a simple Web Bean that implements the type it decorates and "
+"is annotated <literal>@Decorator</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Decorator\n"
+"public abstract class LargeTransactionDecorator \n"
+"        implements Account {\n"
+"    \n"
+"    @Decorates Account account;\n"
+"    \n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    public void withdraw(BigDecimal amount) {\n"
+"        account.withdraw(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedWithdrawl(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"    public void deposit(BigDecimal amount);\n"
+"        account.deposit(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedDeposit(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:37
+#, no-c-format
+msgid ""
+"Unlike other simple Web Beans, a decorator may be an abstract class. If "
+"there's nothing special the decorator needs to do for a particular method of "
+"the decorated interface, you don't need to implement that method."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:43
+#, no-c-format
+msgid "Delegate attributes"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:45
+#, no-c-format
+msgid ""
+"All decorators have a <emphasis>delegate attribute</emphasis>. The type and "
+"binding types of the delegate attribute determine which Web Beans the "
+"decorator is bound to. The delegate attribute type must implement or extend "
+"all interfaces implemented by the decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:50
+#, no-c-format
+msgid ""
+"This delegate attribute specifies that the decorator is bound to all Web "
+"Beans that implement <literal>Account</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:53
+#, no-c-format
+msgid "<![CDATA[@Decorates Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:55
+#, no-c-format
+msgid ""
+"A delegate attribute may specify a binding annotation. Then the decorator "
+"will only be bound to Web Beans with the same binding."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:58
+#, no-c-format
+msgid "<![CDATA[@Decorates @Foreign Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:60
+#, no-c-format
+msgid "A decorator is bound to any Web Bean which:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:64
+#, no-c-format
+msgid "has the type of the delegate attribute as an API type, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:67
+#, no-c-format
+msgid "has all binding types that are declared by the delegate attribute."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:71
+#, no-c-format
+msgid ""
+"The decorator may invoke the delegate attribute, which has much the same "
+"effect as calling <literal>InvocationContext.proceed()</literal> from an "
+"interceptor."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:78
+#, no-c-format
+msgid "Enabling decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:80
+#, no-c-format
+msgid ""
+"We need to <emphasis>enable</emphasis> our decorator in <literal>web-beans."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:83
+#, no-c-format
+msgid ""
+"<![CDATA[<Decorators>\n"
+"    <myapp:LargeTransactionDecorator/>\n"
+"</Decorators>]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:85
+#, no-c-format
+msgid ""
+"This declaration serves the same purpose for decorators that the "
+"<literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:90
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all decorators in our system, "
+"ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:94
+#, no-c-format
+msgid "it lets us enable or disable decorator classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:98
+#, no-c-format
+msgid ""
+"Interceptors for a method are called before decorators that apply to that "
+"method."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/decorators.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/ee.po (from rev 638, doc/trunk/reference/es-ES/modules/ee.po)
===================================================================
--- doc/trunk/reference/es-ES/ee.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/ee.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,329 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ee.xml:4
+#, no-c-format
+msgid "Java EE integration"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is fully integrated into the Java EE environment. Web Beans have "
+"access to Java EE resources and JPA persistence contexts. They may be used "
+"in Unified EL expressions in JSF and JSP pages. They may even be injected "
+"into some objects, such as Servlets and Message-Driven Beans, which are not "
+"Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:12
+#, no-c-format
+msgid "Injecting Java EE resources into a Web Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:14
+#, no-c-format
+msgid ""
+"All simple and enterprise Web Beans may take advantage of Java EE dependency "
+"injection using <literal>@Resource</literal>, <literal>@EJB</literal> and "
+"<literal>@PersistenceContext</literal>. We've already seen a couple of "
+"examples of this, though we didn't pay much attention at the time:"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:19
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"    \n"
+"    ...\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:23
+#, no-c-format
+msgid ""
+"The Java EE <literal>@PostConstruct</literal> and <literal>@PreDestroy</"
+"literal> callbacks are also supported for all simple and enterprise Web "
+"Beans. The <literal>@PostConstruct</literal> method is called after "
+"<emphasis>all</emphasis> injection has been performed."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:28
+#, no-c-format
+msgid ""
+"There is one restriction to be aware of here: <literal>@PersistenceContext"
+"(type=EXTENDED)</literal> is not supported for simple Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:35
+#, no-c-format
+msgid "Calling a Web Bean from a Servlet"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:37
+#, no-c-format
+msgid ""
+"It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject the "
+"Web Bean using Web Beans field or initializer method injection."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:40
+#, no-c-format
+msgid ""
+"public class Login extends HttpServlet {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @Current Login login;\n"
+"\n"
+"    @Override\n"
+"    public void service(HttpServletRequest request, HttpServletResponse "
+"response)\n"
+"        throws ServletException, IOException {\n"
+"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
+"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
+"        login.login();\n"
+"        if ( login.isLoggedIn() ) {\n"
+"            response.sendRedirect(\"/home.jsp\");\n"
+"        }\n"
+"        else {\n"
+"            response.sendRedirect(\"/loginError.jsp\");\n"
+"        }\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:42
+#, no-c-format
+msgid ""
+"The Web Beans client proxy takes care of routing method invocations from the "
+"Servlet to the correct instances of <literal>Credentials</literal> and "
+"<literal>Login</literal> for the current request and HTTP session."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:49
+#, no-c-format
+msgid "Calling a Web Bean from a Message-Driven Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:51
+#, no-c-format
+msgid ""
+"Web Beans injection applies to all EJBs, even when they aren't under the "
+"control of the Web Bean manager (if they were obtained by direct JNDI "
+"lookup, or injection using <literal>@EJB</literal>, for example. In "
+"particular, you can use Web Beans injection in Message-Driven Beans, which "
+"are not considered Web Beans because you can't inject them."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:57
+#, no-c-format
+msgid ""
+"You can even use Web Beans interceptor bindings for Message-Driven Beans."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:59
+#, no-c-format
+msgid ""
+"@Transactional @MessageDriven\n"
+"public class ProcessOrder implements MessageListener {\n"
+"\n"
+"    @Current Inventory inventory;\n"
+"    @PersistenceContext EntityManager em;\n"
+"\n"
+"    public void onMessage(Message message) {\n"
+"        ...\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:61
+#, no-c-format
+msgid ""
+"Thus, receiving messages is super-easy in a Web Beans environment. But "
+"beware that there is no session or conversation context available when a "
+"message is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</"
+"literal> and <literal>@ApplicationScoped</literal> Web Beans are available."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:66
+#, no-c-format
+msgid "It's also easy to send messages using Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:71
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:73
+#, no-c-format
+msgid ""
+"Sending messages using JMS can be quite complex, because of the number of "
+"different objects you need to deal with. For queues we have <literal>Queue</"
+"literal>, <literal>QueueConnectionFactory</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> and "
+"<literal>QueueSender</literal>. For topics we have <literal>Topic</literal>, "
+"<literal>TopicConnectionFactory</literal>, <literal>TopicConnection</"
+"literal>, <literal>TopicSession</literal> and <literal>TopicPublisher</"
+"literal>. Each of these objects has its own lifecycle and threading model "
+"that we need to worry about."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:82
+#, no-c-format
+msgid ""
+"Web Beans takes care of all this for us. All we need to do is declare the "
+"queue or topic in <literal>web-beans.xml</literal>, specifying an associated "
+"binding type and connection factory."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:86
+#, no-c-format
+msgid ""
+"<![CDATA[<Queue>\n"
+"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
+"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:OrderProcessor/>    \n"
+"</Queue>]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:88
+#, no-c-format
+msgid ""
+"<![CDATA[<Topic>\n"
+"    <destination>java:comp/env/jms/StockPrices</destination>\n"
+"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:StockPrices/>    \n"
+"</Topic>]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:90
+#, no-c-format
+msgid ""
+"Now we can just inject the <literal>Queue</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> or "
+"<literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, "
+"<literal>TopicConnection</literal>, <literal>TopicSession</literal> or "
+"<literal>TopicPublisher</literal> for a topic."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:96
+#, no-c-format
+msgid ""
+"@OrderProcessor QueueSender orderSender;\n"
+"@OrderProcessor QueueSession orderSession;\n"
+"\n"
+"public void sendMessage() {\n"
+"    MapMessage msg = orderSession.createMapMessage();\n"
+"    ...\n"
+"    orderSender.send(msg);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:98
+#, no-c-format
+msgid ""
+"@StockPrices TopicPublisher pricePublisher;\n"
+"@StockPrices TopicSession priceSession;\n"
+"\n"
+"public void sendMessage(String price) {\n"
+"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:100
+#, no-c-format
+msgid ""
+"The lifecycle of the injected JMS objects is completely controlled by the "
+"Web Bean manager."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:106
+#, no-c-format
+msgid "Packaging and deployment"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:108
+#, no-c-format
+msgid ""
+"Web Beans doesn't define any special deployment archive. You can package Web "
+"Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the "
+"application classpath. However, each archive that contains Web Beans must "
+"include a file named <literal>web-beans.xml</literal> in the <literal>META-"
+"INF</literal> or <literal>WEB-INF</literal> directory. The file may be "
+"empty. Web Beans deployed in archives that do not have a <literal>web-beans."
+"xml</literal> file will not be available for use in the application."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:116
+#, no-c-format
+msgid ""
+"For Java SE execution, Web Beans may be deployed in any location in which "
+"EJBs may be deployed for execution by the embeddable EJB Lite container. "
+"Again, each location must contain a <literal>web-beans.xml</literal> file."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/ee.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/events.po (from rev 638, doc/trunk/reference/es-ES/modules/events.po)
===================================================================
--- doc/trunk/reference/es-ES/events.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/events.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,649 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: events.xml:4
+#, no-c-format
+msgid "Events"
+msgstr ""
+
+#. Tag: para
+#: events.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans event notification facility allows Web Beans to interact in a "
+"totally decoupled manner. Event <emphasis>producers</emphasis> raise events "
+"that are then delivered to event <emphasis>observers</emphasis> by the Web "
+"Bean manager. This basic schema might sound like the familiar observer/"
+"observable pattern, but there are a couple of twists:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:14
+#, no-c-format
+msgid ""
+"not only are event producers decoupled from observers; observers are "
+"completely decoupled from producers,"
+msgstr ""
+
+#. Tag: para
+#: events.xml:18
+#, no-c-format
+msgid ""
+"observers can specify a combination of \"selectors\" to narrow the set of "
+"event notifications they will receive, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:22
+#, no-c-format
+msgid ""
+"observers can be notified immediately, or can specify that delivery of the "
+"event should be delayed until the end of the current transaction"
+msgstr ""
+
+#. Tag: title
+#: events.xml:28
+#, no-c-format
+msgid "Event observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:30
+#, no-c-format
+msgid ""
+"An <emphasis>observer method</emphasis> is a method of a Web Bean with a "
+"parameter annotated <literal>@Observes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:33
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:35
+#, no-c-format
+msgid ""
+"The annotated parameter is called the <emphasis>event parameter</emphasis>. "
+"The type of the event parameter is the observed <emphasis>event type</"
+"emphasis>. Observer methods may also specify \"selectors\", which are just "
+"instances of Web Beans binding types. When a binding type is used as an "
+"event selector, it is called an <emphasis>event binding type</emphasis>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Updated { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:43
+#, no-c-format
+msgid ""
+"We specify the event bindings of the observer method by annotating the event "
+"parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:46 events.xml:190
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:48
+#, no-c-format
+msgid ""
+"An observer method need not specify any event bindings&#151;in this case it "
+"is interested in <emphasis>all</emphasis> events of a particular type. If it "
+"does specify event bindings, it is only interested in events which also have "
+"those event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:53
+#, no-c-format
+msgid ""
+"The observer method may have additional parameters, which are injected "
+"according to the usual Web Beans method parameter injection semantics:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document, User user) { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:61
+#, no-c-format
+msgid "Event producers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:63
+#, no-c-format
+msgid ""
+"The event producer may obtain an <emphasis>event notifier</emphasis> object "
+"by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:66
+#, no-c-format
+msgid "<![CDATA[@Observable Event<Document> documentEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:68
+#, no-c-format
+msgid ""
+"The <literal>@Observable</literal> annotation implicitly defines a Web Bean "
+"with scope <literal>@Dependent</literal> and deployment type "
+"<literal>@Standard</literal>, with an implementation provided by the Web "
+"Bean manager."
+msgstr ""
+
+#. Tag: para
+#: events.xml:72
+#, no-c-format
+msgid ""
+"A producer raises events by calling the <literal>fire()</literal> method of "
+"the <literal>Event</literal> interface, passing an <emphasis>event object</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:75
+#, no-c-format
+msgid "<![CDATA[documentEvent.fire(document);]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:77
+#, no-c-format
+msgid ""
+"An event object may be an instance of any Java class that has no type "
+"variables or wildcard type parameters. The event will be delivered to every "
+"observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:83 events.xml:107 events.xml:126
+#, no-c-format
+msgid "has an event parameter to which the event object is assignable, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:86
+#, no-c-format
+msgid "specifies no event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:90
+#, no-c-format
+msgid ""
+"The Web Bean manager simply calls all the observer methods, passing the "
+"event object as the value of the event parameter. If any observer method "
+"throws an exception, the Web Bean manager stops calling observer methods, "
+"and the exception is rethrown by the <literal>fire()</literal> method."
+msgstr ""
+
+#. Tag: para
+#: events.xml:95
+#, no-c-format
+msgid ""
+"To specify a \"selector\", the event producer may pass an instance of the "
+"event binding type to the <literal>fire()</literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>()"
+"{} );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:100
+#, no-c-format
+msgid ""
+"The helper class <literal>AnnotationLiteral</literal> makes it possible to "
+"instantiate binding types inline, since this is otherwise difficult to do in "
+"Java."
+msgstr ""
+
+#. Tag: para
+#: events.xml:103
+#, no-c-format
+msgid "The event will be delivered to every observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:110
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal>."
+msgstr ""
+
+#. Tag: para
+#: events.xml:115
+#, no-c-format
+msgid ""
+"Alternatively, event bindings may be specified by annotating the event "
+"notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:118
+#, no-c-format
+msgid "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:120
+#, no-c-format
+msgid ""
+"Then every event fired via this instance of <literal>Event</literal> has the "
+"annotated event binding. The event will be delivered to every observer "
+"method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:129
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal> or the annotated event bindings "
+"of the event notifier injection point."
+msgstr ""
+
+#. Tag: title
+#: events.xml:138
+#, no-c-format
+msgid "Registering observers dynamically"
+msgstr ""
+
+#. Tag: para
+#: events.xml:140
+#, no-c-format
+msgid ""
+"It's often useful to register an event observer dynamically. The application "
+"may implement the <literal>Observer</literal> interface and register an "
+"instance with an event notifier by calling the <literal>observe()</literal> "
+"method."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:144
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } } );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:146
+#, no-c-format
+msgid ""
+"Event binding types may be specified by the event notifier injection point "
+"or by passing event binding type instances to the <literal>observe()</"
+"literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:149
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } }, \n"
+"                                                new "
+"AnnotationLiteral<Updated>(){} );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:154
+#, no-c-format
+msgid "Event bindings with members"
+msgstr ""
+
+#. Tag: para
+#: events.xml:156
+#, no-c-format
+msgid "An event binding type may have annotation members:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:158
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Role {\n"
+"    RoleType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:160
+#, no-c-format
+msgid ""
+"The member value is used to narrow the messages delivered to the observer:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:164
+#, no-c-format
+msgid ""
+"Event binding type members may be specified statically by the event "
+"producer, via annotations at the event notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:167
+#, no-c-format
+msgid "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:169
+#, no-c-format
+msgid ""
+"Alternatively, the value of the event binding type member may be determined "
+"dynamically by the event producer. We start by writing an abstract subclass "
+"of <literal>AnnotationLiteral</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:172
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class RoleBinding \n"
+"    extends AnnotationLiteral<Role> \n"
+"    implements Role {}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:174
+#, no-c-format
+msgid ""
+"The event producer passes an instance of this class to <literal>fire()</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value"
+"() { return user.getRole(); } } );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:181
+#, no-c-format
+msgid "Multiple event bindings"
+msgstr ""
+
+#. Tag: para
+#: events.xml:183
+#, no-c-format
+msgid "Event binding types may be combined, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:185
+#, no-c-format
+msgid ""
+"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
+"...\n"
+"if (document.isBlog()) blogEvent.fire(document, new "
+"AnnotationLiteral<Updated>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:187
+#, no-c-format
+msgid ""
+"When this event occurs, all of the following observer methods will be "
+"notified:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:189
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:191
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:192
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }}}]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:197
+#, no-c-format
+msgid "Transactional observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:199
+#, no-c-format
+msgid ""
+"Transactional observers receive their event notifications during the before "
+"or after completion phase of the transaction in which the event was raised. "
+"For example, the following observer method needs to refresh a query result "
+"set that is cached in the application context, but only when transactions "
+"that update the <literal>Category</literal> tree succeed:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:205
+#, no-c-format
+msgid ""
+"<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes "
+"CategoryUpdateEvent event) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:207
+#, no-c-format
+msgid "There are three kinds of transactional observers:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:211
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionSuccess</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction "
+"completes successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:216
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionFailure</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction fails "
+"to complete successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:221
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionCompletion</literal> observers are called during "
+"the after completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:225
+#, no-c-format
+msgid ""
+"<literal>@BeforeTransactionCompletion</literal> observers are called during "
+"the before completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:230
+#, no-c-format
+msgid ""
+"Transactional observers are very important in a stateful object model like "
+"Web Beans, because state is often held for longer than a single atomic "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: events.xml:233
+#, no-c-format
+msgid ""
+"Imagine that we have cached a JPA query result set in the application scope:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:235
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    List<Product> products;\n"
+"\n"
+"    @Produces @Catalog \n"
+"    List<Product> getCatalog() {\n"
+"        if (products==null) {\n"
+"            products = em.createQuery(\"select p from Product p where p."
+"deleted = false\")\n"
+"                .getResultList();\n"
+"        }\n"
+"        return products;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:237
+#, no-c-format
+msgid ""
+"From time to time, a <literal>Product</literal> is created or deleted. When "
+"this occurs, we need to refresh the <literal>Product</literal> catalog. But "
+"we should wait until <emphasis>after</emphasis> the transaction completes "
+"successfully before performing this refresh!"
+msgstr ""
+
+#. Tag: para
+#: events.xml:242
+#, no-c-format
+msgid ""
+"The Web Bean that creates and deletes <literal>Product</literal>s could "
+"raise events, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:245
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class ProductManager {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    @Observable Event<Product> productEvent;\n"
+"\n"
+"    public void delete(Product product) {\n"
+"        em.delete(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
+"    }\n"
+"    \n"
+"    public void persist(Product product) {\n"
+"        em.persist(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:247
+#, no-c-format
+msgid ""
+"And now <literal>Catalog</literal> can observe the events after successful "
+"completion of the transaction:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:250
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Created Product "
+"product) {\n"
+"        products.add(product);\n"
+"    }\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product "
+"product) {\n"
+"        products.remove(product);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/events.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/example.po (from rev 638, doc/trunk/reference/es-ES/modules/example.po)
===================================================================
--- doc/trunk/reference/es-ES/example.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/example.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,172 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example.xml:4
+#, no-c-format
+msgid "JSF web application example"
+msgstr ""
+
+#. Tag: para
+#: example.xml:6
+#, no-c-format
+msgid ""
+"Let's illustrate these ideas with a full example. We're going to implement "
+"user login/logout for an application that uses JSF. First, we'll define a "
+"Web Bean to hold the username and password entered during login:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:11
+#, no-c-format
+msgid ""
+"<![CDATA[@Named @RequestScoped\n"
+"public class Credentials {\n"
+"        \n"
+"    private String username;\n"
+"    private String password;\n"
+"    \n"
+"    public String getUsername() { return username; }\n"
+"    public void setUsername(String username) { this.username = username; }\n"
+"    \n"
+"    public String getPassword() { return password; }\n"
+"    public void setPassword(String password) { this.password = password; }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:13
+#, no-c-format
+msgid "This Web Bean is bound to the login prompt in the following JSF form:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:15
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form>\n"
+"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
+"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
+"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
+"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
+"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
+"    </h:panelGrid>\n"
+"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!"
+"login.loggedIn}\"/>\n"
+"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#"
+"{login.loggedIn}\"/>\n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:17
+#, no-c-format
+msgid ""
+"The actual work is done by a session scoped Web Bean that maintains "
+"information about the currently logged-in user and exposes the "
+"<literal>User</literal> entity to other Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"\n"
+"    private User user;\n"
+"    \n"
+"    public void login() {\n"
+"            \n"
+"        List<User> results = userDatabase.createQuery(\n"
+"           \"select u from User u where u.username=:username and u.password=:"
+"password\")\n"
+"           .setParameter(\"username\", credentials.getUsername())\n"
+"           .setParameter(\"password\", credentials.getPassword())\n"
+"           .getResultList();\n"
+"        \n"
+"        if ( !results.isEmpty() ) {\n"
+"           user = results.get(0);\n"
+"        }\n"
+"        \n"
+"    }\n"
+"    \n"
+"    public void logout() {\n"
+"        user = null;\n"
+"    }\n"
+"    \n"
+"    public boolean isLoggedIn() {\n"
+"       return user!=null;\n"
+"    }\n"
+"    \n"
+"    @Produces @LoggedIn User getCurrentUser() {\n"
+"        return user;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:23
+#, no-c-format
+msgid "Of course, <literal>@LoggedIn</literal> is a binding annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:25
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD})\n"
+"@BindingType\n"
+"public @interface LoggedIn {}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:27
+#, no-c-format
+msgid "Now, any other Web Bean can easily inject the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class DocumentEditor {\n"
+"\n"
+"    @Current Document document;\n"
+"    @LoggedIn User currentUser;\n"
+"    @PersistenceContext EntityManager docDatabase;\n"
+"    \n"
+"    public void save() {\n"
+"        document.setCreatedBy(currentUser);\n"
+"        docDatabase.persist(document);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:31
+#, no-c-format
+msgid ""
+"Hopefully, this example gives a flavor of the Web Bean programming model. In "
+"the next chapter, we'll explore Web Beans dependency injection in greater "
+"depth."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/example.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/extend.po (from rev 638, doc/trunk/reference/es-ES/modules/extend.po)
===================================================================
--- doc/trunk/reference/es-ES/extend.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/extend.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,252 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: extend.xml:4
+#, no-c-format
+msgid "Extending Web Beans"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is intended to be a platform for frameworks, extensions and "
+"integration with other technologies. Therefore, Web Beans exposes a set of "
+"SPIs for the use of developers of portable extensions to Web Beans. For "
+"example, the following kinds of extensions were envisaged by the designers "
+"of Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:14
+#, no-c-format
+msgid "integration with Business Process Management engines,"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:17
+#, no-c-format
+msgid ""
+"integration with third-party frameworks such as Spring, Seam, GWT or Wicket, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:21
+#, no-c-format
+msgid "new technology based upon the Web Beans programming model."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:25
+#, no-c-format
+msgid ""
+"The nerve center for extending Web Beans is the <literal>Manager</literal> "
+"object."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:29
+#, no-c-format
+msgid "The <literal>Manager</literal> object"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:31
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> interface lets us register and obtain Web "
+"Beans, interceptors, decorators, observers and contexts programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:34
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Manager\n"
+"{\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... "
+"bindings);\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public Set<Bean<?>> resolveByName(String name);\n"
+"\n"
+"   public Object getInstanceByName(String name);\n"
+"\n"
+"   public <T> T getInstance(Bean<T> bean);\n"
+"\n"
+"   public void fireEvent(Object event, Annotation... bindings);\n"
+"\n"
+"   public Context getContext(Class<? extends Annotation> scopeType);\n"
+"\n"
+"   public Manager addContext(Context context);\n"
+"\n"
+"   public Manager addBean(Bean<?> bean);\n"
+"\n"
+"   public Manager addInterceptor(Interceptor interceptor);\n"
+"\n"
+"   public Manager addDecorator(Decorator decorator);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer, Class<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer,\n"
+"         TypeLiteral<T> eventType, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... "
+"bindings);\n"
+"\n"
+"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
+"         Annotation... interceptorBindings);\n"
+"\n"
+"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
+"         Annotation... bindings);\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:36
+#, no-c-format
+msgid "We can obtain an instance of <literal>Manager</literal> via injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:38
+#, no-c-format
+msgid "@Current Manager manager"
+msgstr ""
+
+#. Tag: title
+#: extend.xml:43
+#, no-c-format
+msgid "The <literal>Bean</literal> class"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:45
+#, no-c-format
+msgid ""
+"Instances of the abstract class <literal>Bean</literal> represent Web Beans. "
+"There is an instance of <literal>Bean</literal> registered with the "
+"<literal>Manager</literal> object for every Web Bean in the application."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:50
+#, no-c-format
+msgid ""
+"public abstract class Bean&lt;T&gt; {\n"
+"    \n"
+"    private final Manager manager;\n"
+"    \n"
+"    protected Bean(Manager manager) {\n"
+"        this.manager=manager;\n"
+"    }\n"
+"    \n"
+"    protected Manager getManager() {\n"
+"        return manager;\n"
+"    }\n"
+"    \n"
+"    public abstract Set&lt;Class&gt; getTypes();\n"
+"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
+"    public abstract String getName();\n"
+"    \n"
+"    public abstract boolean isSerializable();\n"
+"    public abstract boolean isNullable();\n"
+"\n"
+"    public abstract T create();\n"
+"    public abstract void destroy(T instance);\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:52
+#, no-c-format
+msgid ""
+"It's possible to extend the <literal>Bean</literal> class and register "
+"instances by calling <literal>Manager.addBean()</literal> to provide support "
+"for new kinds of Web Beans, beyond those defined by the Web Beans "
+"specification (simple and enterprise Web Beans, producer methods and JMS "
+"endpoints). For example, we could use the <literal>Bean</literal> class to "
+"allow objects managed by another framework to be injected into Web Beans."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:60
+#, no-c-format
+msgid ""
+"There are two subclasses of <literal>Bean</literal> defined by the Web Beans "
+"specification: <literal>Interceptor</literal> and <literal>Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:67
+#, no-c-format
+msgid "The <literal>Context</literal> interface"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Context</literal> interface supports addition of new scopes to "
+"Web Beans, or extension of the built-in scopes to new environments."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:72
+#, no-c-format
+msgid ""
+"public interface Context {\n"
+"    \n"
+"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    \n"
+"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
+"    \n"
+"    boolean isActive();\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:74
+#, no-c-format
+msgid ""
+"For example, we might implement <literal>Context</literal> to add a business "
+"process scope to Web Beans, or to add support for the conversation scope to "
+"an application that uses Wicket."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/extend.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/injection.po (from rev 638, doc/trunk/reference/es-ES/modules/injection.po)
===================================================================
--- doc/trunk/reference/es-ES/injection.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/injection.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1226 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: injection.xml:4
+#, no-c-format
+msgid "Dependency injection"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:6
+#, no-c-format
+msgid "Web Beans supports three primary mechanisms for dependency injection:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:8
+#, no-c-format
+msgid "Constructor parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:10
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private final ShoppingCart cart;\n"
+"    \n"
+"    @Initializer\n"
+"    public Checkout(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:12
+#, no-c-format
+msgid "<emphasis>Initializer</emphasis> method parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:14
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private ShoppingCart cart;\n"
+"\n"
+"    @Initializer \n"
+"    void setShoppingCart(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:16
+#, no-c-format
+msgid "And direct field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:18
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"\n"
+"    private @Current ShoppingCart cart;\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:20
+#, no-c-format
+msgid ""
+"Dependency injection always occurs when the Web Bean instance is first "
+"instantiated."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:25
+#, no-c-format
+msgid ""
+"First, the Web Bean manager calls the Web Bean constructor, to obtain an "
+"instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:29
+#, no-c-format
+msgid ""
+"Next, the Web Bean manager initializes the values of all injected fields of "
+"the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:33
+#, no-c-format
+msgid "Next, the Web Bean manager calls all initializer methods of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:37
+#, no-c-format
+msgid ""
+"Finally, the <literal>@PostConstruct</literal> method of the Web Bean, if "
+"any, is called."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:42
+#, no-c-format
+msgid ""
+"Constructor parameter injection is not supported for EJB beans, since the "
+"EJB is instantiated by the EJB container, not the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:45
+#, no-c-format
+msgid ""
+"Parameters of constructors and initializer methods need not be explicitly "
+"annotated when the default binding type <literal>@Current</literal> applies. "
+"Injected fields, however, <emphasis>must</emphasis> specify a binding type, "
+"even when the default binding type applies. If the field does not specify a "
+"binding type, it will not be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:51
+#, no-c-format
+msgid "Producer methods also support parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:53
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
+"    return new Checkout(cart);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:55
+#, no-c-format
+msgid ""
+"Finally, observer methods (which we'll meet in <xref linkend=\"events\"/>), "
+"disposal methods and destructor methods all support parameter injection."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:58
+#, no-c-format
+msgid ""
+"The Web Beans specification defines a procedure, called the "
+"<emphasis>typesafe resolution algorithm</emphasis>, that the Web Bean "
+"manager follows when identifying the Web Bean to inject to an injection "
+"point. This algorithm looks complex at first, but once you understand it, "
+"it's really quite intuitive. Typesafe resolution is performed at system "
+"initialization time, which means that the manager will inform the user "
+"immediately if a Web Bean's dependencies cannot be satisfied, by throwing a "
+"<literal>UnsatisfiedDependencyException</literal> or "
+"<literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:67
+#, no-c-format
+msgid ""
+"The purpose of this algorithm is to allow multiple Web Beans to implement "
+"the same API type and either:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:72
+#, no-c-format
+msgid ""
+"allow the client to select which implementation it requires using "
+"<emphasis>binding annotations</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:77
+#, no-c-format
+msgid ""
+"allow the application deployer to select which implementation is appropriate "
+"for a particular deployment, without changes to the client, by enabling or "
+"disabling <emphasis>deployment types</emphasis>, or"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:82
+#, no-c-format
+msgid ""
+"allow one implementation of an API to override another implementation of the "
+"same API at deployment time, without changes to the client, using "
+"<emphasis>deployment type precedence</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:88
+#, no-c-format
+msgid ""
+"Let's explore how the Web Beans manager determines a Web Bean to be injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:91
+#, no-c-format
+msgid "Binding annotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:93
+#, no-c-format
+msgid ""
+"If we have more than one Web Bean that implements a particular API type, the "
+"injection point can specify exactly which Web Bean should be injected using "
+"a binding annotation. For example, there might be two implementations of "
+"<literal>PaymentProcessor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque\n"
+"public class ChequePaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:100
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCreditCard\n"
+"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:102
+#, no-c-format
+msgid ""
+"Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</"
+"literal> are binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:105
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCheque {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:107
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCreditCard {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:109
+#, no-c-format
+msgid ""
+"A client Web Bean developer uses the binding annotation to specify exactly "
+"which Web Bean should be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:112
+#, no-c-format
+msgid "Using field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:114
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
+"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:116
+#, no-c-format
+msgid "Using initializer method injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:118
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public void setPaymentProcessors(@PayByCheque PaymentProcessor "
+"chequePaymentProcessor, \n"
+"                                 @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:120
+#, no-c-format
+msgid "Or using constructor injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:122
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:125
+#, no-c-format
+msgid "Binding annotations with members"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:127
+#, no-c-format
+msgid "Binding annotations may have members:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:129
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayBy {\n"
+"    PaymentType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:131
+#, no-c-format
+msgid "In which case, the member value is significant:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:133
+#, no-c-format
+msgid ""
+"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
+"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:135
+#, no-c-format
+msgid ""
+"You can tell the Web Bean manager to ignore a member of a binding annotation "
+"type by annotating the member <literal>@NonBinding</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:141
+#, no-c-format
+msgid "Combinations of binding annnotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:143
+#, no-c-format
+msgid "An injection point may even specify multiple binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:145
+#, no-c-format
+msgid ""
+"<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:147
+#, no-c-format
+msgid ""
+"In this case, only a Web Bean which has <emphasis>both</emphasis> binding "
+"annotations would be eligible for injection."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:153
+#, no-c-format
+msgid "Binding annotations and producer methods"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:155
+#, no-c-format
+msgid "Even producer methods may specify binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces \n"
+"@Asynchronous @PayByCheque \n"
+"PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor "
+"processor) {\n"
+"    return new AsynchronousPaymentProcessor(processor);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:162
+#, no-c-format
+msgid "The default binding type"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:164
+#, no-c-format
+msgid ""
+"Web Beans defines a binding type <literal>@Current</literal> that is the "
+"default binding type for any injection point or Web Bean that does not "
+"explicitly specify a binding type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:168
+#, no-c-format
+msgid ""
+"There are two common circumstances in which it is necessary to explicitly "
+"specify <literal>@Current</literal>:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:173
+#, no-c-format
+msgid ""
+"on a field, in order to declare it as an injected field with the default "
+"binding type, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:177
+#, no-c-format
+msgid ""
+"on a Web Bean which has another binding type in addition to the default "
+"binding type."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:187
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:189
+#, no-c-format
+msgid ""
+"All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment "
+"type identifies a set of Web Beans that should be conditionally installed in "
+"some deployments of the system."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:193
+#, no-c-format
+msgid ""
+"For example, we could define a deployment type named <literal>@Mock</"
+"literal>, which would identify Web Beans that should only be installed when "
+"the system executes inside an integration testing environment:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:197
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"  @Target({TYPE, METHOD})\n"
+"  @DeploymentType\n"
+"  public @interface Mock {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:199
+#, no-c-format
+msgid ""
+"Suppose we had some Web Bean that interacted with an external system to "
+"process payments:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:202
+#, no-c-format
+msgid ""
+"<![CDATA[public class ExternalPaymentProcessor {\n"
+"        \n"
+"    public void process(Payment p) {\n"
+"        ...\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:204
+#, no-c-format
+msgid ""
+"Since this Web Bean does not explicitly specify a deployment type, it has "
+"the default deployment type <literal>@Production</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:207
+#, no-c-format
+msgid ""
+"For integration or unit testing, the external system is slow or unavailable. "
+"So we would create a mock object:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:210
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock \n"
+"public class MockPaymentProcessor implements PaymentProcessor {\n"
+"\n"
+"    @Override\n"
+"    public void process(Payment p) {\n"
+"        p.setSuccessful(true);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:212
+#, no-c-format
+msgid ""
+"But how does the Web Bean manager determine which implementation to use in a "
+"particular deployment?"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:216
+#, no-c-format
+msgid "Enabling deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:218
+#, no-c-format
+msgid ""
+"Web Beans defines two built-in deployment types: <literal>@Production</"
+"literal> and <literal>@Standard</literal>. By default, only Web Beans with "
+"the built-in deployment types are enabled when the system is deployed. We "
+"can identify additional deployment types to be enabled in a particular "
+"deployment by listing them in <literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:224
+#, no-c-format
+msgid ""
+"Going back to our example, when we deploy our integration tests, we want all "
+"our <literal>@Mock</literal> objects to be installed:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:227
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans>\n"
+"    <Deploy>\n"
+"        <Standard/>\n"
+"        <Production/>\n"
+"        <test:Mock/>\n"
+"    </Deploy>\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:229
+#, no-c-format
+msgid ""
+"Now the Web Bean manager will identify and install all Web Beans annotated "
+"<literal>@Production</literal>, <literal>@Standard</literal> or "
+"<literal>@Mock</literal> at deployment time."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:233
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Standard</literal> is used only for certain "
+"special Web Beans defined by the Web Beans specification. We can't use it "
+"for our own Web Beans, and we can't disable it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:237
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Production</literal> is the default deployment "
+"type for Web Beans which don't explicitly declare a deployment type, and may "
+"be disabled."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:244
+#, no-c-format
+msgid "Deployment type precedence"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:246
+#, no-c-format
+msgid ""
+"If you've been paying attention, you're probably wondering how the Web Bean "
+"manager decides which implementation&#151;<literal>ExternalPaymentProcessor</"
+"literal> or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider "
+"what happens when the manager encounters this injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:251
+#, no-c-format
+msgid "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:253
+#, no-c-format
+msgid ""
+"There are now two Web Beans which satisfy the <literal>PaymentProcessor</"
+"literal> contract. Of course, we can't use a binding annotation to "
+"disambiguate, since binding annotations are hard-coded into the source at "
+"the injection point, and we want the manager to be able to decide at "
+"deployment time!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:258
+#, no-c-format
+msgid ""
+"The solution to this problem is that each deployment type has a different "
+"<emphasis>precedence</emphasis>. The precedence of the deployment types is "
+"determined by the order in which they appear in <literal>web-beans.xml</"
+"literal>. In our example, <literal>@Mock</literal> appears later than "
+"<literal>@Production</literal> so it has a higher precedence."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:264
+#, no-c-format
+msgid ""
+"Whenever the manager discovers that more than one Web Bean could satisfy the "
+"contract (API type plus binding annotations) specified by an injection "
+"point, it considers the relative precedence of the Web Beans. If one has a "
+"higher precedence than the others, it chooses the higher precedence Web Bean "
+"to inject. So, in our example, the Web Bean manager will inject "
+"<literal>MockPaymentProcessor</literal> when executing in our integration "
+"testing environment (which is exactly what we want)."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:271
+#, no-c-format
+msgid ""
+"It's interesting to compare this facility to today's popular manager "
+"architectures. Various \"lightweight\" containers also allow conditional "
+"deployment of classes that exist in the classpath, but the classes that are "
+"to be deployed must be explicity, individually, listed in configuration code "
+"or in some XML configuration file. Web Beans does support Web Bean "
+"definition and configuration via XML, but in the common case where no "
+"complex configuration is required, deployment types allow a whole set of Web "
+"Beans to be enabled with a single line of XML. Meanwhile, a developer "
+"browsing the code can easily identify what deployment scenarios the Web Bean "
+"will be used in."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:284
+#, no-c-format
+msgid "Example deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:286
+#, no-c-format
+msgid ""
+"Deployment types are useful for all kinds of things, here's some examples:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:290
+#, no-c-format
+msgid ""
+"<literal>@Mock</literal> and <literal>@Staging</literal> deployment types "
+"for testing"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:294
+#, no-c-format
+msgid "<literal>@AustralianTaxLaw</literal> for site-specific Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:297
+#, no-c-format
+msgid ""
+"<literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party "
+"frameworks which build on Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:301
+#, no-c-format
+msgid ""
+"<literal>@Standard</literal> for standard Web Beans defined by the Web Beans "
+"specification"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:306
+#, no-c-format
+msgid "I'm sure you can think of more applications..."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:313
+#, no-c-format
+msgid "Fixing unsatisfied dependencies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:315
+#, no-c-format
+msgid ""
+"The typesafe resolution algorithm fails when, after considering the binding "
+"annotations and and deployment types of all Web Beans that implement the API "
+"type of an injection point, the Web Bean manager is unable to identify "
+"exactly one Web Bean to inject."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:320
+#, no-c-format
+msgid ""
+"It's usually easy to fix an <literal>UnsatisfiedDependencyException</"
+"literal> or <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:323
+#, no-c-format
+msgid ""
+"To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide "
+"a Web Bean which implements the API type and has the binding types of the "
+"injection point&#151;or enable the deployment type of a Web Bean that "
+"already implements the API type and has the binding types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:328
+#, no-c-format
+msgid ""
+"To fix an <literal>AmbiguousDependencyException</literal>, introduce a "
+"binding type to distinguish between the two implementations of the API type, "
+"or change the deployment type of one of the implementations so that the Web "
+"Bean manager can use deployment type precedence to choose between them. An "
+"<literal>AmbiguousDependencyException</literal> can only occur if two Web "
+"Beans share a binding type and have exactly the same deployment type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:335
+#, no-c-format
+msgid ""
+"There's one more issue you need to be aware of when using dependency "
+"injection in Web Beans."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:341
+#, no-c-format
+msgid "Client proxies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:343
+#, no-c-format
+msgid ""
+"Clients of an injected Web Bean do not usually hold a direct reference to a "
+"Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:346
+#, no-c-format
+msgid ""
+"Imagine that a Web Bean bound to the application scope held a direct "
+"reference to a Web Bean bound to the request scope. The application scoped "
+"Web Bean is shared between many different requests. However, each request "
+"should see a different instance of the request scoped Web bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:351
+#, no-c-format
+msgid ""
+"Now imagine that a Web Bean bound to the session scope held a direct "
+"reference to a Web Bean bound to the application scope. From time to time, "
+"the session context is serialized to disk in order to use memory more "
+"efficiently. However, the application scoped Web Bean instance should not be "
+"serialized along with the session scoped Web Bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:357
+#, no-c-format
+msgid ""
+"Therefore, unless a Web Bean has the default scope <literal>@Dependent</"
+"literal>, the Web Bean manager must indirect all injected references to the "
+"Web Bean through a proxy object. This <emphasis>client proxy</emphasis> is "
+"responsible for ensuring that the Web Bean instance that receives a method "
+"invocation is the instance that is associated with the current context. The "
+"client proxy also allows Web Beans bound to contexts such as the session "
+"context to be serialized to disk without recursively serializing other "
+"injected Web Beans."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:365
+#, no-c-format
+msgid ""
+"Unfortunately, due to limitations of the Java language, some Java types "
+"cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager "
+"throws an <literal>UnproxyableDependencyException</literal> if the type of "
+"an injection point cannot be proxied."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:370
+#, no-c-format
+msgid "The following Java types cannot be proxied by the Web Bean manager:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:374
+#, no-c-format
+msgid ""
+"classes which are declared <literal>final</literal> or have a "
+"<literal>final</literal> method,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:378
+#, no-c-format
+msgid "classes which have no non-private constructor with no parameters, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:381
+#, no-c-format
+msgid "arrays and primitive types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:385
+#, no-c-format
+msgid ""
+"It's usually very easy to fix an <literal>UnproxyableDependencyException</"
+"literal>. Simply add a constructor with no parameters to the injected class, "
+"introduce an interface, or change the scope of the injected Web Bean to "
+"<literal>@Dependent</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:392
+#, no-c-format
+msgid "Obtaining a Web Bean by programatic lookup"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:394
+#, no-c-format
+msgid ""
+"The application may obtain an instance of the interface <literal>Manager</"
+"literal> by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:397
+#, no-c-format
+msgid "<![CDATA[@Current Manager manager;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:399
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> object provides a set of methods for "
+"obtaining a Web Bean instance programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:402
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:404
+#, no-c-format
+msgid ""
+"Binding annotations may be specified by subclassing the helper class "
+"<literal>AnnotationLiteral</literal>, since it is otherwise difficult to "
+"instantiate an annotation type in Java."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:408
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new "
+"AnnotationLiteral<CreditCard>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:410
+#, no-c-format
+msgid ""
+"If the binding type has an annotation member, we can't use an anonymous "
+"subclass of <literal>AnnotationLiteral</literal>&#151;instead we'll need to "
+"create a named subclass:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:413
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class CreditCardBinding \n"
+"    extends AnnotationLiteral<CreditCard> \n"
+"    implements CreditCard {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:415
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new CreditCardBinding() { \n"
+"                                                   public void value() "
+"{ return paymentType; } \n"
+"                                               } );]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:419
+#, no-c-format
+msgid ""
+"Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> "
+"and <literal>@PersistenceContext</literal>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:422
+#, no-c-format
+msgid ""
+"Enterprise Web Beans support all the lifecycle callbacks defined by the EJB "
+"specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:426
+#, no-c-format
+msgid ""
+"Simple Web Beans support only the <literal>@PostConstruct</literal> and "
+"<literal>@PreDestroy</literal> callbacks."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:429
+#, no-c-format
+msgid ""
+"Both enterprise and simple Web Beans support the use of <literal>@Resource</"
+"literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal> "
+"for injection of Java EE resources, EJBs and JPA persistence contexts, "
+"respectively. Simple Web Beans do not support the use of "
+"<literal>@PersistenceContext(type=EXTENDED)</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:434
+#, no-c-format
+msgid ""
+"The <literal>@PostConstruct</literal> callback always occurs after all "
+"dependencies have been injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:440
+#, no-c-format
+msgid "The <literal>InjectionPoint</literal> object"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:442
+#, no-c-format
+msgid ""
+"There are certain kinds of dependent objects&#151;Web Beans with scope "
+"<literal>@Dependent</literal>&#151;that need to know something about the "
+"object or injection point into which they are injected in order to be able "
+"to do what they do. For example:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:448
+#, no-c-format
+msgid ""
+"The log category for a <literal>Logger</literal> depends upon the class of "
+"the object that owns it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:452
+#, no-c-format
+msgid ""
+"Injection of a HTTP parameter or header value depends upon what parameter or "
+"header name was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:456
+#, no-c-format
+msgid ""
+"Injection of the result of an EL expression evaluation depends upon the "
+"expression that was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:461
+#, no-c-format
+msgid ""
+"A Web Bean with scope <literal>@Dependent</literal> may inject an instance "
+"of <literal>InjectionPoint</literal> and access metadata relating to the "
+"injection point to which it belongs."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:465
+#, no-c-format
+msgid ""
+"Let's look at an example. The following code is verbose, and vulnerable to "
+"refactoring problems:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:468
+#, no-c-format
+msgid "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:470
+#, no-c-format
+msgid ""
+"This clever little producer method lets you inject a JDK <literal>Logger</"
+"literal> without explicitly specifying the log category:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:473
+#, no-c-format
+msgid ""
+"<![CDATA[class LogFactory {\n"
+"\n"
+"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
+"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass()."
+"getName()); \n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:475
+#, no-c-format
+msgid "We can now write:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:477
+#, no-c-format
+msgid "<![CDATA[@Current Logger log;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:479
+#, no-c-format
+msgid ""
+"Not convinced? Then here's a second example. To inject HTTP parameters, we "
+"need to define a binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:482
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"public @interface HttpParam {\n"
+"   @NonBinding public String value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:484
+#, no-c-format
+msgid "We would use this binding type at injection points as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:486
+#, no-c-format
+msgid ""
+"<![CDATA[@HttpParam(\"username\") String username;\n"
+"@HttpParam(\"password\") String password;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:488
+#, no-c-format
+msgid "The following producer method does the work:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:490
+#, no-c-format
+msgid ""
+"<![CDATA[class HttpParams\n"
+"\n"
+"   @Produces @HttpParam(\"\")\n"
+"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
+"      return request.getParameter(ip.getAnnotation(HttpParam.class).value"
+"());\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:492
+#, no-c-format
+msgid ""
+"(Note that the <literal>value()</literal> member of the <literal>HttpParam</"
+"literal> annotation is ignored by the Web Bean manager since it is annotated "
+"<literal>@NonBinding.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:495
+#, no-c-format
+msgid ""
+"The Web Bean manager provides a built-in Web Bean that implements the "
+"<literal>InjectionPoint</literal> interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:498
+#, no-c-format
+msgid ""
+"<![CDATA[public interface InjectionPoint { \n"
+"   public Object getInstance(); \n"
+"   public Bean<?> getBean(); \n"
+"   public Member getMember(): \n"
+"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
+"   public Set<T extends Annotation> getAnnotations(); \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/injection.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/interceptors.po (from rev 638, doc/trunk/reference/es-ES/modules/interceptors.po)
===================================================================
--- doc/trunk/reference/es-ES/interceptors.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/interceptors.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,572 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: interceptors.xml:4
+#, no-c-format
+msgid "Interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:6
+#, no-c-format
+msgid ""
+"Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending "
+"the functionality in two directions:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:11
+#, no-c-format
+msgid "Any Web Bean may have interceptors, not just session beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:14
+#, no-c-format
+msgid ""
+"Web Beans features a more sophisticated annotation-based approach to binding "
+"interceptors to Web Beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:22
+#, no-c-format
+msgid "The EJB specification defines two kinds of interception points:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:26
+#, no-c-format
+msgid "business method interception, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:29
+#, no-c-format
+msgid "lifecycle callback interception."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:33
+#, no-c-format
+msgid ""
+"A <emphasis>business method interceptor</emphasis> applies to invocations of "
+"methods of the Web Bean by clients of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:36
+#, no-c-format
+msgid ""
+"<![CDATA[public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:38
+#, no-c-format
+msgid ""
+"A <emphasis>lifecycle callback interceptor</emphasis> applies to invocations "
+"of lifecycle callbacks by the container:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[public class DependencyInjectionInterceptor {\n"
+"    @PostConstruct public void injectDependencies(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:43
+#, no-c-format
+msgid ""
+"An interceptor class may intercept both lifecycle callbacks and business "
+"methods."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:49
+#, no-c-format
+msgid "Interceptor bindings"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:51
+#, no-c-format
+msgid ""
+"Suppose we want to declare that some of our Web Beans are transactional. The "
+"first thing we need is an <emphasis>interceptor binding annotation</"
+"emphasis> to specify exactly which Web Beans we're interested in:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:55
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:57
+#, no-c-format
+msgid ""
+"Now we can easily specify that our <literal>ShoppingCart</literal> is a "
+"transactional object:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:60
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:62
+#, no-c-format
+msgid "Or, if we prefer, we can specify that just one method is transactional:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:69
+#, no-c-format
+msgid "Implementing interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:71
+#, no-c-format
+msgid ""
+"That's great, but somewhere along the line we're going to have to actually "
+"implement the interceptor that provides this transaction management aspect. "
+"All we need to do is create a standard EJB interceptor, and annotate it "
+"<literal>@Interceptor</literal> and <literal>@Transactional</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:78
+#, no-c-format
+msgid ""
+"All Web Beans interceptors are simple Web Beans, and can take advantage of "
+"dependency injection and contextual lifecycle management."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:83
+#, no-c-format
+msgid "Multiple interceptors may use the same interceptor binding type."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:88
+#, no-c-format
+msgid "Enabling interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:90
+#, no-c-format
+msgid ""
+"Finally, we need to <emphasis>enable</emphasis> our interceptor in "
+"<literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:93
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:95
+#, no-c-format
+msgid "Whoah! Why the angle bracket stew?"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:97
+#, no-c-format
+msgid "Well, the XML declaration solves two problems:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:101
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all the interceptors in our "
+"system, ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:105
+#, no-c-format
+msgid "it lets us enable or disable interceptor classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:109
+#, no-c-format
+msgid ""
+"For example, we could specify that our security interceptor runs before our "
+"<literal>TransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:112
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <sx:SecurityInterceptor/>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:114
+#, no-c-format
+msgid "Or we could turn them both off in our test environment!"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:119
+#, no-c-format
+msgid "Interceptor bindings with members"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:121
+#, no-c-format
+msgid ""
+"Suppose we want to add some extra information to our "
+"<literal>@Transactional</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:124
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {\n"
+"    boolean requiresNew() default false;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:126
+#, no-c-format
+msgid ""
+"Web Beans will use the value of <literal>requiresNew</literal> to choose "
+"between two different interceptors, <literal>TransactionInterceptor</"
+"literal> and <literal>RequiresNewTransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
+"public class RequiresNewTransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:132
+#, no-c-format
+msgid ""
+"Now we can use <literal>RequiresNewTransactionInterceptor</literal> like "
+"this:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:134
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:136
+#, no-c-format
+msgid ""
+"But what if we only have one interceptor and we want the manager to ignore "
+"the value of <literal>requiresNew</literal> when binding interceptors? We "
+"can use the <literal>@NonBinding</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:140
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Secure {\n"
+"    @NonBinding String[] rolesAllowed() default {};\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:145
+#, no-c-format
+msgid "Multiple interceptor binding annotations"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:147
+#, no-c-format
+msgid ""
+"Usually we use combinations of interceptor bindings types to bind multiple "
+"interceptors to a Web Bean. For example, the following declaration would be "
+"used to bind <literal>TransactionInterceptor</literal> and "
+"<literal>SecurityInterceptor</literal> to the same Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:152
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:154
+#, no-c-format
+msgid ""
+"However, in very complex cases, an interceptor itself may specify some "
+"combination of interceptor binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure @Interceptor\n"
+"public class TransactionalSecureInterceptor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:159
+#, no-c-format
+msgid ""
+"Then this interceptor could be bound to the <literal>checkout()</literal> "
+"method using any one of the following combinations:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:164
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure\n"
+"public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:166
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactionl\n"
+"public class ShoppingCart {\n"
+"    @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:168
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:173
+#, no-c-format
+msgid "Interceptor binding type inheritance"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:175
+#, no-c-format
+msgid ""
+"One limitation of the Java language support for annotations is the lack of "
+"annotation inheritance. Really, annotations should have reuse built in, to "
+"allow this kind of thing to work:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:179
+#, no-c-format
+msgid ""
+"<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:181
+#, no-c-format
+msgid ""
+"Well, fortunately, Web Beans works around this missing feature of Java. We "
+"may annotate one interceptor binding type with other interceptor binding "
+"types. The interceptor bindings are transitive&#151;any Web Bean with the "
+"first interceptor binding inherits the interceptor bindings declared as meta-"
+"annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:186
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"@InterceptorBindingType\n"
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"public @interface Action { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:188
+#, no-c-format
+msgid ""
+"Any Web Bean annotated <literal>@Action</literal> will be bound to both "
+"<literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</"
+"literal>. (And even <literal>TransactionalSecureInterceptor</literal>, if it "
+"exists.)"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:195
+#, no-c-format
+msgid "Use of <literal>@Interceptors</literal>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:197
+#, no-c-format
+msgid ""
+"The <literal>@Interceptors</literal> annotation defined by the EJB "
+"specification is supported for both enterprise and simple Web Beans, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:200
+#, no-c-format
+msgid ""
+"<![CDATA[@Interceptors({TransactionInterceptor.class, SecurityInterceptor."
+"class})\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:202
+#, no-c-format
+msgid "However, this approach suffers the following drawbacks:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:206
+#, no-c-format
+msgid "the interceptor implementation is hardcoded in business code,"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:209
+#, no-c-format
+msgid "interceptors may not be easily disabled at deployment time, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:212
+#, no-c-format
+msgid ""
+"the interceptor ordering is non-global&#151;it is determined by the order in "
+"which interceptors are listed at the class level."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:217
+#, no-c-format
+msgid ""
+"Therefore, we recommend the use of Web Beans-style interceptor bindings."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/interceptors.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/intro.po (from rev 638, doc/trunk/reference/es-ES/modules/intro.po)
===================================================================
--- doc/trunk/reference/es-ES/intro.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/intro.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1075 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: intro.xml:4
+#, no-c-format
+msgid "Getting started with Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:6
+#, no-c-format
+msgid ""
+"So you're already keen to get started writing your first Web Bean? Or "
+"perhaps you're skeptical, wondering what kinds of hoops the Web Beans "
+"specification will make you jump through! The good news is that you've "
+"probably already written and used hundreds, perhaps thousands of Web Beans. "
+"You might not even remember the first Web Bean you wrote."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:13
+#, no-c-format
+msgid "Your first Web Bean"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:15
+#, no-c-format
+msgid ""
+"With certain, very special exceptions, every Java class with a constructor "
+"that accepts no parameters is a Web Bean. That includes every JavaBean. "
+"Furthermore, every EJB 3-style session bean is a Web Bean. Sure, the "
+"JavaBeans and EJBs you've been writing every day have not been able to take "
+"advantage of the new services defined by the Web Beans specification, but "
+"you'll be able to use every one of them as Web Beans&#151;injecting them "
+"into other Web Beans, configuring them via the Web Beans XML configuration "
+"facility, even adding interceptors and decorators to them&#151;without "
+"touching your existing code."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:25
+#, no-c-format
+msgid ""
+"Suppose that we have two existing Java classes, that we've been using for "
+"years in various applications. The first class parses a string into a list "
+"of sentences:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class SentenceParser {\n"
+"    public List<String> parse(String text) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:31
+#, no-c-format
+msgid ""
+"The second existing class is a stateless session bean front-end for an "
+"external system that is able to translate sentences from one language to "
+"another:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class SentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:37
+#, no-c-format
+msgid "Where <literal>Translator</literal> is the local interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[@Local\n"
+"public interface Translator {\n"
+"    public String translate(String sentence);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:41
+#, no-c-format
+msgid ""
+"Unfortunately, we don't have a preexisting class that translates whole text "
+"documents. So let's write a Web Bean that does this job:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator {\n"
+"    \n"
+"    private SentenceParser sentenceParser;\n"
+"    private Translator sentenceTranslator;\n"
+"    \n"
+"    @Initializer\n"
+"    TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) {\n"
+"        this.sentenceParser = sentenceParser;\n"
+"        this.sentenceTranslator = sentenceTranslator;\n"
+"    }\n"
+"    \n"
+"    public String translate(String text) {\n"
+"        StringBuilder sb = new StringBuilder();\n"
+"        for (String sentence: sentenceParser.parse(text)) {\n"
+"            sb.append(sentenceTranslator.translate(sentence));\n"
+"        }\n"
+"        return sb.toString();\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:46
+#, no-c-format
+msgid ""
+"We may obtain an instance of <literal>TextTranslator</literal> by injecting "
+"it into a Web Bean, Servlet or EJB:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:49
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public setTextTranslator(TextTranslator textTranslator) {\n"
+"    this.textTranslator = textTranslator;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:51
+#, no-c-format
+msgid ""
+"Alternatively, we may obtain an instance by directly calling a method of the "
+"Web Bean manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:54
+#, no-c-format
+msgid ""
+"<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:56
+#, no-c-format
+msgid ""
+"But wait: <literal>TextTranslator</literal> does not have a constructor with "
+"no parameters! Is it still a Web Bean? Well, a class that does not have a "
+"constructor with no parameters can still be a Web Bean if it has a "
+"constructor annotated <literal>@Initializer</literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:61
+#, no-c-format
+msgid ""
+"As you've guessed, the <literal>@Initializer</literal> annotation has "
+"something to do with dependency injection! <literal>@Initializer</literal> "
+"may be applied to a constructor or method of a Web Bean, and tells the Web "
+"Bean manager to call that constructor or method when instantiating the Web "
+"Bean. The Web Bean manager will inject other Web Beans to the parameters of "
+"the constructor or method."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:68
+#, no-c-format
+msgid ""
+"At system initialization time, the Web Bean manager must validate that "
+"exactly one Web Bean exists which satisfies each injection point. In our "
+"example, if no implementation of <literal>Translator</literal> "
+"available&#151;if the <literal>SentenceTranslator</literal> EJB was not "
+"deployed&#151;the Web Bean manager would throw an "
+"<literal>UnsatisfiedDependencyException</literal>. If more than one "
+"implementation of <literal>Translator</literal> was available, the Web Bean "
+"manager would throw an <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:80
+#, no-c-format
+msgid "What is a Web Bean?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:82
+#, no-c-format
+msgid "So what, <emphasis>exactly</emphasis>, is a Web Bean?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:84
+#, no-c-format
+msgid ""
+"A Web Bean is an application class that contains business logic. A Web Bean "
+"may be called directly from Java code, or it may be invoked via Unified EL. "
+"A Web Bean may access transactional resources. Dependencies between Web "
+"Beans are managed automatically by the Web Bean manager. Most Web Beans are "
+"<emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The "
+"lifecycle of a Web Bean is always managed by the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:91
+#, no-c-format
+msgid ""
+"Let's back up a second. What does it really mean to be \"contextual\"? Since "
+"Web Beans may be stateful, it matters <emphasis>which</emphasis> bean "
+"instance I have. Unlike a stateless component model (for example, stateless "
+"session beans) or a singleton component model (such as servlets, or "
+"singleton beans), different clients of a Web Bean see the Web Bean in "
+"different states. The client-visible state depends upon which instance of "
+"the Web Bean the client has a reference to."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:98
+#, no-c-format
+msgid ""
+"However, like a stateless or singleton model, but <emphasis>unlike</"
+"emphasis> stateful session beans, the client does not control the lifecycle "
+"of the instance by explicitly creating and destroying it. Instead, the "
+"<emphasis>scope</emphasis> of the Web Bean determines:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:105
+#, no-c-format
+msgid "the lifecycle of each instance of the Web Bean and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:108
+#, no-c-format
+msgid ""
+"which clients share a reference to a particular instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:113
+#, no-c-format
+msgid ""
+"For a given thread in a Web Beans application, there may be an "
+"<emphasis>active context</emphasis> associated with the scope of the Web "
+"Bean. This context may be unique to the thread (for example, if the Web Bean "
+"is request scoped), or it may be shared with certain other threads (for "
+"example, if the Web Bean is session scoped) or even all other threads (if it "
+"is application scoped)."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:119
+#, no-c-format
+msgid ""
+"Clients (for example, other Web Beans) executing in the same context will "
+"see the same instance of the Web Bean. But clients in a different context "
+"will see a different instance."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:123
+#, no-c-format
+msgid ""
+"One great advantage of the contextual model is that it allows stateful Web "
+"Beans to be treated like services! The client need not concern itself with "
+"managing the lifecycle of the Web Bean it is using, <emphasis>nor does it "
+"even need to know what that lifecyle is.</emphasis> Web Beans interact by "
+"passing messages, and the Web Bean implementations define the lifecycle of "
+"their own state. The Web Beans are loosely coupled because:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:132
+#, no-c-format
+msgid "they interact via well-defined public APIs"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:135
+#, no-c-format
+msgid "their lifecycles are completely decoupled"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:139
+#, no-c-format
+msgid ""
+"We can replace one Web Bean with a different Web Bean that implements the "
+"same API and has a different lifecycle (a different scope) without affecting "
+"the other Web Bean implementation. In fact, Web Beans defines a "
+"sophisticated facility for overriding Web Bean implementations at deployment "
+"time, as we will see in <xref linkend=\"deploymenttypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:145
+#, no-c-format
+msgid ""
+"Note that not all clients of a Web Bean are Web Beans. Other objects such as "
+"Servlets or Message-Driven Beans&#151;which are by nature not injectable, "
+"contextual objects&#151;may also obtain references to Web Beans by injection."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:149
+#, no-c-format
+msgid "Enough hand-waving. More formally, according to the spec:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:153
+#, no-c-format
+msgid "A Web Bean comprises:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:156
+#, no-c-format
+msgid "A (nonempty) set of API types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:157
+#, no-c-format
+msgid "A (nonempty) set of binding annotation types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:158
+#, no-c-format
+msgid "A scope"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:159
+#, no-c-format
+msgid "A deployment type"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:160
+#, no-c-format
+msgid "Optionally, a Web Bean name"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:161
+#, no-c-format
+msgid "A set of interceptor binding types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:162
+#, no-c-format
+msgid "A Web Bean implementation"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:167
+#, no-c-format
+msgid "Let's see what some of these terms mean, to the Web Bean developer."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:170
+#, no-c-format
+msgid "API types, binding types and dependency injection"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:172
+#, no-c-format
+msgid ""
+"Web Beans usually acquire references to other Web Beans via dependency "
+"injection. Any injected attribute specifies a \"contract\" that must be "
+"satisfied by the Web Bean to be injected. The contract is:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:177
+#, no-c-format
+msgid "an API type, together with"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:178
+#, no-c-format
+msgid "a set of binding types."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:181
+#, no-c-format
+msgid ""
+"An API is a user-defined class or interface. (If the Web Bean is an EJB "
+"session bean, the API type is the <literal>@Local</literal> interface or "
+"bean-class local view). A binding type represents some client-visible "
+"semantic that is satisfied by some implementations of the API and not by "
+"others."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:186
+#, no-c-format
+msgid ""
+"Binding types are represented by user-defined annotations that are "
+"themselves annotated <literal>@BindingType</literal>. For example, the "
+"following injection point has API type <literal>PaymentProcessor</literal> "
+"and binding type <literal>@CreditCard</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:191
+#, no-c-format
+msgid "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:193
+#, no-c-format
+msgid ""
+"If no binding type is explicitly specified at an injection point, the "
+"default binding type <literal>@Current</literal> is assumed."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:196
+#, no-c-format
+msgid ""
+"For each injection point, the Web Bean manager searches for a Web Bean which "
+"satisfies the contract (implements the API, and has all the binding types), "
+"and injects that Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:200
+#, no-c-format
+msgid ""
+"The following Web Bean has the binding type <literal>@CreditCard</literal> "
+"and implements the API type <literal>PaymentProcessor</literal>. It could "
+"therefore be injected to the example injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:204
+#, no-c-format
+msgid ""
+"<![CDATA[@CreditCard\n"
+"public class CreditCardPaymentProcessor \n"
+"    implements PaymentProcessor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:206
+#, no-c-format
+msgid ""
+"If a Web Bean does not explicitly specify a set of binding types, it has "
+"exactly one binding type: the default binding type <literal>@Current</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:209
+#, no-c-format
+msgid ""
+"Web Beans defines a sophisticated but intuitive <emphasis>resolution "
+"algorithm</emphasis> that helps the container decide what to do if there is "
+"more than one Web Bean that satisfies a particular contract. We'll get into "
+"the details in <xref linkend=\"injection\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:217
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:219
+#, no-c-format
+msgid ""
+"<emphasis>Deployment types</emphasis> let us classify our Web Beans by "
+"deployment scenario. A deployment type is an annotation that represents a "
+"particular deployment scenario, for example <literal>@Mock</literal>, "
+"<literal>@Staging</literal> or <literal>@AustralianTaxLaw</literal>. We "
+"apply the annotation to Web Beans which should be deployed in that scenario. "
+"A deployment type allows a whole set of Web Beans to be conditionally "
+"deployed, with a just single line of configuration."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:226
+#, no-c-format
+msgid ""
+"Many Web Beans just use the default deployment type <literal>@Production</"
+"literal>, in which case no deployment type need be explicitly specified. All "
+"three Web Bean in our example have the deployment type <literal>@Production</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:230
+#, no-c-format
+msgid ""
+"In a testing environment, we might want to replace the "
+"<literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:233
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock\n"
+"public class MockSentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) {\n"
+"        return \"Lorem ipsum dolor sit amet\";\n"
+"    }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:236
+#, no-c-format
+msgid ""
+"We would enable the deployment type <literal>@Mock</literal> in our testing "
+"environment, to indicate that <literal>MockSentenceTranslator</literal> and "
+"any other Web Bean annotated <literal>@Mock</literal> should be used."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:240
+#, no-c-format
+msgid ""
+"We'll talk more about this unique and powerful feature in <xref linkend="
+"\"deploymenttypes\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:246
+#, no-c-format
+msgid "Scope"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:248
+#, no-c-format
+msgid ""
+"The <emphasis>scope</emphasis> defines the lifecycle and visibility of "
+"instances of the Web Bean. The Web Beans context model is extensible, "
+"accommodating arbitrary scopes. However, certain important scopes are built-"
+"in to the specification, and provided by the Web Bean manager. A scope is "
+"represented by an annotation type."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:254
+#, no-c-format
+msgid ""
+"For example, any web application may have <emphasis>session scoped</"
+"emphasis> Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:257
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:259
+#, no-c-format
+msgid ""
+"An instance of a session scoped Web Bean is bound to a user session and is "
+"shared by all requests that execute in the context of that session."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:262
+#, no-c-format
+msgid ""
+"By default, Web Beans belong to a special scope called the "
+"<emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are "
+"pure dependent objects of the object into which they are injected, and their "
+"lifecycle is bound to the lifecycle of that object."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:267
+#, no-c-format
+msgid "We'll talk more about scopes in <xref linkend=\"scopescontexts\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:272
+#, no-c-format
+msgid "Web Bean names and Unified EL"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:274
+#, no-c-format
+msgid ""
+"A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in "
+"Unified EL expressions. It's easy to specify the name of a Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:278
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named(\"cart\")\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:280
+#, no-c-format
+msgid "Now we can easily use the Web Bean in any JSF or JSP page:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:282
+#, no-c-format
+msgid ""
+"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
+"    ....\n"
+"</h:dataTable>]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:284
+#, no-c-format
+msgid ""
+"It's even easier to just let the name be defaulted by the Web Bean manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:287
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:289
+#, no-c-format
+msgid ""
+"In this case, the name defaults to <literal>shoppingCart</literal>&#151;the "
+"unqualified class name, with the first character changed to lowercase."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:295
+#, no-c-format
+msgid "Interceptor binding types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:297
+#, no-c-format
+msgid ""
+"Web Beans supports the interceptor functionality defined by EJB 3, not only "
+"for EJB beans, but also for plain Java classes. In addition, Web Beans "
+"provides a new approach to binding interceptors to EJB beans and other Web "
+"Beans."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:302
+#, no-c-format
+msgid ""
+"It remains possible to directly specify the interceptor class via use of the "
+"<literal>@Interceptors</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:305
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped \n"
+"@Interceptors(TransactionInterceptor.class)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:307
+#, no-c-format
+msgid ""
+"However, it is more elegant, and better practice, to indirect the "
+"interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:313
+#, no-c-format
+msgid ""
+"We'll discuss Web Beans interceptors and decorators in <xref linkend="
+"\"interceptors\"/> and <xref linkend=\"decorators\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:321
+#, no-c-format
+msgid "What kinds of objects can be Web Beans?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:323
+#, no-c-format
+msgid ""
+"We've already seen that JavaBeans, EJBs and some other Java classes can be "
+"Web Beans. But exactly what kinds of objects are Web Beans?"
+msgstr ""
+
+#. Tag: title
+#: intro.xml:327
+#, no-c-format
+msgid "Simple Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:329
+#, no-c-format
+msgid ""
+"The Web Beans specification says that a concrete Java class is a "
+"<emphasis>simple</emphasis> Web Bean if:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:334
+#, no-c-format
+msgid ""
+"it is not an EE container-managed component, like an EJB, a Servlet or a JPA "
+"entity,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:338
+#, no-c-format
+msgid "it is not a non-static static inner class,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:341
+#, no-c-format
+msgid "it is not a parameterized type, and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:344
+#, no-c-format
+msgid ""
+"it has a constructor with no parameters, or a constructor annotated "
+"<literal>@Initializer</literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:349
+#, no-c-format
+msgid "Thus, almost every JavaBean is a simple Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:351
+#, no-c-format
+msgid ""
+"Every interface implemented directly or indirectly by a simple Web Bean is "
+"an API type of the simple Web Bean. The class and its superclasses are also "
+"API types."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:358
+#, no-c-format
+msgid "Enterprise Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:360
+#, no-c-format
+msgid ""
+"The specification says that all EJB 3-style session and singleton beans are "
+"<emphasis>enterprise</emphasis> Web Beans. Message driven beans are not Web "
+"Beans&#151;since they are not intended to be injected into other "
+"objects&#151;but they can take advantage of most of the functionality of Web "
+"Beans, including dependency injection and interceptors."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:366
+#, no-c-format
+msgid ""
+"Every local interface of an enterprise Web Bean that does not have a "
+"wildcard type parameter or type variable, and every one of its "
+"superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean "
+"has a bean class local view, the bean class, and every one of its "
+"superclasses, is also an API type."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:372
+#, no-c-format
+msgid ""
+"Stateful session beans should declare a remove method with no parameters or "
+"a remove method annotated <literal>@Destructor</literal>. The Web Bean "
+"manager calls this method to destroy the stateful session bean instance at "
+"the end of its lifecycle. This method is called the <emphasis>destructor</"
+"emphasis> method of the enterprise Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:378
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful @SessionScoped\n"
+"public class ShoppingCart {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:380
+#, no-c-format
+msgid ""
+"So when should we use an enterprise Web Bean instead of a simple Web Bean? "
+"Well, whenever we need the advanced enterprise services offered by EJB, such "
+"as:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:387
+#, no-c-format
+msgid "method-level transaction management and security,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:390
+#, no-c-format
+msgid "concurrency management,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:393
+#, no-c-format
+msgid ""
+"instance-level passivation for stateful session beans and instance-pooling "
+"for stateless session beans,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:397
+#, no-c-format
+msgid "remote and web service invocation, and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:400
+#, no-c-format
+msgid "timers and asynchronous methods,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:404
+#, no-c-format
+msgid ""
+"we should use an enterprise Web Bean. When we don't need any of these "
+"things, a simple Web Bean will serve just fine."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:407
+#, no-c-format
+msgid ""
+"Many Web Beans (including any session or application scoped Web Bean) are "
+"available for concurrent access. Therefore, the concurrency management "
+"provided by EJB 3.1 is especially useful. Most session and application "
+"scoped Web Beans should be EJBs."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:412
+#, no-c-format
+msgid ""
+"Web Beans which hold references to heavy-weight resources, or hold a lot of "
+"internal state benefit from the advanced container-managed lifecycle defined "
+"by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/"
+"<literal>@Singleton</literal> model, with its support for passivation and "
+"instance pooling."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:417
+#, no-c-format
+msgid ""
+"Finally, it's usually obvious when method-level transaction management, "
+"method-level security, timers, remote methods or asynchronous methods are "
+"needed."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:420
+#, no-c-format
+msgid ""
+"It's usually easy to start with simple Web Bean, and then turn it into an "
+"EJB, just by adding an annotation: <literal>@Stateless</literal>, "
+"<literal>@Stateful</literal> or <literal>@Singleton</literal>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:427
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:429
+#, no-c-format
+msgid ""
+"A <emphasis>producer method</emphasis> is a method that is called by the Web "
+"Bean manager to obtain an instance of the Web Bean when no instance exists "
+"in the current context. A producer method lets the application take full "
+"control of the instantiation process, instead of leaving instantiation to "
+"the Web Bean manager. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:435
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"\n"
+"    private Random random = new Random( System.currentTimeMillis() );\n"
+"    \n"
+"    @Produces @Random int next() {\n"
+"        return random.nextInt(100);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:437
+#, no-c-format
+msgid ""
+"The result of a producer method is injected just like any other Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:439
+#, no-c-format
+msgid "<![CDATA[@Random int randomNumber]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:441
+#, no-c-format
+msgid ""
+"The method return type and all interfaces it extends/implements directly or "
+"indirectly are API types of the producer method. If the return type is a "
+"class, all superclasses are also API types."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:445
+#, no-c-format
+msgid "Some producer methods return objects that require explicit destruction:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:447
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
+"    return createConnection( user.getId(), user.getPassword() );\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:449
+#, no-c-format
+msgid ""
+"These producer methods may define matching <emphasis>disposal methods</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:451
+#, no-c-format
+msgid ""
+"<![CDATA[void close(@Disposes Connection connection) {\n"
+"    connection.close();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:453
+#, no-c-format
+msgid ""
+"This disposal method is called automatically by the Web Bean manager at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:456
+#, no-c-format
+msgid ""
+"We'll talk much more about producer methods in <xref linkend="
+"\"producermethods\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:461
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:463
+#, no-c-format
+msgid ""
+"Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the "
+"developer from the tedium of managing the lifecycles of all the various JMS "
+"objects required to send messages to queues and topics. We'll discuss JMS "
+"endpoints in <xref linkend=\"jms\"/>."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/intro.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/next.po (from rev 638, doc/trunk/reference/es-ES/modules/next.po)
===================================================================
--- doc/trunk/reference/es-ES/next.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/next.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,49 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: next.xml:4
+#, no-c-format
+msgid "Next steps"
+msgstr ""
+
+#. Tag: para
+#: next.xml:6
+#, no-c-format
+msgid ""
+"Because Web Beans is so new, there's not yet a lot of information available "
+"online."
+msgstr ""
+
+#. Tag: para
+#: next.xml:9
+#, no-c-format
+msgid ""
+"Of course, the Web Beans specification is the best source of more "
+"information about Web Beans. The spec is about 100 pages long, only twice "
+"the length of this article, and almost as readable. But, of course, it "
+"covers many details that we've skipped over. The spec is available from "
+"<literal>http://jcp.org/en/jsr/detail?id=299</literal>."
+msgstr ""
+
+#. Tag: para
+#: next.xml:15
+#, no-c-format
+msgid ""
+"The Web Beans Reference implementation is being developed at <literal>http://"
+"seamframework.org/WebBeans</literal>. The RI development team and the Web "
+"Beans spec lead blog at <literal>http://in.relation.to</literal>. This "
+"article is substantially based upon a series of blog entries published there."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/next.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/part1.po (from rev 638, doc/trunk/reference/es-ES/modules/part1.po)
===================================================================
--- doc/trunk/reference/es-ES/part1.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/part1.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,229 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part1.xml:5
+#, no-c-format
+msgid ""
+"The Web Beans (JSR-299) specification defines a set of services for the Java "
+"EE environment that makes applications much easier to develop. Web Beans "
+"layers an enhanced lifecycle and interaction model over existing Java "
+"component types including JavaBeans and Enterprise Java Beans. As a "
+"complement to the traditional Java EE programming model, the Web Beans "
+"services provide:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:14
+#, no-c-format
+msgid ""
+"an improved lifecycle for stateful components, bound to well-defined "
+"<emphasis>contexts</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:18
+#, no-c-format
+msgid "a typesafe approach to <emphasis>dependency injection</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:21
+#, no-c-format
+msgid ""
+"interaction via an <emphasis>event notification</emphasis> facility, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:25
+#, no-c-format
+msgid ""
+"a better approach to binding <emphasis>interceptors</emphasis> to "
+"components, along with a new kind of interceptor, called a "
+"<emphasis>decorator</emphasis>, that is more appropriate for use in solving "
+"business problems."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:32
+#, no-c-format
+msgid ""
+"Dependency injection, together with contextual lifecycle management, saves "
+"the user of an unfamiliar API from having to ask and answer the following "
+"questions:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:38
+#, no-c-format
+msgid "what is the lifecycle of this object?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:41
+#, no-c-format
+msgid "how many simultaneous clients can it have?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:44
+#, no-c-format
+msgid "is it multithreaded?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:47
+#, no-c-format
+msgid "where can I get one from?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:50
+#, no-c-format
+msgid "do I need to explicitly destroy it?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:53
+#, no-c-format
+msgid "where should I keep my reference to it when I'm not using it directly?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:57
+#, no-c-format
+msgid ""
+"how can I add an indirection layer, so that the implementation of this "
+"object can vary at deployment time?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:61
+#, no-c-format
+msgid "how should I go about sharing this object between other objects?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:65
+#, no-c-format
+msgid ""
+"A Web Bean specifies only the type and semantics of other Web Beans it "
+"depends upon. It need not be aware of the actual lifecycle, concrete "
+"implementation, threading model or other clients of any Web Bean it depends "
+"upon. Even better, the concrete implementation, lifecycle and threading "
+"model of a Web Bean it depends upon may vary according to the deployment "
+"scenario, without affecting any client."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:72
+#, no-c-format
+msgid ""
+"Events, interceptors and decorators enhance the <emphasis>loose-coupling</"
+"emphasis> that is inherent in this model:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:77
+#, no-c-format
+msgid ""
+"<emphasis>event notifications</emphasis> decouple event producers from event "
+"consumers,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:81
+#, no-c-format
+msgid ""
+"<emphasis>interceptors</emphasis> decouple technical concerns from business "
+"logic, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:85
+#, no-c-format
+msgid ""
+"<emphasis>decorators</emphasis> allow business concerns to be "
+"compartmentalized."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:90
+#, no-c-format
+msgid ""
+"Most importantly, Web Beans provides all these facilities in a "
+"<emphasis>typesafe</emphasis> way. Web Beans never uses string-based "
+"identifiers to determine how collaborating objects fit together. And XML, "
+"though it remains an option, is rarely used. Instead, Web Beans uses the "
+"typing information that is already available in the Java object model, "
+"together with a new pattern, called <emphasis>binding annotations</"
+"emphasis>, to wire together Web Beans, their dependencies, their "
+"interceptors and decorators and their event consumers."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:100
+#, no-c-format
+msgid ""
+"The Web Beans services are general and apply to the following types of "
+"components that exist in the Java EE environment:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:105
+#, no-c-format
+msgid "all JavaBeans,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:108
+#, no-c-format
+msgid "all EJBs, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:111
+#, no-c-format
+msgid "all Servlets."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:115
+#, no-c-format
+msgid ""
+"Web Beans even provides the necessary integration points so that other kinds "
+"of components defined by future Java EE specifications or by non-standard "
+"frameworks may be cleanly integrated with Web Beans, take advantage of the "
+"Web Beans services, and interact with any other kind of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:120
+#, no-c-format
+msgid ""
+"Web Beans was influenced by a number of existing Java frameworks, including "
+"Seam, Guice and Spring. However, Web Beans has its own very distinct "
+"character: more typesafe than Seam, more stateful and less XML-centric than "
+"Spring, more web and enterprise-application capable than Guice."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:125
+#, no-c-format
+msgid ""
+"Most importantly, Web Beans is a JCP standard that integrates cleanly with "
+"Java EE, and with any Java SE environment where embeddable EJB Lite is "
+"available."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/part1.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/part2.po (from rev 638, doc/trunk/reference/es-ES/modules/part2.po)
===================================================================
--- doc/trunk/reference/es-ES/part2.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/part2.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,102 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part2.xml:5
+#, no-c-format
+msgid ""
+"The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. "
+"We've already seen three means of achieving loose coupling:"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:10
+#, no-c-format
+msgid ""
+"<emphasis>deployment types</emphasis> enable deployment time polymorphism,"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:14
+#, no-c-format
+msgid "<emphasis>producer methods</emphasis> enable runtime polymorphism, and"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:18
+#, no-c-format
+msgid ""
+"<emphasis>contextual lifecycle management</emphasis> decouples Web Bean "
+"lifecycles."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:23
+#, no-c-format
+msgid ""
+"These techniques serve to enable loose coupling of client and server. The "
+"client is no longer tightly bound to an implementation of an API, nor is it "
+"required to manage the lifecycle of the server object. This approach lets "
+"<emphasis>stateful objects interact as if they were services</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:28
+#, no-c-format
+msgid ""
+"Loose coupling makes a system more <emphasis>dynamic</emphasis>. The system "
+"can respond to change in a well-defined manner. In the past, frameworks that "
+"attempted to provide the facilities listed above invariably did it by "
+"sacrificing type safety. Web Beans is the first technology that achieves "
+"this level of loose coupling in a typesafe way."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:34
+#, no-c-format
+msgid ""
+"Web Beans provides three extra important facilities that further the goal of "
+"loose coupling:"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:39
+#, no-c-format
+msgid ""
+"<emphasis>interceptors</emphasis> decouple technical concerns from business "
+"logic,"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:43
+#, no-c-format
+msgid ""
+"<emphasis>decorators</emphasis> may be used to decouple some business "
+"concerns, and"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:47
+#, no-c-format
+msgid ""
+"<emphasis>event notifications</emphasis> decouple event producers from event "
+"consumers."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:52
+#, no-c-format
+msgid "Let's explore interceptors first."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/part2.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/part3.po (from rev 638, doc/trunk/reference/es-ES/modules/part3.po)
===================================================================
--- doc/trunk/reference/es-ES/part3.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/part3.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,150 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part3.xml:5
+#, no-c-format
+msgid ""
+"The second major theme of Web Beans is <emphasis>strong typing</emphasis>. "
+"The information about the dependencies, interceptors and decorators of a Web "
+"Bean, and the information about event consumers for an event producer, is "
+"contained in typesafe Java constructs that may be validated by the compiler."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:10
+#, no-c-format
+msgid ""
+"You don't see string-based identifiers in Web Beans code, not because the "
+"framework is hiding them from you using clever defaulting rules&#151;so-"
+"called \"configuration by convention\"&#151;but because there are simply no "
+"strings there to begin with!"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:15
+#, no-c-format
+msgid ""
+"The obvious benefit of this approach is that <emphasis>any</emphasis> IDE "
+"can provide autocompletion, validation and refactoring without the need for "
+"special tooling. But there is a second, less-immediately-obvious, benefit. "
+"It turns out that when you start thinking of identifying objects, events or "
+"interceptors via annotations instead of names, you have an opportunity to "
+"lift the semantic level of your code."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:21
+#, no-c-format
+msgid ""
+"Web Beans encourages you develop annotations that model concepts, for "
+"example,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:26
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:29
+#, no-c-format
+msgid "<literal>@Mock</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:32
+#, no-c-format
+msgid "<literal>@Secure</literal> or"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:35
+#, no-c-format
+msgid "<literal>@Updated</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:39
+#, no-c-format
+msgid "instead of using compound names like"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:43
+#, no-c-format
+msgid "<literal>asyncPaymentProcessor</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:46
+#, no-c-format
+msgid "<literal>mockPaymentProcessor</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:49
+#, no-c-format
+msgid "<literal>SecurityInterceptor</literal> or"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:52
+#, no-c-format
+msgid "<literal>DocumentUpdatedEvent</literal>."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:56
+#, no-c-format
+msgid ""
+"The annotations are reusable. They help describe common qualities of "
+"disparate parts of the system. They help us categorize and understand our "
+"code. They help us deal with common concerns in a common way. They make our "
+"code more literate and more understandable."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:61
+#, no-c-format
+msgid ""
+"Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A "
+"stereotype models a common <emphasis>role</emphasis> in your application "
+"architecture. It encapsulates various properties of the role, including "
+"scope, interceptor bindings, deployment type, etc, into a single reusable "
+"package."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:66
+#, no-c-format
+msgid ""
+"Even Web Beans XML metadata is strongly typed! There's no compiler for XML, "
+"so Web Beans takes advantage of XML schemas to validate the Java types and "
+"attributes that appear in XML. This approach turns out to make the XML more "
+"literate, just like annotations made our Java code more literate."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:71
+#, no-c-format
+msgid ""
+"We're now ready to meet some more advanced features of Web Beans. Bear in "
+"mind that these features exist to make our code both easier to validate and "
+"more understandable. Most of the time you don't ever really <emphasis>need</"
+"emphasis> to use these features, but if you use them wisely, you'll come to "
+"appreciate their power."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/part3.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/part4.po (from rev 638, doc/trunk/reference/es-ES/modules/part4.po)
===================================================================
--- doc/trunk/reference/es-ES/part4.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/part4.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,52 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part4.xml:5
+#, no-c-format
+msgid ""
+"The third theme of Web Beans is <emphasis>integration</emphasis>. Web Beans "
+"was designed to work in concert with other technologies, helping the "
+"application developer fit the other technologies together. Web Beans is an "
+"open technology. It forms a part of the Java EE ecosystem, and is itself the "
+"foundation for a new ecosystem of portable extensions and integration with "
+"existing frameworks and technologies."
+msgstr ""
+
+#. Tag: para
+#: part4.xml:12
+#, no-c-format
+msgid ""
+"We've already seen how Web Beans helps integrate EJB and JSF, allowing EJBs "
+"to be bound directly to JSF pages. That's just the beginning. Web Beans "
+"offers the same potential to diverse other technologies, such as Business "
+"Process Management engines, other Web Frameworks, and third-party component "
+"models. The Java EE platform will never be able to standardize all the "
+"interesting technologies that are used in the world of Java application "
+"development, but Web Beans makes it easier to use the technologies which are "
+"not yet part of the platform seamlessly within the Java EE environment."
+msgstr ""
+
+#. Tag: para
+#: part4.xml:21
+#, no-c-format
+msgid ""
+"We're about to see how to take full advantage of the Java EE platform in an "
+"application that uses Web Beans. We'll also briefly meet a set of SPIs that "
+"are provided to support portable extensions to Web Beans. You might not ever "
+"need to use these SPIs directly, but it's nice to know they are there if you "
+"need them. Most importantly, you'll take advantage of them indirectly, every "
+"time you use a third-party extension."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/part4.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/producermethods.po (from rev 638, doc/trunk/reference/es-ES/modules/producermethods.po)
===================================================================
--- doc/trunk/reference/es-ES/producermethods.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/producermethods.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,247 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: producermethods.xml:5
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:7
+#, no-c-format
+msgid ""
+"Producer methods let us overcome certain limitations that arise when the Web "
+"Bean manager, instead of the application, is responsible for instantiating "
+"objects. They're also the easiest way to integrate objects which are not Web "
+"Beans into the Web Beans environment. (We'll meet a second approach in <xref "
+"linkend=\"xml\"/>.)"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:12
+#, no-c-format
+msgid "According to the spec:"
+msgstr ""
+
+#. Tag: chapter
+#: producermethods.xml:12
+#, no-c-format
+msgid ""
+"<blockquote> <para>A Web Beans producer method acts as a source of objects "
+"to be injected, where:</para> <itemizedlist> <listitem> <para>the objects to "
+"be injected are not required to be instances of Web Beans,</para> </"
+"listitem> <listitem> <para>the concrete type of the objects to be injected "
+"may vary at runtime or</para> </listitem> <listitem> <para>the objects "
+"require some custom initialization that is not performed by the Web Bean "
+"constructor</para> </listitem> </itemizedlist> </blockquote> <para>For "
+"example, producer methods let us:</para> <itemizedlist> <listitem> "
+"<para>expose a JPA entity as a Web Bean,</para> </listitem> <listitem> "
+"<para>expose any JDK class as a Web Bean,</para> </listitem> <listitem> "
+"<para>define multiple Web Beans, with different scopes or initialization, "
+"for the same implementation class, or</para> </listitem> <listitem> "
+"<para>vary the implementation of an API type at runtime.</para> </listitem> "
+"</itemizedlist> <para>In particular, producer methods let us use runtime "
+"polymorphism with Web Beans. As we've seen, deployment types are a powerful "
+"solution to the problem of deployment-time polymorphism. But once the system "
+"is deployed, the Web Bean implementation is fixed. A producer method has no "
+"such limitation:</para> <programlisting role=\"JAVA\"><![CDATA"
+"[@SessionScoped\n"
+"public class Preferences {\n"
+"    \n"
+"    private PaymentStrategyType paymentStrategy;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    @Produces @Preferred \n"
+"    public PaymentStrategy getPaymentStrategy() {\n"
+"        switch (paymentStrategy) {\n"
+"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
+"            case CHEQUE: return new ChequePaymentStrategy();\n"
+"            case PAYPAL: return new PayPalPaymentStrategy();\n"
+"            default: return null;\n"
+"        } \n"
+"    }\n"
+"    \n"
+"}]]></programlisting> <para>Consider an injection point:</para> "
+"<programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy "
+"paymentStrat;]]></programlisting> <para>This injection point has the same "
+"type and binding annotations as the producer method, so it resolves to the "
+"producer method using the usual Web Beans injection rules. The producer "
+"method will be called by the Web Bean manager to obtain an instance to "
+"service this injection point.</para>."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:68
+#, no-c-format
+msgid "Scope of a producer method"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:70
+#, no-c-format
+msgid ""
+"The scope of the producer method defaults to <literal>@Dependent</literal>, "
+"and so it will be called <emphasis>every time</emphasis> the Web Bean "
+"manager injects this field or any other field that resolves to the same "
+"producer method. Thus, there could be multiple instances of the "
+"<literal>PaymentStrategy</literal> object for each user session."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:75
+#, no-c-format
+msgid ""
+"To change this behavior, we can add a <literal>@SessionScoped</literal> "
+"annotation to the method."
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy() {\n"
+"    ...\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:80
+#, no-c-format
+msgid ""
+"Now, when the producer method is called, the returned "
+"<literal>PaymentStrategy</literal> will be bound to the session context. The "
+"producer method won't be called again in the same session."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:87
+#, no-c-format
+msgid "Injection into producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:89
+#, no-c-format
+msgid ""
+"There's one potential problem with the code above. The implementations of "
+"<literal>CreditCardPaymentStrategy</literal> are instantiated using the Java "
+"<literal>new</literal> operator. Objects instantiated directly by the "
+"application can't take advantage of dependency injection and don't have "
+"interceptors."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:94
+#, no-c-format
+msgid ""
+"If this isn't what we want we can use dependency injection into the producer "
+"method to obtain Web Bean instances:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:97
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
+"                                          ChequePaymentStrategy cps,\n"
+"                                          PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:99
+#, no-c-format
+msgid ""
+"Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request "
+"scoped Web Bean? Then the producer method has the effect of \"promoting\" "
+"the current request scoped instance into session scope. This is almost "
+"certainly a bug! The request scoped object will be destroyed by the Web Bean "
+"manager before the session ends, but the reference to the object will be "
+"left \"hanging\" in the session scope. This error will <emphasis>not</"
+"emphasis> be detected by the Web Bean manager, so please take extra care "
+"when returning Web Bean instances from producer methods!"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:107
+#, no-c-format
+msgid ""
+"There's at least three ways we could go about fixing this bug. We could "
+"change the scope of the <literal>CreditCardPaymentStrategy</literal> "
+"implementation, but this would affect other clients of that Web Bean. A "
+"better option would be to change the scope of the producer method to "
+"<literal>@Dependent</literal> or <literal>@RequestScoped</literal>."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:113
+#, no-c-format
+msgid ""
+"But a more common solution is to use the special <literal>@New</literal> "
+"binding annotation."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:119
+#, no-c-format
+msgid "Use of <literal>@New</literal> with producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:121
+#, no-c-format
+msgid "Consider the following producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:123
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy "
+"ccps,\n"
+"                                          @New ChequePaymentStrategy cps,\n"
+"                                          @New PayPalPaymentStrategy ppps) "
+"{\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:125
+#, no-c-format
+msgid ""
+"Then a new <emphasis>dependent</emphasis> instance of "
+"<literal>CreditCardPaymentStrategy</literal> will be created, passed to the "
+"producer method, returned by the producer method and finally bound to the "
+"session context. The dependent object won't be destroyed until the "
+"<literal>Preferences</literal> object is destroyed, at the end of the "
+"session."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/producermethods.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/ri-spi.po (from rev 638, doc/trunk/reference/es-ES/modules/ri-spi.po)
===================================================================
--- doc/trunk/reference/es-ES/ri-spi.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/ri-spi.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,272 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-20 22:07+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri-spi.xml:4
+#, no-c-format
+msgid "Integrating the Web Beans RI into other environments"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:6
+#, no-c-format
+msgid ""
+"Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI into "
+"other EE environments (for example another application server like "
+"Glassfish), into a servlet container (like Tomcat), or with an Embedded "
+"EJB3.1 implementation is fairly easy. In this Appendix we will briefly "
+"discuss the steps needed."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:15
+#, no-c-format
+msgid ""
+"It should be possible to run Web Beans in an SE environment, but you'll to "
+"do more work, adding your own contexts and lifecycle. The Web Beans RI "
+"currently doesn't expose lifecycle extension points, so you would have to "
+"code directly against Web Beans RI classes."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:24
+#, no-c-format
+msgid "The Web Beans RI SPI"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:26
+#, no-c-format
+msgid ""
+"The Web Beans SPI is located in <literal>webbeans-ri-spi</literal> module, "
+"and packaged as <literal>webbeans-ri-spi.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:31
+#, no-c-format
+msgid "Currently, the only SPI to implement is the bootstrap spi:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[public interface WebBeanDiscovery {\n"
+"   /**\n"
+"    * Gets list of all classes in classpath archives with web-beans.xml "
+"files\n"
+"    * \n"
+"    * @return An iterable over the classes \n"
+"    */\n"
+"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
+"   \n"
+"   /**\n"
+"    * Gets a list of all web-beans.xml files in the app classpath\n"
+"    * \n"
+"    * @return An iterable over the web-beans.xml files \n"
+"    */\n"
+"   public Iterable<URL> discoverWebBeansXml();\n"
+"   \n"
+"   /**\n"
+"    * Gets a descriptor for each EJB in the application\n"
+"    * \n"
+"    * @return The bean class to descriptor map \n"
+"    */\n"
+"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:37
+#, no-c-format
+msgid ""
+"The discovery of Web Bean classes and <literal>web-bean.xml</literal> files "
+"is self-explanatory (the algorithm is described in Section 11.1 of the JSR-"
+"299 specification, and isn't repeated here)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:43
+#, no-c-format
+msgid ""
+"The Web Beans RI also delegates EJB3 bean discovery to the container so that "
+"it doesn't have to scan for EJB3 annotations or parse <literal>ejb-jar.xml</"
+"literal>. For each EJB in the application an EJBDescriptor should be "
+"discovered:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:50
+#, no-c-format
+msgid ""
+"<![CDATA[public interface EjbDescriptor<T> {\n"
+"   \n"
+"   /**\n"
+"    * Gets the EJB type\n"
+"    * \n"
+"    * @return The EJB Bean class\n"
+"    */\n"
+"   public Class<T> getType();\n"
+"\n"
+"   /**\n"
+"    * Gets the local business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the local business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces"
+"();\n"
+"   \n"
+"   /**\n"
+"    * Gets the remote business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remote business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> "
+"getRemoteBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Get the remove methods of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remove methods\n"
+"    */\n"
+"   public Iterable<Method> getRemoveMethods();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is stateless\n"
+"    * \n"
+"    * @return True if stateless, false otherwise\n"
+"    */\n"
+"   public boolean isStateless();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is a EJB 3.1 Singleton\n"
+"    * \n"
+"    * @return True if the bean is a singleton, false otherwise\n"
+"    */\n"
+"   public boolean isSingleton();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is stateful\n"
+"    * \n"
+"    * @return True if the bean is stateful, false otherwise\n"
+"    */\n"
+"   public boolean isStateful();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is and MDB\n"
+"    * \n"
+"    * @return True if the bean is an MDB, false otherwise\n"
+"    */\n"
+"   public boolean isMessageDriven();\n"
+"\n"
+"   /**\n"
+"    * Gets the EJB name\n"
+"    * \n"
+"    * @return The name\n"
+"    */\n"
+"   public String getEjbName();\n"
+"   \n"
+"   /**\n"
+"    * @return The JNDI string which can be used to lookup a proxy which \n"
+"    * implements all local business interfaces \n"
+"    * \n"
+"    */\n"
+"   public String getLocalJndiName();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:52
+#, no-c-format
+msgid ""
+"The contract described the JavaDoc is enough to implement an EJBDescriptor. "
+"In addition to these two interfaces, there is "
+"<literal>BusinessInterfaceDescriptor</literal> which represents a local "
+"business interface (encapsulating the interface class and jndi name)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:59
+#, no-c-format
+msgid ""
+"The Web Beans RI can be told to load your implementation of "
+"<literal>WebBeanDiscovery</literal> using the property <literal>org.jboss."
+"webbeans.bootstrap.webBeanDiscovery</literal> with the fully qualified class "
+"name as the value. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:66
+#, no-c-format
+msgid ""
+"org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration."
+"jbossas.WebBeanDiscoveryImpl"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:68
+#, no-c-format
+msgid ""
+"The property can either be specified as a system property, or in a "
+"properties file <literal>META-INF/web-beans-ri.properties</literal>."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:76
+#, no-c-format
+msgid "The contract with the container"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:78
+#, no-c-format
+msgid ""
+"There are a number of requirements that the Web Beans RI places on the "
+"container for correct functioning that fall outside implementation of APIs"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:86
+#, no-c-format
+msgid "Classloader isolation"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:90
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must enable, automatically, or through user "
+"configuation, classloader isolation for each Web Beans application"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:99
+#, no-c-format
+msgid "The <literal>webbeans-ri.jar</literal>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:103
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must insert the <literal>webbeans-ri.jar</"
+"literal> into the applications isolated classloader. It cannot be loaded "
+"from a shared classloader."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/ri-spi.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/ri.po (from rev 638, doc/trunk/reference/es-ES/modules/ri.po)
===================================================================
--- doc/trunk/reference/es-ES/ri.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/ri.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1003 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri.xml:4
+#, no-c-format
+msgid "The Web Beans Reference Implementation"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans Reference Implementation is being developed at <ulink url="
+"\"http://seamframework.org/WebBeans\">the Seam project</ulink>. You can "
+"download the latest developer release of Web Beans from the <ulink url="
+"\"http://seamframework.org/Download\">the downloads page</ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:13
+#, no-c-format
+msgid ""
+"The Web Beans RI comes with a two deployable example applications: "
+"<literal>webbeans-numberguess</literal>, a war example, containing only "
+"simple beans, and <literal>webbeans-translator</literal> an ear example, "
+"containing enterprise beans. To run the examples you'll need the following:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:22
+#, no-c-format
+msgid "the latest release of the Web Beans RI,"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:25
+#, no-c-format
+msgid "JBoss AS 5.0.0.GA, and"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:28
+#, no-c-format
+msgid "Ant 1.7.0."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:32
+#, no-c-format
+msgid ""
+"Currently, the Web Beans RI only runs on JBoss Application Server 5. You'll "
+"need to download JBoss AS 5.0.0.GA from <ulink url=\"http://www.jboss.org/"
+"jbossas/downloads/\">jboss.org</ulink>, and unzip it. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd /Applications\n"
+"$ unzip ~/jboss-5.0.0.GA.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:41
+#, no-c-format
+msgid ""
+"Next, download the Web Beans RI from <ulink url=\"http://seamframework.org/"
+"Download\">seamframework.org</ulink>, and unzip it. For example"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd ~/\n"
+"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:50
+#, no-c-format
+msgid ""
+"Next, we need to tell Web Beans where JBoss is located. Edit <literal>jboss-"
+"as/build.properties</literal> and set the <literal>jboss.home</literal> "
+"property. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:56
+#, no-c-format
+msgid "jboss.home=/Applications/jboss-5.0.0.GA"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:58
+#, no-c-format
+msgid ""
+"As Web Beans is a new piece of software, you need to update JBoss AS to run "
+"the Web Beans RI. Future versions of JBoss AS will include these updates, "
+"and this step won't be necessary."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:65
+#, no-c-format
+msgid ""
+"Currently, two updates are needed. Firstly, a new deployer, "
+"<literal>webbeans.deployer</literal> is added. This adds supports for Web "
+"Bean archives to JBoss AS, and allows the Web Beans RI to query the EJB3 "
+"container and discover which EJBs are installed in your application. "
+"Secondly, an update to JBoss EJB3 is needed."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:74
+#, no-c-format
+msgid ""
+"To install the update, you'll need Ant 1.7.0 installed, and the "
+"<literal>ANT_HOME</literal> environment variable set. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:79
+#, no-c-format
+msgid ""
+"$ unzip apache-ant-1.7.0.zip\n"
+"$ export ANT_HOME=~/apache-ant-1.7.0"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:81
+#, no-c-format
+msgid ""
+"Then, you can install the update. The update script will use Maven to "
+"download the Web Beans and EJB3 automatically."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:86
+#, no-c-format
+msgid ""
+"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
+"$ ant update"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:88
+#, no-c-format
+msgid "Now, you're ready to deploy your first example!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:93
+#, no-c-format
+msgid ""
+"The build scripts for the examples offer a number of targets, these are:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:99
+#, no-c-format
+msgid "<literal>ant restart</literal> - deploy the example in exploded format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:105
+#, no-c-format
+msgid ""
+"<literal>ant explode</literal> - update an exploded example, without "
+"restarting the deployment"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:111
+#, no-c-format
+msgid ""
+"<literal>ant deploy</literal> - deploy the example in compressed jar format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:116
+#, no-c-format
+msgid "<literal>ant undeploy</literal> - remove the example from the server"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:121
+#, no-c-format
+msgid "<literal>ant clean</literal> - clean the example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:128
+#, no-c-format
+msgid "To deploy the numberguess example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:132
+#, no-c-format
+msgid ""
+"$ cd examples/numberguess\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:134
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and enjoy hours of fun at <ulink url="
+"\"http://localhost:8080/webbeans-numberguess\"></ulink>!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:139
+#, no-c-format
+msgid ""
+"The Web Beans RI includes a second simple example that will translate your "
+"text into Latin. The numberguess example is a war example, and uses only "
+"simple beans; the translator example is an ear example, and includes "
+"enterprise beans, packaged in an EJB module. To try it out:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:146
+#, no-c-format
+msgid ""
+"$ cd examples/translator\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:148
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and visit <ulink url=\"http://"
+"localhost:8080/webbeans-translator\"></ulink>!"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:154
+#, no-c-format
+msgid "The numberguess example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:156
+#, no-c-format
+msgid ""
+"In the numberguess application you get given 10 attempts to guess a number "
+"between 1 and 100. After each attempt, you will be told whether you are too "
+"high, or too low."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:162
+#, no-c-format
+msgid ""
+"The numberguess example is comprised of a number of Web Beans, configuration "
+"files, and Facelet JSF pages, packaged as a war. Let's start with the "
+"configuration files."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:168
+#, no-c-format
+msgid ""
+"All the configuration files for this example are located in <literal>WEB-INF/"
+"</literal>, which is stored in <literal>WebContent</literal> in the source "
+"tree. First, we have <literal>faces-config.xml</literal>, in which we tell "
+"JSF to use Facelets:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
+"<faces-config version=\"1.2\"\n"
+"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
+"    \n"
+"    <application>\n"
+"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
+"    </application>\n"
+"\n"
+"</faces-config>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:178
+#, no-c-format
+msgid ""
+"There is an empty <literal>web-beans.xml</literal> file, which marks this "
+"application as a Web Beans application."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:183
+#, no-c-format
+msgid "Finally there is <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: section
+#: ri.xml:185
+#, no-c-format
+msgid ""
+"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
+"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
+"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
+"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
+"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"\n"
+"<web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
+"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
+"   \n"
+"   <display-name>Web Beans Numbergues example</display-name>\n"
+"\n"
+"   <!-- JSF -->\n"
+"\n"
+"   <servlet>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
+"      <load-on-startup>1</load-on-startup>\n"
+"   </servlet>\n"
+"\n"
+"   <servlet-mapping>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <url-pattern>*.jsf</url-pattern>\n"
+"   </servlet-mapping>\n"
+"   \n"
+"   <context-param>\n"
+"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
+"      <param-value>.xhtml</param-value>\n"
+"   </context-param>\n"
+"\n"
+"   <session-config>\n"
+"      <session-timeout>10</session-timeout>\n"
+"   </session-config>\n"
+"   \n"
+"    <listener>\n"
+"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
+"class>\n"
+"    </listener>\n"
+"\n"
+"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
+"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
+"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
+"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
+"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
+"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
+"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
+"session timeout of 10 minutes </para> </callout> <callout arearefs="
+"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
+"Beans services can be used in the servlet request </para> </callout> </"
+"calloutlist> </programlistingco> <note> <para> The only configuration "
+"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
+"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
+"the Web Beans RI with any Servlet based web framework; just configure the "
+"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
+"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
+"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
+"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
+"\"30\"/> <area id=\"submit\" coords=\"33\"/> </areaspec> <programlisting><!"
+"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
+"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
+"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
+"\n"
+"  <ui:composition template=\"template.xhtml\">\n"
+"    <ui:define name=\"content\">\n"
+"       <h1>Guess a number...</h1>\n"
+"       <h:form id=\"NumberGuessMain\">\n"
+"          <div style=\"color: red\">\n"
+"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
+"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
+"number gt game.guess and game.guess ne 0}\"/>\n"
+"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
+"number lt game.guess and game.guess ne 0}\"/>\n"
+"          </div>\n"
+"   \n"
+"          <div>\n"
+"             I'm thinking of a number between #{game.smallest} and #{game."
+"biggest}.\n"
+"             You have #{game.remainingGuesses} guesses.\n"
+"          </div>\n"
+"     \n"
+"          <div>\n"
+"             Your guess: \n"
+"             <h:inputText id=\"inputGuess\" \n"
+"                          value=\"#{game.guess}\" \n"
+"                          required=\"true\" \n"
+"                          size=\"3\" \n"
+"                          disabled=\"#{game.number eq game.guess}\">\n"
+"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
+"                                     minimum=\"#{game.smallest}\"/>\n"
+"             </h:inputText>\n"
+"            <h:commandButton id=\"GuessButton\"  \n"
+"                             value=\"Guess\" \n"
+"                             action=\"#{game.check}\" \n"
+"                             disabled=\"#{game.number eq game.guess}\"/>\n"
+"          </div>\n"
+"          <div>\n"
+"            <h:commandButton id=\"RestartButton\" value=\"Reset\" action=\"#"
+"{game.reset}\" immediate=\"true\" />\n"
+"          </div>\n"
+"       </h:form>\n"
+"    </ui:define>\n"
+"  </ui:composition>\n"
+"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
+"<para> Facelets is a templating language for JSF, here we are wrapping our "
+"page in a template which defines the header. </para> </callout> <callout "
+"arearefs=\"messages\"> <para> There are a number of messages which can be "
+"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
+"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
+"range of numbers they can guess gets smaller - this sentance changes to make "
+"sure they know what range to guess in. </para> </callout> <callout arearefs="
+"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
+"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
+"range validator is used to make sure the user doesn't accidentally input a "
+"number outside of the range in which they can guess - if the validator "
+"wasn't here, the user might use up a guess on an out of range number. </"
+"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
+"must be a way for the user to send their guess to the server. Here we bind "
+"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
+"programlistingco>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:298
+#, no-c-format
+msgid ""
+"The example exists of 4 classes, the first two of which are binding types. "
+"First, there is the <literal>@Random</literal> binding type, used for "
+"injecting a random number:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:304
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface Random {}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:306
+#, no-c-format
+msgid ""
+"There is also the <literal>@MaxNumber</literal> binding type, used for "
+"injecting the maximum number that can be injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface MaxNumber {}\n"
+"]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:313
+#, no-c-format
+msgid ""
+"The <literal>Generator</literal> class is responsible for creating the "
+"random number, via a producer method. It also exposes the maximum possible "
+"number via a producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:319
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"   \n"
+"   private java.util.Random random = new java.util.Random( System."
+"currentTimeMillis() );\n"
+"   \n"
+"   private int maxNumber = 100;\n"
+"   \n"
+"   java.util.Random getRandom()\n"
+"   {\n"
+"      return random;\n"
+"   }\n"
+"   \n"
+"   @Produces @Random int next() { \n"
+"      return getRandom().nextInt(maxNumber); \n"
+"   }\n"
+"   \n"
+"   @Produces @MaxNumber int getMaxNumber()\n"
+"   {\n"
+"      return maxNumber;\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:321
+#, no-c-format
+msgid ""
+"You'll notice that the <literal>Generator</literal> is application scoped; "
+"therefore we don't get a different random each time."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:326
+#, no-c-format
+msgid ""
+"The final Web Bean in the application is the session scoped <literal>Game</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:331
+#, no-c-format
+msgid ""
+"You'll note that we've used the <literal>@Named</literal> annotation, so "
+"that we can use the bean through EL in the JSF page. Finally, we've used "
+"constructor injection to initialize the game with a random number. And of "
+"course, we need to tell the player when they've won, so we give feedback "
+"with a <literal>FacesMessage</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:339
+#, no-c-format
+msgid ""
+"<![CDATA[package org.jboss.webbeans.examples.numberguess;\n"
+"\n"
+"\n"
+"import javax.annotation.PostConstruct;\n"
+"import javax.faces.application.FacesMessage;\n"
+"import javax.faces.context.FacesContext;\n"
+"import javax.webbeans.AnnotationLiteral;\n"
+"import javax.webbeans.Current;\n"
+"import javax.webbeans.Initializer;\n"
+"import javax.webbeans.Named;\n"
+"import javax.webbeans.SessionScoped;\n"
+"import javax.webbeans.manager.Manager;\n"
+"\n"
+"@Named\n"
+"@SessionScoped\n"
+"public class Game\n"
+"{\n"
+"   private int number;\n"
+"   \n"
+"   private int guess;\n"
+"   private int smallest;\n"
+"   private int biggest;\n"
+"   private int remainingGuesses;\n"
+"   \n"
+"   @Current Manager manager;\n"
+"   \n"
+"   public Game()\n"
+"   {\n"
+"   }\n"
+"   \n"
+"   @Initializer\n"
+"   Game(@MaxNumber int maxNumber)\n"
+"   {      \n"
+"      this.biggest = maxNumber;\n"
+"   }\n"
+"\n"
+"   public int getNumber()\n"
+"   {\n"
+"      return number;\n"
+"   }\n"
+"   \n"
+"   public int getGuess()\n"
+"   {\n"
+"      return guess;\n"
+"   }\n"
+"   \n"
+"   public void setGuess(int guess)\n"
+"   {\n"
+"      this.guess = guess;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getRemainingGuesses()\n"
+"   {\n"
+"      return remainingGuesses;\n"
+"   }\n"
+"   \n"
+"   public String check()\n"
+"   {\n"
+"      if (guess>number)\n"
+"      {\n"
+"         biggest = guess - 1;\n"
+"      }\n"
+"      if (guess<number)\n"
+"      {\n"
+"         smallest = guess + 1;\n"
+"      }\n"
+"      if (guess == number)\n"
+"      {\n"
+"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
+"(\"Correct!\"));\n"
+"      }\n"
+"      remainingGuesses--;\n"
+"      return null;\n"
+"   }\n"
+"   \n"
+"   @PostConstruct\n"
+"   public void reset()\n"
+"   {\n"
+"      this.smallest = 0;\n"
+"      this.guess = 0;\n"
+"      this.remainingGuesses = 10;\n"
+"      this.number = manager.getInstanceByType(Integer.class, new "
+"AnnotationLiteral<Random>(){});\n"
+"   }\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:343
+#, no-c-format
+msgid "The translator example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:345
+#, no-c-format
+msgid ""
+"The translator example will take any sentences you enter, and translate them "
+"to Latin."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:350
+#, no-c-format
+msgid ""
+"The translator example is built as an ear, and contains EJBs and enterprise "
+"beans. As a result, it's structure is more complex than the numberguess "
+"example."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:357
+#, no-c-format
+msgid ""
+"EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will make "
+"this structure much simpler!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:363
+#, no-c-format
+msgid ""
+"First, let's take a look at the ear aggregator, which is located in "
+"<literal>webbeans-translator-ear</literal> module. Maven automatically "
+"generates the <literal>application.xml</literal> and <literal>jboss-app.xml</"
+"literal> for us:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:370
+#, no-c-format
+msgid ""
+"<![CDATA[<plugin>\n"
+"   <groupId>org.apache.maven.plugins</groupId>\n"
+"   <artifactId>maven-ear-plugin</artifactId>\n"
+"   <configuration>\n"
+"      <modules>\n"
+"         <webModule>\n"
+"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
+"            <artifactId>webbeans-translator-war</artifactId>\n"
+"            <contextRoot>/webbeans-translator</contextRoot>\n"
+"         </webModule>\n"
+"      </modules>\n"
+"      <jboss>\n"
+"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
+"loader-repository>\n"
+"      </jboss>\n"
+"   </configuration>\n"
+"</plugin>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:372
+#, no-c-format
+msgid ""
+"We're doing a couple of things here - firstly we set the context path, which "
+"gives us a nice url (<ulink url=\"http://localhost:8080/webbeans-translator"
+"\">http://localhost:8080/webbeans-translator</ulink>) and we also enable "
+"class loader isolation for JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:380
+#, no-c-format
+msgid ""
+"If you aren't using Maven to generate these files, you would need "
+"<literal>META-INF/jboss-app.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:385
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<!DOCTYPE jboss-app\n"
+"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
+"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
+"<jboss-app>\n"
+"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
+"repository>\n"
+"</jboss-app>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:387
+#, no-c-format
+msgid "and <literal>META-INF/application.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:391
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\">\n"
+"  <display-name>webbeans-translator-ear</display-name>\n"
+"  <description>Ear Example for the reference implementation of JSR 299: Web "
+"Beans</description>\n"
+"  \n"
+"  <module>\n"
+"    <web>\n"
+"      <web-uri>webbeans-translator.war</web-uri>\n"
+"      <context-root>/webbeans-translator</context-root>\n"
+"    </web>\n"
+"  </module>\n"
+"  <module>\n"
+"    <ejb>webbeans-translator.jar</ejb>\n"
+"  </module>\n"
+"</application>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:394
+#, no-c-format
+msgid ""
+"Next, lets look at the war. Just as in the numberguess example, we have a "
+"<literal>faces-config.xml</literal> (to enabled Facelets) and a <literal>web."
+"xml</literal> (to enable JSF and attach Web Beans services to the servlet "
+"container) in <literal>WebContent/WEB-INF</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:401
+#, no-c-format
+msgid ""
+"More intersting is the facelet used to translate text. Just as in the "
+"numberguess example we have a template, which surrounds the form (ommitted "
+"here for brevity):"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:407
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
+"            \n"
+"   <table>\n"
+"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
+"         <td>\n"
+"            Your text\n"
+"         </td>\n"
+"         <td>\n"
+"            Translation\n"
+"         </td>\n"
+"      </tr>\n"
+"      <tr>\n"
+"         <td>\n"
+"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
+"required=\"true\" rows=\"5\" cols=\"80\" />\n"
+"         </td>\n"
+"         <td>\n"
+"            <h:outputText value=\"#{translator.translatedText}\" />\n"
+"         </td>\n"
+"      </tr>\n"
+"   </table>\n"
+"   <div>\n"
+"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
+"{translator.translate}\"/>\n"
+"   </div>\n"
+"   \n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:409
+#, no-c-format
+msgid ""
+"The user can enter some text in the lefthand textarea, and hit the translate "
+"button to see the result to the right."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:414
+#, no-c-format
+msgid ""
+"Finally, let's look at the ejb module, <literal>webbeans-translator-ejb</"
+"literal>. There are two configuration files in <literal>src/main/resources/"
+"META-INF</literal>, an empty <literal>web-beans.xml</literal>, used to mark "
+"the archive as containing Web Beans, and <literal>ejb-jar.xml</literal>. Web "
+"Beans provides injection and initializtion services for all EJBs, and uses "
+"<literal>ejb-jar.xml</literal> to enable this, you'll need this in any EJB "
+"project which uses Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:426
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
+"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\">\n"
+"         \n"
+"   <interceptors>\n"
+"     <interceptor>\n"
+"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"     </interceptor>\n"
+"   </interceptors>\n"
+"   \n"
+"   <assembly-descriptor>\n"
+"      <interceptor-binding>\n"
+"         <ejb-name>*</ejb-name>\n"
+"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"      </interceptor-binding>\n"
+"   </assembly-descriptor>\n"
+"   \n"
+"</ejb-jar>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:428
+#, no-c-format
+msgid ""
+"We've saved the most interesting bit to last, the code! The project has two "
+"simple beans, <literal>SentanceParser</literal> and <literal>TextTranslator</"
+"literal> and two enterprise beans, <literal>TanslatorControllerBean</"
+"literal> and <literal>SentenceTranslator</literal>. You should be getting "
+"quite familiar with what a Web Bean looks like by now, so we'll just "
+"highlight the most interesting bits here."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:438
+#, no-c-format
+msgid ""
+"Both <literal>SentanceParser</literal> and <literal>TextTranslator</literal> "
+"are dependent beans, and <literal>TextTranslator</literal> uses constructor "
+"initialization:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:444
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator { \n"
+"   private SentenceParser sentenceParser; \n"
+"   private Translator sentenceTranslator; \n"
+"   \n"
+"   @Initializer\n"
+"   TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) \n"
+"   { \n"
+"      this.sentenceParser = sentenceParser; \n"
+"      this.sentenceTranslator = sentenceTranslator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:446
+#, no-c-format
+msgid ""
+"<literal>TextTranslator</literal> is a stateless bean (with a local business "
+"interface), where the magic happens - of course, we couldn't develop a full "
+"translator, but we gave it a good go!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:452
+#, no-c-format
+msgid ""
+"Finally, there is UI orientated controller, that collects the text from the "
+"user, and dispatches it to the translator. This is a request scoped, named, "
+"stateful session bean, which injects the translator."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:458
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful\n"
+"@RequestScoped\n"
+"@Named(\"translator\")\n"
+"public class TranslatorControllerBean implements TranslatorController\n"
+"{\n"
+"   \n"
+"   @Current TextTranslator translator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:460
+#, no-c-format
+msgid "The bean also has getters and setters for all the fields on the page."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:464
+#, no-c-format
+msgid "As this is a stateful session bean, we have to have a remove method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:468
+#, no-c-format
+msgid ""
+"<![CDATA[   @Remove\n"
+"   public void remove()\n"
+"   {\n"
+"      \n"
+"   }]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:470
+#, no-c-format
+msgid ""
+"The Web Beans manager will call the remove method for you when the bean is "
+"destroyed; in this case at the end of the request."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:476
+#, no-c-format
+msgid ""
+"That concludes our short tour of the Web Beans RI examples. For more on the "
+"RI, or to help out, please visit <ulink url=\"http://www.seamframework.org/"
+"WebBeans/Development\">http://www.seamframework.org/WebBeans/Development</"
+"ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:482
+#, no-c-format
+msgid ""
+"We need help in all areas - bug fixing, writing new features, writing "
+"examples and translating this reference guide."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/ri.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/scopescontexts.po (from rev 638, doc/trunk/reference/es-ES/modules/scopescontexts.po)
===================================================================
--- doc/trunk/reference/es-ES/scopescontexts.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/scopescontexts.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,582 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: scopescontexts.xml:4
+#, no-c-format
+msgid "Scopes and contexts"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen a few examples of <emphasis>scope type annotations</"
+"emphasis>. The scope of a Web Bean determines the lifecycle of instances of "
+"the Web Bean. The scope also determines which clients refer to which "
+"instances of the Web Bean. According to the Web Beans specification, a scope "
+"determines:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:14
+#, no-c-format
+msgid "When a new instance of any Web Bean with that scope is created"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:17
+#, no-c-format
+msgid "When an existing instance of any Web Bean with that scope is destroyed"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:20
+#, no-c-format
+msgid ""
+"Which injected references refer to any instance of a Web Bean with that scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:25
+#, no-c-format
+msgid ""
+"For example, if we have a session scoped Web Bean, <literal>CurrentUser</"
+"literal>, all Web Beans that are called in the context of the same "
+"<literal>HttpSession</literal> will see the same instance of "
+"<literal>CurrentUser</literal>. This instance will be automatically created "
+"the first time a <literal>CurrentUser</literal> is needed in that session, "
+"and automatically destroyed when the session ends."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:32
+#, no-c-format
+msgid "Scope types"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:34
+#, no-c-format
+msgid ""
+"Web Beans features an <emphasis>extensible context model</emphasis>. It is "
+"possible to define new scopes by creating a new scope type annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:37
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD})\n"
+"@ScopeType\n"
+"public @interface ClusterScoped {}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:39
+#, no-c-format
+msgid ""
+"Of course, that's the easy part of the job. For this scope type to be "
+"useful, we will also need to define a <literal>Context</literal> object that "
+"implements the scope! Implementing a <literal>Context</literal> is usually a "
+"very technical task, intended for framework development only."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:44
+#, no-c-format
+msgid ""
+"We can apply a scope type annotation to a Web Bean implementation class to "
+"specify the scope of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[@ClusterScoped\n"
+"public class SecondLevelCache { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:58
+#, no-c-format
+msgid "Usually, you'll use one of Web Beans' built-in scopes."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:63
+#, no-c-format
+msgid "Built-in scopes"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:65
+#, no-c-format
+msgid "Web Beans defines four built-in scopes:"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:69
+#, no-c-format
+msgid "@RequestScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:72
+#, no-c-format
+msgid "@SessionScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:75
+#, no-c-format
+msgid "@ApplicationScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:78
+#, no-c-format
+msgid "@ConversationScoped"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:82
+#, no-c-format
+msgid "For a web application that uses Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:86
+#, no-c-format
+msgid ""
+"any servlet request has access to active request, session and application "
+"scopes, and, additionally"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:90
+#, no-c-format
+msgid "any JSF request has access to an active conversation scope."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:94
+#, no-c-format
+msgid "The request and application scopes are also active:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:98
+#, no-c-format
+msgid "during invocations of EJB remote methods,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:101
+#, no-c-format
+msgid "during EJB timeouts,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:104
+#, no-c-format
+msgid "during message delivery to a message-driven bean, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:107
+#, no-c-format
+msgid "during web service invocations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:111
+#, no-c-format
+msgid ""
+"If the application tries to invoke a Web Bean with a scope that does not "
+"have an active context, a <literal>ContextNotActiveException</literal> is "
+"thrown by the Web Bean manager at runtime."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:115
+#, no-c-format
+msgid ""
+"Three of the four built-in scopes should be extremely familiar to every Java "
+"EE developer, so let's not waste time discussing them here. One of the "
+"scopes, however, is new."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:122
+#, no-c-format
+msgid "The conversation scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:124
+#, no-c-format
+msgid ""
+"The Web Beans conversation scope is a bit like the traditional session scope "
+"in that it holds state associated with a user of the system, and spans "
+"multiple requests to the server. However, unlike the session scope, the "
+"conversation scope:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:130
+#, no-c-format
+msgid "is demarcated explicitly by the application, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:133
+#, no-c-format
+msgid ""
+"holds state associated with a particular web browser tab in a JSF "
+"application."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:138
+#, no-c-format
+msgid ""
+"A conversation represents a task, a unit of work from the point of view of "
+"the user. The conversation context holds state associated with what the user "
+"is currently working on. If the user is doing multiple things at the same "
+"time, there are multiple conversations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:143
+#, no-c-format
+msgid ""
+"The conversation context is active during any JSF request. However, most "
+"conversations are destroyed at the end of the request. If a conversation "
+"should hold state across multiple requests, it must be explicitly promoted "
+"to a <emphasis>long-running conversation</emphasis>."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:149
+#, no-c-format
+msgid "Conversation demarcation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:151
+#, no-c-format
+msgid ""
+"Web Beans provides a built-in Web Bean for controlling the lifecyle of "
+"conversations in a JSF application. This Web Bean may be obtained by "
+"injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:154
+#, no-c-format
+msgid "@Current Conversation conversation;"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:156
+#, no-c-format
+msgid ""
+"To promote the conversation associated with the current request to a long-"
+"running conversation, call the <literal>begin()</literal> method from "
+"application code. To schedule the current long-running conversation context "
+"for destruction at the end of the current request, call <literal>end()</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:161
+#, no-c-format
+msgid ""
+"In the following example, a conversation-scoped Web Bean controls the "
+"conversation with which it is associated:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:164
+#, no-c-format
+msgid ""
+"@ConversationScoped @Stateful\n"
+"public class OrderBuilder {\n"
+"\n"
+"    private Order order;\n"
+"    private @Current Conversation conversation;\n"
+"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
+"    \n"
+"    @Produces public Order getOrder() {\n"
+"        return order;\n"
+"    }\n"
+"\n"
+"    public Order createOrder() {\n"
+"        order = new Order();\n"
+"        conversation.begin();\n"
+"        return order;\n"
+"    }\n"
+"    \n"
+"    public void addLineItem(Product product, int quantity) {\n"
+"        order.add( new LineItem(product, quantity) );\n"
+"    }\n"
+"\n"
+"    public void saveOrder(Order order) {\n"
+"        em.persist(order);\n"
+"        conversation.end();\n"
+"    }\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:166
+#, no-c-format
+msgid ""
+"This Web Bean is able to control its own lifecycle through use of the "
+"<literal>Conversation</literal> API. But some other Web Beans have a "
+"lifecycle which depends completely upon another object."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:173
+#, no-c-format
+msgid "Conversation propagation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:175
+#, no-c-format
+msgid ""
+"The conversation context automatically propagates with any JSF faces request "
+"(JSF form submission). It does not automatically propagate with non-faces "
+"requests, for example, navigation via a link."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:179
+#, no-c-format
+msgid ""
+"We can force the conversation to propagate with a non-faces request by "
+"including the unique identifier of the conversation as a request parameter. "
+"The Web Beans specification reserves the request parameter named "
+"<literal>cid</literal> for this use. The unique identifier of the "
+"conversation may be obtained from the <literal>Conversation</literal> "
+"object, which has the Web Beans name <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:186
+#, no-c-format
+msgid "Therefore, the following link propagates the conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:188
+#, no-c-format
+msgid ""
+"<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]"
+">"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:190
+#, no-c-format
+msgid ""
+"The Web Bean manager is also required to propagate conversations across any "
+"redirect, even if the conversation is not marked long-running. This makes it "
+"very easy to implement the common POST-then-redirect pattern, without resort "
+"to fragile constructs such as a \"flash\" object. In this case, the Web Bean "
+"manager automatically adds a request parameter to the redirect URL."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:200
+#, no-c-format
+msgid "Conversation timeout"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:202
+#, no-c-format
+msgid ""
+"The Web Bean manager is permitted to destroy a conversation and all state "
+"held in its context at any time in order to preserve resources. A Web Bean "
+"manager implementation will normally do this on the basis of some kind of "
+"timeout&#151;though this is not required by the Web Beans specification. The "
+"timeout is the period of inactivity before the conversation is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:208
+#, no-c-format
+msgid ""
+"The <literal>Conversation</literal> object provides a method to set the "
+"timeout. This is a hint to the Web Bean manager, which is free to ignore the "
+"setting."
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:212
+#, no-c-format
+msgid "conversation.setTimeout(timeoutInMillis);"
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:219
+#, no-c-format
+msgid "The dependent pseudo-scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:221
+#, no-c-format
+msgid ""
+"In addition to the four built-in scopes, Web Beans features the so-called "
+"<emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a "
+"Web Bean which does not explicitly declare a scope type."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:225
+#, no-c-format
+msgid ""
+"For example, this Web Bean has the scope type <literal>@Dependent</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:227
+#, no-c-format
+msgid "<![CDATA[public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:229
+#, no-c-format
+msgid ""
+"When an injection point of a Web Bean resolves to a dependent Web Bean, a "
+"new instance of the dependent Web Bean is created every time the first Web "
+"Bean is instantiated. Instances of dependent Web Beans are never shared "
+"between different Web Beans or different injection points. They are "
+"<emphasis>dependent objects</emphasis> of some other Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:235
+#, no-c-format
+msgid ""
+"Dependent Web Bean instances are destroyed when the instance they depend "
+"upon is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:243
+#, no-c-format
+msgid ""
+"Web Beans makes it easy to obtain a dependent instance of a Java class or "
+"EJB bean, even if the class or EJB bean is already declared as a Web Bean "
+"with some other scope type."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:248
+#, no-c-format
+msgid "The <literal>@New</literal> annotation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:250
+#, no-c-format
+msgid ""
+"The built-in <literal>@New</literal> binding annotation allows "
+"<emphasis>implicit</emphasis> definition of a dependent Web Bean at an "
+"injection point. Suppose we declare the following injected field:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:254
+#, no-c-format
+msgid "<![CDATA[@New Calculator calculator;]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:256
+#, no-c-format
+msgid ""
+"Then a Web Bean with scope <literal>@Dependent</literal>, binding type "
+"<literal>@New</literal>, API type <literal>Calculator</literal>, "
+"implementation class <literal>Calculator</literal> and deployment type "
+"<literal>@Standard</literal> is implicitly defined."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:261
+#, no-c-format
+msgid ""
+"This is true even if <literal>Calculator</literal> is <emphasis>already</"
+"emphasis> declared with a different scope type, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:264
+#, no-c-format
+msgid ""
+"<![CDATA[@ConversationScoped\n"
+"public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:266
+#, no-c-format
+msgid ""
+"So the following injected attributes each get a different instance of "
+"<literal>Calculator</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:269
+#, no-c-format
+msgid ""
+"<![CDATA[public class PaymentCalc {\n"
+"\n"
+"    @Current Calculator calculator;\n"
+"    @New Calculator newCalculator;\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:271
+#, no-c-format
+msgid ""
+"The <literal>calculator</literal> field has a conversation-scoped instance "
+"of <literal>Calculator</literal> injected. The <literal>newCalculator</"
+"literal> field has a new instance of <literal>Calculator</literal> injected, "
+"with a lifecycle that is bound to the owning <literal>PaymentCalc</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:276
+#, no-c-format
+msgid ""
+"This feature is particularly useful with producer methods, as we'll see in "
+"the next chapter."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/scopescontexts.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/specialization.po (from rev 638, doc/trunk/reference/es-ES/modules/specialization.po)
===================================================================
--- doc/trunk/reference/es-ES/specialization.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/specialization.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,291 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: specialization.xml:4
+#, no-c-format
+msgid "Specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:6
+#, no-c-format
+msgid ""
+"We've already seen how the Web Beans dependency injection model lets us "
+"<emphasis>override</emphasis> the implementation of an API at deployment "
+"time. For example, the following enterprise Web Bean provides an "
+"implementation of the API <literal>PaymentProcessor</literal> in production:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:11
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless\n"
+"public class CreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:13
+#, no-c-format
+msgid ""
+"But in our staging environment, we override that implementation of "
+"<literal>PaymentProcessor</literal> with a different Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:16
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless @Staging\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:18
+#, no-c-format
+msgid ""
+"What we've tried to do with <literal>StagingCreditCardPaymentProcessor</"
+"literal> is to completely replace <literal>AsyncPaymentProcessor</literal> "
+"in a particular deployment of the system. In that deployment, the deployment "
+"type <literal>@Staging</literal> would have a higher priority than the "
+"default deployment type <literal>@Production</literal>, and therefore "
+"clients with the following injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:24
+#, no-c-format
+msgid "@CreditCard PaymentProcessor ccpp"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:26
+#, no-c-format
+msgid ""
+"Would receive an instance of <literal>StagingCreditCardPaymentProcessor</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:28
+#, no-c-format
+msgid "Unfortunately, there are several traps we can easily fall into:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:32
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not implement all the API types of the Web "
+"Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:36
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not declare all the binding types of the "
+"Web Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:40
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean might not have the same name as the Web Bean "
+"that it attempts to override, or"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:44
+#, no-c-format
+msgid ""
+"the Web Bean that it attempts to override might declare a producer method, "
+"disposal method or observer method."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:49
+#, no-c-format
+msgid ""
+"In each of these cases, the Web Bean that we tried to override could still "
+"be called at runtime. Therefore, overriding is somewhat prone to developer "
+"error."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:52
+#, no-c-format
+msgid ""
+"Web Beans provides a special feature, called <emphasis>specialization</"
+"emphasis>, that helps the developer avoid these traps. Specialization looks "
+"a little esoteric at first, but it's easy to use in practice, and you'll "
+"really appreciate the extra security it provides."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:58
+#, no-c-format
+msgid "Using specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:60
+#, no-c-format
+msgid ""
+"Specialization is a feature that is specific to simple and enterprise Web "
+"Beans. To make use of specialization, the higher-priority Web Bean must:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:65
+#, no-c-format
+msgid "be a direct subclass of the Web Bean it overrides, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:68
+#, no-c-format
+msgid ""
+"be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or an "
+"enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:73
+#, no-c-format
+msgid "be annotated <literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:77
+#, no-c-format
+msgid ""
+"@Stateless @Staging @Specializes\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        extends CreditCardPaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:79
+#, no-c-format
+msgid ""
+"We say that the higher-priority Web Bean <emphasis>specializes</emphasis> "
+"its superclass."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:85
+#, no-c-format
+msgid "Advantages of specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:87
+#, no-c-format
+msgid "When specialization is used:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:91
+#, no-c-format
+msgid ""
+"the binding types of the superclass are automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:95
+#, no-c-format
+msgid ""
+"the Web Bean name of the superclass is automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:99
+#, no-c-format
+msgid ""
+"producer methods, disposal methods and observer methods declared by the "
+"superclass are called upon an instance of the Web Bean annotated "
+"<literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:105
+#, no-c-format
+msgid ""
+"In our example, the binding type <literal>@CreditCard</literal> of "
+"<literal>CreditCardPaymentProcessor</literal> is inherited by "
+"<literal>StagingCreditCardPaymentProcessor</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:109
+#, no-c-format
+msgid "Furthermore, the Web Bean manager will validate that:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:113
+#, no-c-format
+msgid ""
+"all API types of the superclass are API types of the Web Bean annotated "
+"<literal>@Specializes</literal> (all local interfaces of the superclass "
+"enterprise bean are also local interfaces of the subclass),"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:119
+#, no-c-format
+msgid ""
+"the deployment type of the Web Bean annotated <literal>@Specializes</"
+"literal> has a higher precedence than the deployment type of the superclass, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:124
+#, no-c-format
+msgid ""
+"there is no other enabled Web Bean that also specializes the superclass."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:129
+#, no-c-format
+msgid ""
+"If any of these conditions are violated, the Web Bean manager throws an "
+"exception at initialization time."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:132
+#, no-c-format
+msgid ""
+"Therefore, we can be certain that the superclass will <emphasis>never</"
+"emphasis> be called in any deployment of the system where the Web Bean "
+"annotated <literal>@Specializes</literal> is deployed and enabled."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/specialization.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/stereotypes.po (from rev 638, doc/trunk/reference/es-ES/modules/stereotypes.po)
===================================================================
--- doc/trunk/reference/es-ES/stereotypes.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/stereotypes.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,352 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: stereotypes.xml:4
+#, no-c-format
+msgid "Stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:6
+#, no-c-format
+msgid "According to the Web Beans specification:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:10
+#, no-c-format
+msgid ""
+"In many systems, use of architectural patterns produces a set of recurring "
+"Web Bean roles. A stereotype allows a framework developer to identify such a "
+"role and declare some common metadata for Web Beans with that role in a "
+"central place."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:14
+#, no-c-format
+msgid "A stereotype encapsulates any combination of:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:18
+#, no-c-format
+msgid "a default deployment type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:21
+#, no-c-format
+msgid "a default scope type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:24
+#, no-c-format
+msgid "a restriction upon the Web Bean scope,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:27
+#, no-c-format
+msgid "a requirement that the Web Bean implement or extend a certain type, and"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:30
+#, no-c-format
+msgid "a set of interceptor binding annotations."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:34
+#, no-c-format
+msgid ""
+"A stereotype may also specify that all Web Beans with the stereotype have "
+"defaulted Web Bean names."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:37
+#, no-c-format
+msgid "A Web Bean may declare zero, one or multiple stereotypes."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:41
+#, no-c-format
+msgid ""
+"A stereotype is a Java annotation type. This stereotype identifies action "
+"classes in some MVC framework:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:46
+#, no-c-format
+msgid "We use the stereotype by applying the annotation to a Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:48
+#, no-c-format
+msgid ""
+"<![CDATA[@Action \n"
+"public class LoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:51
+#, no-c-format
+msgid "Default scope and deployment type for a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:53
+#, no-c-format
+msgid ""
+"A stereotype may specify a default scope and/or default deployment type for "
+"Web Beans with that stereotype. For example, if the deployment type "
+"<literal>@WebTier</literal> identifies Web Beans that should only be "
+"deployed when the system executes as a web application, we might specify the "
+"following defaults for action classes:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:59
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:61
+#, no-c-format
+msgid ""
+"Of course, a particular action may still override these defaults if "
+"necessary:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[@Dependent @Mock @Action \n"
+"public class MockLoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:66
+#, no-c-format
+msgid ""
+"If we want to force all actions to a particular scope, we can do that too."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:72
+#, no-c-format
+msgid "Restricting scope and type with a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:74
+#, no-c-format
+msgid ""
+"Suppose that we wish to prevent actions from declaring certain scopes. Web "
+"Beans lets us explicitly specify the set of allowed scopes for Web Beans "
+"with a certain stereotype. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(supportedScopes=RequestScoped.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:80
+#, no-c-format
+msgid ""
+"If a particular action class attempts to specify a scope other than the Web "
+"Beans request scope, an exception will be thrown by the Web Bean manager at "
+"initialization time."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:84
+#, no-c-format
+msgid ""
+"We can also force all Web Bean with a certain stereotype to implement an "
+"interface or extend a class:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:87
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(requiredTypes=AbstractAction.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:89
+#, no-c-format
+msgid ""
+"If a particular action class does not extend the class "
+"<literal>AbstractAction</literal>, an exception will be thrown by the Web "
+"Bean manager at initialization time."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:96
+#, no-c-format
+msgid "Interceptor bindings for stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:98
+#, no-c-format
+msgid ""
+"A stereotype may specify a set of interceptor bindings to be inherited by "
+"all Web Beans with that stereotype."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:101
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:103
+#, no-c-format
+msgid ""
+"This helps us get technical concerns even further away from the business "
+"code!"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:109
+#, no-c-format
+msgid "Name defaulting with stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:111
+#, no-c-format
+msgid ""
+"Finally, we can specify that all Web Beans with a certain stereotype have a "
+"Web Bean name, defaulted by the Web Bean manager. Actions are often "
+"referenced in JSP pages, so they're a perfect use case for this feature. All "
+"we need to do is add an empty <literal>@Named</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:116
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@Named\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:118
+#, no-c-format
+msgid ""
+"Now, <literal>LoginAction</literal> will have the name <literal>loginAction</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:124
+#, no-c-format
+msgid "Standard stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:126
+#, no-c-format
+msgid ""
+"We've already met two standard stereotypes defined by the Web Beans "
+"specification: <literal>@Interceptor</literal> and <literal>@Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:129
+#, no-c-format
+msgid "Web Beans defines one further standard stereotype:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:131
+#, no-c-format
+msgid ""
+"<![CDATA[@Named \n"
+"@RequestScoped \n"
+"@Stereotype \n"
+"@Target({TYPE, METHOD}) \n"
+"@Retention(RUNTIME) \n"
+"public @interface Model {} ]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:133
+#, no-c-format
+msgid ""
+"This stereotype is intended for use with JSF. Instead of using JSF managed "
+"beans, just annotate a Web Bean <literal>@Model</literal>, and use it "
+"directly in your JSF page."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/stereotypes.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/es-ES/xml.po (from rev 638, doc/trunk/reference/es-ES/modules/xml.po)
===================================================================
--- doc/trunk/reference/es-ES/xml.po	                        (rev 0)
+++ doc/trunk/reference/es-ES/xml.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,352 @@
+# Language es-ES translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: xml.xml:4
+#, no-c-format
+msgid "Defining Web Beans using XML"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen plenty of examples of Web Beans declared using "
+"annotations. However, there are a couple of occasions when we can't use "
+"annotations to define the Web Bean:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:12
+#, no-c-format
+msgid "when the implementation class comes from some preexisting library, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:15
+#, no-c-format
+msgid ""
+"when there should be multiple Web Beans with the same implementation class."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:20
+#, no-c-format
+msgid "In either of these cases, Web Beans gives us two options:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:23
+#, no-c-format
+msgid "write a producer method, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:24
+#, no-c-format
+msgid "declare the Web Bean using XML."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:27
+#, no-c-format
+msgid ""
+"Many frameworks use XML to provide metadata relating to Java classes. "
+"However, Web Beans uses a very different approach to specifying the names of "
+"Java classes, fields or methods to most other frameworks. Instead of writing "
+"class and member names as the string values of XML elements and attributes, "
+"Web Beans lets you use the class or member name as the name of the XML "
+"element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:33
+#, no-c-format
+msgid ""
+"The advantage of this approach is that you can write an XML schema that "
+"prevents spelling errors in your XML document. It's even possible for a tool "
+"to generate the XML schema automatically from the compiled Java code. Or, an "
+"integrated development environment could perform the same validation without "
+"the need for the explicit intermediate generation step."
+msgstr ""
+
+#. Tag: title
+#: xml.xml:40
+#, no-c-format
+msgid "Declaring Web Bean classes"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:42
+#, no-c-format
+msgid ""
+"For each Java package, Web Beans defines a corresponding XML namespace. The "
+"namespace is formed by prepending <literal>urn:java:</literal> to the Java "
+"package name. For the package <literal>com.mydomain.myapp</literal>, the XML "
+"namespace is <literal>urn:java:com.mydomain.myapp</literal>."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:47
+#, no-c-format
+msgid ""
+"Java types belonging to a package are referred to using an XML element in "
+"the namespace corresponding to the package. The name of the element is the "
+"name of the Java type. Fields and methods of the type are specified by child "
+"elements in the same namespace. If the type is an annotation, members are "
+"specified by attributes of the element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:53
+#, no-c-format
+msgid ""
+"For example, the element <literal>&lt;util:Date/&gt;</literal> in the "
+"following XML fragment refers to the class <literal>java.util.Date</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:util=\"urn:java:java.util\">\n"
+"\n"
+"    <util:Date/>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:58
+#, no-c-format
+msgid ""
+"And this is all the code we need to declare that <literal>Date</literal> is "
+"a simple Web Bean! An instance of <literal>Date</literal> may now be "
+"injected by any other Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:62
+#, no-c-format
+msgid "<![CDATA[@Current Date date]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:67
+#, no-c-format
+msgid "Declaring Web Bean metadata"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:69
+#, no-c-format
+msgid ""
+"We can declare the scope, deployment type and interceptor binding types "
+"using direct child elements of the Web Bean declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:72
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:ShoppingCart>\n"
+"    <SessionScoped/>\n"
+"    <myfwk:Transactional requiresNew=\"true\"/>\n"
+"    <myfwk:Secure/>\n"
+"</myapp:ShoppingCart>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:74
+#, no-c-format
+msgid "We use exactly the same approach to specify names and binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[<util:Date>\n"
+"    <Named>currentTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <SessionScoped/>\n"
+"    <myapp:Login/>\n"
+"    <Named>loginTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:SystemStart/>\n"
+"    <Named>systemStartTime</Named>\n"
+"</util:Date>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:78
+#, no-c-format
+msgid ""
+"Where <literal>@Login</literal> and <literal>@SystemStart</literal> are "
+"binding annotations types."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@Current Date currentTime;\n"
+"@Login Date loginTime;\n"
+"@SystemStart Date systemStartTime;]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:83
+#, no-c-format
+msgid "As usual, a Web Bean may support multiple binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:85
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
+"    <myapp:PayByCheque/>\n"
+"    <myapp:Asynchronous/>\n"
+"</myapp:AsynchronousChequePaymentProcessor>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:87
+#, no-c-format
+msgid ""
+"Interceptors and decorators are just simple Web Beans, so they may be "
+"declared just like any other simple Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:90
+#, no-c-format
+msgid ""
+"<![CDATA[<myfwk:TransactionInterceptor>\n"
+"    <Interceptor/>\n"
+"    <myfwk:Transactional/>\n"
+"</myfwk:TransactionInterceptor>]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:95
+#, no-c-format
+msgid "Declaring Web Bean members"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:97
+#, no-c-format
+msgid "TODO!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:104
+#, no-c-format
+msgid "Declaring inline Web Beans"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:106
+#, no-c-format
+msgid "Web Beans lets us define a Web Bean at an injection point. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:108
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:System>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:admin>\n"
+"        <myapp:Name>\n"
+"            <myapp:firstname>Gavin</myapp:firstname>\n"
+"            <myapp:lastname>King</myapp:lastname>\n"
+"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
+"        </myapp:Name>\n"
+"    </myapp:admin>\n"
+"</myapp:System>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:110
+#, no-c-format
+msgid ""
+"The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of "
+"scope <literal>@Dependent</literal> and class <literal>Name</literal>, with "
+"a set of initial field values. This Web Bean has a special, container-"
+"generated binding and is therefore injectable only to the specific injection "
+"point at which it is declared."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:116
+#, no-c-format
+msgid ""
+"This simple but powerful feature allows the Web Beans XML format to be used "
+"to specify whole graphs of Java objects. It's not quite a full databinding "
+"solution, but it's close!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:123
+#, no-c-format
+msgid "Using a schema"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:125
+#, no-c-format
+msgid ""
+"If we want our XML document format to be authored by people who aren't Java "
+"developers, or who don't have access to our code, we need to provide a "
+"schema. There's nothing specific to Web Beans about writing or using the "
+"schema."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
+"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/"
+"jee/web-beans-1.0.xsd\n"
+"                              urn:java:com.mydomain.myapp http://mydomain."
+"com/xsd/myapp-1.2.xsd\">\n"
+"\n"
+"    <myapp:System>\n"
+"        ...\n"
+"    </myapp:System>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:132
+#, no-c-format
+msgid ""
+"Writing an XML schema is quite tedious. Therefore, the Web Beans RI project "
+"will provide a tool which automatically generates the XML schema from "
+"compiled Java code."
+msgstr ""


Property changes on: doc/trunk/reference/es-ES/xml.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/fr-FR/Author_Group.po
===================================================================
--- doc/trunk/reference/fr-FR/Author_Group.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/Author_Group.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,60 @@
+# Language fr-FR translations for Introduction_to_Web_Beans package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Introduction_to_Web_Beans VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-04 23:18+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:4
+#, no-c-format
+msgid "<firstname>Gavin</firstname> <surname>King</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red Hat "
+"Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: author
+#: Author_Group.xml:12
+#, no-c-format
+msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:15
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) Reference Implementation lead </jobtitle> "
+"<orgname>Red Hat Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:21
+#, no-c-format
+msgid "<firstname>Nicola</firstname> <surname>Benaglia</surname>"
+msgstr ""
+
+#. Tag: contrib
+#: Author_Group.xml:24 Author_Group.xml:29
+#, no-c-format
+msgid "Italian Translation"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:26
+#, no-c-format
+msgid "<firstname>Francesco</firstname> <surname>Milesi</surname>"
+msgstr ""

Copied: doc/trunk/reference/fr-FR/Book_Info.po (from rev 638, doc/trunk/reference/fr-FR/modules/Book_Info.po)
===================================================================
--- doc/trunk/reference/fr-FR/Book_Info.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/Book_Info.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,28 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:29+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:4
+#, no-c-format
+msgid "Introduction to Web Beans"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:5
+#, no-c-format
+msgid ""
+"The new Java standard for dependency injection and contextual state "
+"management"
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/Book_Info.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/decorators.po (from rev 638, doc/trunk/reference/fr-FR/modules/decorators.po)
===================================================================
--- doc/trunk/reference/fr-FR/decorators.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/decorators.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,243 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: decorators.xml:4
+#, no-c-format
+msgid "Decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:6
+#, no-c-format
+msgid ""
+"Interceptors are a powerful way to capture and separate concerns which are "
+"<emphasis>orthogonal</emphasis> to the type system. Any interceptor is able "
+"to intercept invocations of any Java type. This makes them perfect for "
+"solving technical concerns such as transaction management and security. "
+"However, by nature, interceptors are unaware of the actual semantics of the "
+"events they intercept. Thus, interceptors aren't an appropriate tool for "
+"separating business-related concerns."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:14
+#, no-c-format
+msgid ""
+"The reverse is true of <emphasis>decorators</emphasis>. A decorator "
+"intercepts invocations only for a certain Java interface, and is therefore "
+"aware of all the semantics attached to that interface. This makes decorators "
+"a perfect tool for modeling some kinds of business concerns. It also means "
+"that a decorator doesn't have the generality of an interceptor. Decorators "
+"aren't able to solve technical concerns that cut across many disparate types."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:22
+#, no-c-format
+msgid "Suppose we have an interface that represents accounts:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:24
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Account {\n"
+"    public BigDecimal getBalance();\n"
+"    public User getOwner();\n"
+"    public void withdraw(BigDecimal amount);\n"
+"    public void deposit(BigDecimal amount);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:26
+#, no-c-format
+msgid ""
+"Several different Web Beans in our system implement the <literal>Account</"
+"literal> interface. However, we have a common legal requirement that, for "
+"any kind of account, large transactions must be recorded by the system in a "
+"special log. This is a perfect job for a decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:32
+#, no-c-format
+msgid ""
+"A decorator is a simple Web Bean that implements the type it decorates and "
+"is annotated <literal>@Decorator</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Decorator\n"
+"public abstract class LargeTransactionDecorator \n"
+"        implements Account {\n"
+"    \n"
+"    @Decorates Account account;\n"
+"    \n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    public void withdraw(BigDecimal amount) {\n"
+"        account.withdraw(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedWithdrawl(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"    public void deposit(BigDecimal amount);\n"
+"        account.deposit(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedDeposit(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:37
+#, no-c-format
+msgid ""
+"Unlike other simple Web Beans, a decorator may be an abstract class. If "
+"there's nothing special the decorator needs to do for a particular method of "
+"the decorated interface, you don't need to implement that method."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:43
+#, no-c-format
+msgid "Delegate attributes"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:45
+#, no-c-format
+msgid ""
+"All decorators have a <emphasis>delegate attribute</emphasis>. The type and "
+"binding types of the delegate attribute determine which Web Beans the "
+"decorator is bound to. The delegate attribute type must implement or extend "
+"all interfaces implemented by the decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:50
+#, no-c-format
+msgid ""
+"This delegate attribute specifies that the decorator is bound to all Web "
+"Beans that implement <literal>Account</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:53
+#, no-c-format
+msgid "<![CDATA[@Decorates Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:55
+#, no-c-format
+msgid ""
+"A delegate attribute may specify a binding annotation. Then the decorator "
+"will only be bound to Web Beans with the same binding."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:58
+#, no-c-format
+msgid "<![CDATA[@Decorates @Foreign Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:60
+#, no-c-format
+msgid "A decorator is bound to any Web Bean which:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:64
+#, no-c-format
+msgid "has the type of the delegate attribute as an API type, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:67
+#, no-c-format
+msgid "has all binding types that are declared by the delegate attribute."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:71
+#, no-c-format
+msgid ""
+"The decorator may invoke the delegate attribute, which has much the same "
+"effect as calling <literal>InvocationContext.proceed()</literal> from an "
+"interceptor."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:78
+#, no-c-format
+msgid "Enabling decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:80
+#, no-c-format
+msgid ""
+"We need to <emphasis>enable</emphasis> our decorator in <literal>web-beans."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:83
+#, no-c-format
+msgid ""
+"<![CDATA[<Decorators>\n"
+"    <myapp:LargeTransactionDecorator/>\n"
+"</Decorators>]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:85
+#, no-c-format
+msgid ""
+"This declaration serves the same purpose for decorators that the "
+"<literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:90
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all decorators in our system, "
+"ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:94
+#, no-c-format
+msgid "it lets us enable or disable decorator classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:98
+#, no-c-format
+msgid ""
+"Interceptors for a method are called before decorators that apply to that "
+"method."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/decorators.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/ee.po (from rev 638, doc/trunk/reference/fr-FR/modules/ee.po)
===================================================================
--- doc/trunk/reference/fr-FR/ee.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/ee.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,329 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ee.xml:4
+#, no-c-format
+msgid "Java EE integration"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is fully integrated into the Java EE environment. Web Beans have "
+"access to Java EE resources and JPA persistence contexts. They may be used "
+"in Unified EL expressions in JSF and JSP pages. They may even be injected "
+"into some objects, such as Servlets and Message-Driven Beans, which are not "
+"Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:12
+#, no-c-format
+msgid "Injecting Java EE resources into a Web Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:14
+#, no-c-format
+msgid ""
+"All simple and enterprise Web Beans may take advantage of Java EE dependency "
+"injection using <literal>@Resource</literal>, <literal>@EJB</literal> and "
+"<literal>@PersistenceContext</literal>. We've already seen a couple of "
+"examples of this, though we didn't pay much attention at the time:"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:19
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"    \n"
+"    ...\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:23
+#, no-c-format
+msgid ""
+"The Java EE <literal>@PostConstruct</literal> and <literal>@PreDestroy</"
+"literal> callbacks are also supported for all simple and enterprise Web "
+"Beans. The <literal>@PostConstruct</literal> method is called after "
+"<emphasis>all</emphasis> injection has been performed."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:28
+#, no-c-format
+msgid ""
+"There is one restriction to be aware of here: <literal>@PersistenceContext"
+"(type=EXTENDED)</literal> is not supported for simple Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:35
+#, no-c-format
+msgid "Calling a Web Bean from a Servlet"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:37
+#, no-c-format
+msgid ""
+"It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject the "
+"Web Bean using Web Beans field or initializer method injection."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:40
+#, no-c-format
+msgid ""
+"public class Login extends HttpServlet {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @Current Login login;\n"
+"\n"
+"    @Override\n"
+"    public void service(HttpServletRequest request, HttpServletResponse "
+"response)\n"
+"        throws ServletException, IOException {\n"
+"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
+"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
+"        login.login();\n"
+"        if ( login.isLoggedIn() ) {\n"
+"            response.sendRedirect(\"/home.jsp\");\n"
+"        }\n"
+"        else {\n"
+"            response.sendRedirect(\"/loginError.jsp\");\n"
+"        }\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:42
+#, no-c-format
+msgid ""
+"The Web Beans client proxy takes care of routing method invocations from the "
+"Servlet to the correct instances of <literal>Credentials</literal> and "
+"<literal>Login</literal> for the current request and HTTP session."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:49
+#, no-c-format
+msgid "Calling a Web Bean from a Message-Driven Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:51
+#, no-c-format
+msgid ""
+"Web Beans injection applies to all EJBs, even when they aren't under the "
+"control of the Web Bean manager (if they were obtained by direct JNDI "
+"lookup, or injection using <literal>@EJB</literal>, for example. In "
+"particular, you can use Web Beans injection in Message-Driven Beans, which "
+"are not considered Web Beans because you can't inject them."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:57
+#, no-c-format
+msgid ""
+"You can even use Web Beans interceptor bindings for Message-Driven Beans."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:59
+#, no-c-format
+msgid ""
+"@Transactional @MessageDriven\n"
+"public class ProcessOrder implements MessageListener {\n"
+"\n"
+"    @Current Inventory inventory;\n"
+"    @PersistenceContext EntityManager em;\n"
+"\n"
+"    public void onMessage(Message message) {\n"
+"        ...\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:61
+#, no-c-format
+msgid ""
+"Thus, receiving messages is super-easy in a Web Beans environment. But "
+"beware that there is no session or conversation context available when a "
+"message is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</"
+"literal> and <literal>@ApplicationScoped</literal> Web Beans are available."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:66
+#, no-c-format
+msgid "It's also easy to send messages using Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:71
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:73
+#, no-c-format
+msgid ""
+"Sending messages using JMS can be quite complex, because of the number of "
+"different objects you need to deal with. For queues we have <literal>Queue</"
+"literal>, <literal>QueueConnectionFactory</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> and "
+"<literal>QueueSender</literal>. For topics we have <literal>Topic</literal>, "
+"<literal>TopicConnectionFactory</literal>, <literal>TopicConnection</"
+"literal>, <literal>TopicSession</literal> and <literal>TopicPublisher</"
+"literal>. Each of these objects has its own lifecycle and threading model "
+"that we need to worry about."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:82
+#, no-c-format
+msgid ""
+"Web Beans takes care of all this for us. All we need to do is declare the "
+"queue or topic in <literal>web-beans.xml</literal>, specifying an associated "
+"binding type and connection factory."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:86
+#, no-c-format
+msgid ""
+"<![CDATA[<Queue>\n"
+"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
+"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:OrderProcessor/>    \n"
+"</Queue>]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:88
+#, no-c-format
+msgid ""
+"<![CDATA[<Topic>\n"
+"    <destination>java:comp/env/jms/StockPrices</destination>\n"
+"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:StockPrices/>    \n"
+"</Topic>]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:90
+#, no-c-format
+msgid ""
+"Now we can just inject the <literal>Queue</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> or "
+"<literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, "
+"<literal>TopicConnection</literal>, <literal>TopicSession</literal> or "
+"<literal>TopicPublisher</literal> for a topic."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:96
+#, no-c-format
+msgid ""
+"@OrderProcessor QueueSender orderSender;\n"
+"@OrderProcessor QueueSession orderSession;\n"
+"\n"
+"public void sendMessage() {\n"
+"    MapMessage msg = orderSession.createMapMessage();\n"
+"    ...\n"
+"    orderSender.send(msg);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:98
+#, no-c-format
+msgid ""
+"@StockPrices TopicPublisher pricePublisher;\n"
+"@StockPrices TopicSession priceSession;\n"
+"\n"
+"public void sendMessage(String price) {\n"
+"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:100
+#, no-c-format
+msgid ""
+"The lifecycle of the injected JMS objects is completely controlled by the "
+"Web Bean manager."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:106
+#, no-c-format
+msgid "Packaging and deployment"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:108
+#, no-c-format
+msgid ""
+"Web Beans doesn't define any special deployment archive. You can package Web "
+"Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the "
+"application classpath. However, each archive that contains Web Beans must "
+"include a file named <literal>web-beans.xml</literal> in the <literal>META-"
+"INF</literal> or <literal>WEB-INF</literal> directory. The file may be "
+"empty. Web Beans deployed in archives that do not have a <literal>web-beans."
+"xml</literal> file will not be available for use in the application."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:116
+#, no-c-format
+msgid ""
+"For Java SE execution, Web Beans may be deployed in any location in which "
+"EJBs may be deployed for execution by the embeddable EJB Lite container. "
+"Again, each location must contain a <literal>web-beans.xml</literal> file."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/ee.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/events.po (from rev 638, doc/trunk/reference/fr-FR/modules/events.po)
===================================================================
--- doc/trunk/reference/fr-FR/events.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/events.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,649 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: events.xml:4
+#, no-c-format
+msgid "Events"
+msgstr ""
+
+#. Tag: para
+#: events.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans event notification facility allows Web Beans to interact in a "
+"totally decoupled manner. Event <emphasis>producers</emphasis> raise events "
+"that are then delivered to event <emphasis>observers</emphasis> by the Web "
+"Bean manager. This basic schema might sound like the familiar observer/"
+"observable pattern, but there are a couple of twists:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:14
+#, no-c-format
+msgid ""
+"not only are event producers decoupled from observers; observers are "
+"completely decoupled from producers,"
+msgstr ""
+
+#. Tag: para
+#: events.xml:18
+#, no-c-format
+msgid ""
+"observers can specify a combination of \"selectors\" to narrow the set of "
+"event notifications they will receive, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:22
+#, no-c-format
+msgid ""
+"observers can be notified immediately, or can specify that delivery of the "
+"event should be delayed until the end of the current transaction"
+msgstr ""
+
+#. Tag: title
+#: events.xml:28
+#, no-c-format
+msgid "Event observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:30
+#, no-c-format
+msgid ""
+"An <emphasis>observer method</emphasis> is a method of a Web Bean with a "
+"parameter annotated <literal>@Observes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:33
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:35
+#, no-c-format
+msgid ""
+"The annotated parameter is called the <emphasis>event parameter</emphasis>. "
+"The type of the event parameter is the observed <emphasis>event type</"
+"emphasis>. Observer methods may also specify \"selectors\", which are just "
+"instances of Web Beans binding types. When a binding type is used as an "
+"event selector, it is called an <emphasis>event binding type</emphasis>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Updated { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:43
+#, no-c-format
+msgid ""
+"We specify the event bindings of the observer method by annotating the event "
+"parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:46 events.xml:190
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:48
+#, no-c-format
+msgid ""
+"An observer method need not specify any event bindings&#151;in this case it "
+"is interested in <emphasis>all</emphasis> events of a particular type. If it "
+"does specify event bindings, it is only interested in events which also have "
+"those event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:53
+#, no-c-format
+msgid ""
+"The observer method may have additional parameters, which are injected "
+"according to the usual Web Beans method parameter injection semantics:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document, User user) { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:61
+#, no-c-format
+msgid "Event producers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:63
+#, no-c-format
+msgid ""
+"The event producer may obtain an <emphasis>event notifier</emphasis> object "
+"by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:66
+#, no-c-format
+msgid "<![CDATA[@Observable Event<Document> documentEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:68
+#, no-c-format
+msgid ""
+"The <literal>@Observable</literal> annotation implicitly defines a Web Bean "
+"with scope <literal>@Dependent</literal> and deployment type "
+"<literal>@Standard</literal>, with an implementation provided by the Web "
+"Bean manager."
+msgstr ""
+
+#. Tag: para
+#: events.xml:72
+#, no-c-format
+msgid ""
+"A producer raises events by calling the <literal>fire()</literal> method of "
+"the <literal>Event</literal> interface, passing an <emphasis>event object</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:75
+#, no-c-format
+msgid "<![CDATA[documentEvent.fire(document);]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:77
+#, no-c-format
+msgid ""
+"An event object may be an instance of any Java class that has no type "
+"variables or wildcard type parameters. The event will be delivered to every "
+"observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:83 events.xml:107 events.xml:126
+#, no-c-format
+msgid "has an event parameter to which the event object is assignable, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:86
+#, no-c-format
+msgid "specifies no event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:90
+#, no-c-format
+msgid ""
+"The Web Bean manager simply calls all the observer methods, passing the "
+"event object as the value of the event parameter. If any observer method "
+"throws an exception, the Web Bean manager stops calling observer methods, "
+"and the exception is rethrown by the <literal>fire()</literal> method."
+msgstr ""
+
+#. Tag: para
+#: events.xml:95
+#, no-c-format
+msgid ""
+"To specify a \"selector\", the event producer may pass an instance of the "
+"event binding type to the <literal>fire()</literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>()"
+"{} );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:100
+#, no-c-format
+msgid ""
+"The helper class <literal>AnnotationLiteral</literal> makes it possible to "
+"instantiate binding types inline, since this is otherwise difficult to do in "
+"Java."
+msgstr ""
+
+#. Tag: para
+#: events.xml:103
+#, no-c-format
+msgid "The event will be delivered to every observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:110
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal>."
+msgstr ""
+
+#. Tag: para
+#: events.xml:115
+#, no-c-format
+msgid ""
+"Alternatively, event bindings may be specified by annotating the event "
+"notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:118
+#, no-c-format
+msgid "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:120
+#, no-c-format
+msgid ""
+"Then every event fired via this instance of <literal>Event</literal> has the "
+"annotated event binding. The event will be delivered to every observer "
+"method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:129
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal> or the annotated event bindings "
+"of the event notifier injection point."
+msgstr ""
+
+#. Tag: title
+#: events.xml:138
+#, no-c-format
+msgid "Registering observers dynamically"
+msgstr ""
+
+#. Tag: para
+#: events.xml:140
+#, no-c-format
+msgid ""
+"It's often useful to register an event observer dynamically. The application "
+"may implement the <literal>Observer</literal> interface and register an "
+"instance with an event notifier by calling the <literal>observe()</literal> "
+"method."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:144
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } } );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:146
+#, no-c-format
+msgid ""
+"Event binding types may be specified by the event notifier injection point "
+"or by passing event binding type instances to the <literal>observe()</"
+"literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:149
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } }, \n"
+"                                                new "
+"AnnotationLiteral<Updated>(){} );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:154
+#, no-c-format
+msgid "Event bindings with members"
+msgstr ""
+
+#. Tag: para
+#: events.xml:156
+#, no-c-format
+msgid "An event binding type may have annotation members:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:158
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Role {\n"
+"    RoleType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:160
+#, no-c-format
+msgid ""
+"The member value is used to narrow the messages delivered to the observer:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:164
+#, no-c-format
+msgid ""
+"Event binding type members may be specified statically by the event "
+"producer, via annotations at the event notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:167
+#, no-c-format
+msgid "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:169
+#, no-c-format
+msgid ""
+"Alternatively, the value of the event binding type member may be determined "
+"dynamically by the event producer. We start by writing an abstract subclass "
+"of <literal>AnnotationLiteral</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:172
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class RoleBinding \n"
+"    extends AnnotationLiteral<Role> \n"
+"    implements Role {}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:174
+#, no-c-format
+msgid ""
+"The event producer passes an instance of this class to <literal>fire()</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value"
+"() { return user.getRole(); } } );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:181
+#, no-c-format
+msgid "Multiple event bindings"
+msgstr ""
+
+#. Tag: para
+#: events.xml:183
+#, no-c-format
+msgid "Event binding types may be combined, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:185
+#, no-c-format
+msgid ""
+"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
+"...\n"
+"if (document.isBlog()) blogEvent.fire(document, new "
+"AnnotationLiteral<Updated>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:187
+#, no-c-format
+msgid ""
+"When this event occurs, all of the following observer methods will be "
+"notified:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:189
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:191
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:192
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }}}]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:197
+#, no-c-format
+msgid "Transactional observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:199
+#, no-c-format
+msgid ""
+"Transactional observers receive their event notifications during the before "
+"or after completion phase of the transaction in which the event was raised. "
+"For example, the following observer method needs to refresh a query result "
+"set that is cached in the application context, but only when transactions "
+"that update the <literal>Category</literal> tree succeed:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:205
+#, no-c-format
+msgid ""
+"<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes "
+"CategoryUpdateEvent event) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:207
+#, no-c-format
+msgid "There are three kinds of transactional observers:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:211
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionSuccess</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction "
+"completes successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:216
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionFailure</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction fails "
+"to complete successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:221
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionCompletion</literal> observers are called during "
+"the after completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:225
+#, no-c-format
+msgid ""
+"<literal>@BeforeTransactionCompletion</literal> observers are called during "
+"the before completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:230
+#, no-c-format
+msgid ""
+"Transactional observers are very important in a stateful object model like "
+"Web Beans, because state is often held for longer than a single atomic "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: events.xml:233
+#, no-c-format
+msgid ""
+"Imagine that we have cached a JPA query result set in the application scope:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:235
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    List<Product> products;\n"
+"\n"
+"    @Produces @Catalog \n"
+"    List<Product> getCatalog() {\n"
+"        if (products==null) {\n"
+"            products = em.createQuery(\"select p from Product p where p."
+"deleted = false\")\n"
+"                .getResultList();\n"
+"        }\n"
+"        return products;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:237
+#, no-c-format
+msgid ""
+"From time to time, a <literal>Product</literal> is created or deleted. When "
+"this occurs, we need to refresh the <literal>Product</literal> catalog. But "
+"we should wait until <emphasis>after</emphasis> the transaction completes "
+"successfully before performing this refresh!"
+msgstr ""
+
+#. Tag: para
+#: events.xml:242
+#, no-c-format
+msgid ""
+"The Web Bean that creates and deletes <literal>Product</literal>s could "
+"raise events, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:245
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class ProductManager {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    @Observable Event<Product> productEvent;\n"
+"\n"
+"    public void delete(Product product) {\n"
+"        em.delete(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
+"    }\n"
+"    \n"
+"    public void persist(Product product) {\n"
+"        em.persist(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:247
+#, no-c-format
+msgid ""
+"And now <literal>Catalog</literal> can observe the events after successful "
+"completion of the transaction:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:250
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Created Product "
+"product) {\n"
+"        products.add(product);\n"
+"    }\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product "
+"product) {\n"
+"        products.remove(product);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/events.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/example.po (from rev 638, doc/trunk/reference/fr-FR/modules/example.po)
===================================================================
--- doc/trunk/reference/fr-FR/example.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/example.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,172 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example.xml:4
+#, no-c-format
+msgid "JSF web application example"
+msgstr ""
+
+#. Tag: para
+#: example.xml:6
+#, no-c-format
+msgid ""
+"Let's illustrate these ideas with a full example. We're going to implement "
+"user login/logout for an application that uses JSF. First, we'll define a "
+"Web Bean to hold the username and password entered during login:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:11
+#, no-c-format
+msgid ""
+"<![CDATA[@Named @RequestScoped\n"
+"public class Credentials {\n"
+"        \n"
+"    private String username;\n"
+"    private String password;\n"
+"    \n"
+"    public String getUsername() { return username; }\n"
+"    public void setUsername(String username) { this.username = username; }\n"
+"    \n"
+"    public String getPassword() { return password; }\n"
+"    public void setPassword(String password) { this.password = password; }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:13
+#, no-c-format
+msgid "This Web Bean is bound to the login prompt in the following JSF form:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:15
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form>\n"
+"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
+"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
+"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
+"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
+"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
+"    </h:panelGrid>\n"
+"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!"
+"login.loggedIn}\"/>\n"
+"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#"
+"{login.loggedIn}\"/>\n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:17
+#, no-c-format
+msgid ""
+"The actual work is done by a session scoped Web Bean that maintains "
+"information about the currently logged-in user and exposes the "
+"<literal>User</literal> entity to other Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"\n"
+"    private User user;\n"
+"    \n"
+"    public void login() {\n"
+"            \n"
+"        List<User> results = userDatabase.createQuery(\n"
+"           \"select u from User u where u.username=:username and u.password=:"
+"password\")\n"
+"           .setParameter(\"username\", credentials.getUsername())\n"
+"           .setParameter(\"password\", credentials.getPassword())\n"
+"           .getResultList();\n"
+"        \n"
+"        if ( !results.isEmpty() ) {\n"
+"           user = results.get(0);\n"
+"        }\n"
+"        \n"
+"    }\n"
+"    \n"
+"    public void logout() {\n"
+"        user = null;\n"
+"    }\n"
+"    \n"
+"    public boolean isLoggedIn() {\n"
+"       return user!=null;\n"
+"    }\n"
+"    \n"
+"    @Produces @LoggedIn User getCurrentUser() {\n"
+"        return user;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:23
+#, no-c-format
+msgid "Of course, <literal>@LoggedIn</literal> is a binding annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:25
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD})\n"
+"@BindingType\n"
+"public @interface LoggedIn {}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:27
+#, no-c-format
+msgid "Now, any other Web Bean can easily inject the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class DocumentEditor {\n"
+"\n"
+"    @Current Document document;\n"
+"    @LoggedIn User currentUser;\n"
+"    @PersistenceContext EntityManager docDatabase;\n"
+"    \n"
+"    public void save() {\n"
+"        document.setCreatedBy(currentUser);\n"
+"        docDatabase.persist(document);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:31
+#, no-c-format
+msgid ""
+"Hopefully, this example gives a flavor of the Web Bean programming model. In "
+"the next chapter, we'll explore Web Beans dependency injection in greater "
+"depth."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/example.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/extend.po (from rev 638, doc/trunk/reference/fr-FR/modules/extend.po)
===================================================================
--- doc/trunk/reference/fr-FR/extend.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/extend.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,252 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: extend.xml:4
+#, no-c-format
+msgid "Extending Web Beans"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is intended to be a platform for frameworks, extensions and "
+"integration with other technologies. Therefore, Web Beans exposes a set of "
+"SPIs for the use of developers of portable extensions to Web Beans. For "
+"example, the following kinds of extensions were envisaged by the designers "
+"of Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:14
+#, no-c-format
+msgid "integration with Business Process Management engines,"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:17
+#, no-c-format
+msgid ""
+"integration with third-party frameworks such as Spring, Seam, GWT or Wicket, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:21
+#, no-c-format
+msgid "new technology based upon the Web Beans programming model."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:25
+#, no-c-format
+msgid ""
+"The nerve center for extending Web Beans is the <literal>Manager</literal> "
+"object."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:29
+#, no-c-format
+msgid "The <literal>Manager</literal> object"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:31
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> interface lets us register and obtain Web "
+"Beans, interceptors, decorators, observers and contexts programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:34
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Manager\n"
+"{\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... "
+"bindings);\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public Set<Bean<?>> resolveByName(String name);\n"
+"\n"
+"   public Object getInstanceByName(String name);\n"
+"\n"
+"   public <T> T getInstance(Bean<T> bean);\n"
+"\n"
+"   public void fireEvent(Object event, Annotation... bindings);\n"
+"\n"
+"   public Context getContext(Class<? extends Annotation> scopeType);\n"
+"\n"
+"   public Manager addContext(Context context);\n"
+"\n"
+"   public Manager addBean(Bean<?> bean);\n"
+"\n"
+"   public Manager addInterceptor(Interceptor interceptor);\n"
+"\n"
+"   public Manager addDecorator(Decorator decorator);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer, Class<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer,\n"
+"         TypeLiteral<T> eventType, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... "
+"bindings);\n"
+"\n"
+"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
+"         Annotation... interceptorBindings);\n"
+"\n"
+"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
+"         Annotation... bindings);\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:36
+#, no-c-format
+msgid "We can obtain an instance of <literal>Manager</literal> via injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:38
+#, no-c-format
+msgid "@Current Manager manager"
+msgstr ""
+
+#. Tag: title
+#: extend.xml:43
+#, no-c-format
+msgid "The <literal>Bean</literal> class"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:45
+#, no-c-format
+msgid ""
+"Instances of the abstract class <literal>Bean</literal> represent Web Beans. "
+"There is an instance of <literal>Bean</literal> registered with the "
+"<literal>Manager</literal> object for every Web Bean in the application."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:50
+#, no-c-format
+msgid ""
+"public abstract class Bean&lt;T&gt; {\n"
+"    \n"
+"    private final Manager manager;\n"
+"    \n"
+"    protected Bean(Manager manager) {\n"
+"        this.manager=manager;\n"
+"    }\n"
+"    \n"
+"    protected Manager getManager() {\n"
+"        return manager;\n"
+"    }\n"
+"    \n"
+"    public abstract Set&lt;Class&gt; getTypes();\n"
+"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
+"    public abstract String getName();\n"
+"    \n"
+"    public abstract boolean isSerializable();\n"
+"    public abstract boolean isNullable();\n"
+"\n"
+"    public abstract T create();\n"
+"    public abstract void destroy(T instance);\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:52
+#, no-c-format
+msgid ""
+"It's possible to extend the <literal>Bean</literal> class and register "
+"instances by calling <literal>Manager.addBean()</literal> to provide support "
+"for new kinds of Web Beans, beyond those defined by the Web Beans "
+"specification (simple and enterprise Web Beans, producer methods and JMS "
+"endpoints). For example, we could use the <literal>Bean</literal> class to "
+"allow objects managed by another framework to be injected into Web Beans."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:60
+#, no-c-format
+msgid ""
+"There are two subclasses of <literal>Bean</literal> defined by the Web Beans "
+"specification: <literal>Interceptor</literal> and <literal>Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:67
+#, no-c-format
+msgid "The <literal>Context</literal> interface"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Context</literal> interface supports addition of new scopes to "
+"Web Beans, or extension of the built-in scopes to new environments."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:72
+#, no-c-format
+msgid ""
+"public interface Context {\n"
+"    \n"
+"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    \n"
+"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
+"    \n"
+"    boolean isActive();\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:74
+#, no-c-format
+msgid ""
+"For example, we might implement <literal>Context</literal> to add a business "
+"process scope to Web Beans, or to add support for the conversation scope to "
+"an application that uses Wicket."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/extend.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/injection.po (from rev 638, doc/trunk/reference/fr-FR/modules/injection.po)
===================================================================
--- doc/trunk/reference/fr-FR/injection.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/injection.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1226 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: injection.xml:4
+#, no-c-format
+msgid "Dependency injection"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:6
+#, no-c-format
+msgid "Web Beans supports three primary mechanisms for dependency injection:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:8
+#, no-c-format
+msgid "Constructor parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:10
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private final ShoppingCart cart;\n"
+"    \n"
+"    @Initializer\n"
+"    public Checkout(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:12
+#, no-c-format
+msgid "<emphasis>Initializer</emphasis> method parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:14
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private ShoppingCart cart;\n"
+"\n"
+"    @Initializer \n"
+"    void setShoppingCart(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:16
+#, no-c-format
+msgid "And direct field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:18
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"\n"
+"    private @Current ShoppingCart cart;\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:20
+#, no-c-format
+msgid ""
+"Dependency injection always occurs when the Web Bean instance is first "
+"instantiated."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:25
+#, no-c-format
+msgid ""
+"First, the Web Bean manager calls the Web Bean constructor, to obtain an "
+"instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:29
+#, no-c-format
+msgid ""
+"Next, the Web Bean manager initializes the values of all injected fields of "
+"the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:33
+#, no-c-format
+msgid "Next, the Web Bean manager calls all initializer methods of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:37
+#, no-c-format
+msgid ""
+"Finally, the <literal>@PostConstruct</literal> method of the Web Bean, if "
+"any, is called."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:42
+#, no-c-format
+msgid ""
+"Constructor parameter injection is not supported for EJB beans, since the "
+"EJB is instantiated by the EJB container, not the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:45
+#, no-c-format
+msgid ""
+"Parameters of constructors and initializer methods need not be explicitly "
+"annotated when the default binding type <literal>@Current</literal> applies. "
+"Injected fields, however, <emphasis>must</emphasis> specify a binding type, "
+"even when the default binding type applies. If the field does not specify a "
+"binding type, it will not be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:51
+#, no-c-format
+msgid "Producer methods also support parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:53
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
+"    return new Checkout(cart);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:55
+#, no-c-format
+msgid ""
+"Finally, observer methods (which we'll meet in <xref linkend=\"events\"/>), "
+"disposal methods and destructor methods all support parameter injection."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:58
+#, no-c-format
+msgid ""
+"The Web Beans specification defines a procedure, called the "
+"<emphasis>typesafe resolution algorithm</emphasis>, that the Web Bean "
+"manager follows when identifying the Web Bean to inject to an injection "
+"point. This algorithm looks complex at first, but once you understand it, "
+"it's really quite intuitive. Typesafe resolution is performed at system "
+"initialization time, which means that the manager will inform the user "
+"immediately if a Web Bean's dependencies cannot be satisfied, by throwing a "
+"<literal>UnsatisfiedDependencyException</literal> or "
+"<literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:67
+#, no-c-format
+msgid ""
+"The purpose of this algorithm is to allow multiple Web Beans to implement "
+"the same API type and either:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:72
+#, no-c-format
+msgid ""
+"allow the client to select which implementation it requires using "
+"<emphasis>binding annotations</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:77
+#, no-c-format
+msgid ""
+"allow the application deployer to select which implementation is appropriate "
+"for a particular deployment, without changes to the client, by enabling or "
+"disabling <emphasis>deployment types</emphasis>, or"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:82
+#, no-c-format
+msgid ""
+"allow one implementation of an API to override another implementation of the "
+"same API at deployment time, without changes to the client, using "
+"<emphasis>deployment type precedence</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:88
+#, no-c-format
+msgid ""
+"Let's explore how the Web Beans manager determines a Web Bean to be injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:91
+#, no-c-format
+msgid "Binding annotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:93
+#, no-c-format
+msgid ""
+"If we have more than one Web Bean that implements a particular API type, the "
+"injection point can specify exactly which Web Bean should be injected using "
+"a binding annotation. For example, there might be two implementations of "
+"<literal>PaymentProcessor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque\n"
+"public class ChequePaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:100
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCreditCard\n"
+"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:102
+#, no-c-format
+msgid ""
+"Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</"
+"literal> are binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:105
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCheque {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:107
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCreditCard {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:109
+#, no-c-format
+msgid ""
+"A client Web Bean developer uses the binding annotation to specify exactly "
+"which Web Bean should be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:112
+#, no-c-format
+msgid "Using field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:114
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
+"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:116
+#, no-c-format
+msgid "Using initializer method injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:118
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public void setPaymentProcessors(@PayByCheque PaymentProcessor "
+"chequePaymentProcessor, \n"
+"                                 @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:120
+#, no-c-format
+msgid "Or using constructor injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:122
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:125
+#, no-c-format
+msgid "Binding annotations with members"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:127
+#, no-c-format
+msgid "Binding annotations may have members:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:129
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayBy {\n"
+"    PaymentType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:131
+#, no-c-format
+msgid "In which case, the member value is significant:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:133
+#, no-c-format
+msgid ""
+"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
+"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:135
+#, no-c-format
+msgid ""
+"You can tell the Web Bean manager to ignore a member of a binding annotation "
+"type by annotating the member <literal>@NonBinding</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:141
+#, no-c-format
+msgid "Combinations of binding annnotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:143
+#, no-c-format
+msgid "An injection point may even specify multiple binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:145
+#, no-c-format
+msgid ""
+"<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:147
+#, no-c-format
+msgid ""
+"In this case, only a Web Bean which has <emphasis>both</emphasis> binding "
+"annotations would be eligible for injection."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:153
+#, no-c-format
+msgid "Binding annotations and producer methods"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:155
+#, no-c-format
+msgid "Even producer methods may specify binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces \n"
+"@Asynchronous @PayByCheque \n"
+"PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor "
+"processor) {\n"
+"    return new AsynchronousPaymentProcessor(processor);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:162
+#, no-c-format
+msgid "The default binding type"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:164
+#, no-c-format
+msgid ""
+"Web Beans defines a binding type <literal>@Current</literal> that is the "
+"default binding type for any injection point or Web Bean that does not "
+"explicitly specify a binding type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:168
+#, no-c-format
+msgid ""
+"There are two common circumstances in which it is necessary to explicitly "
+"specify <literal>@Current</literal>:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:173
+#, no-c-format
+msgid ""
+"on a field, in order to declare it as an injected field with the default "
+"binding type, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:177
+#, no-c-format
+msgid ""
+"on a Web Bean which has another binding type in addition to the default "
+"binding type."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:187
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:189
+#, no-c-format
+msgid ""
+"All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment "
+"type identifies a set of Web Beans that should be conditionally installed in "
+"some deployments of the system."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:193
+#, no-c-format
+msgid ""
+"For example, we could define a deployment type named <literal>@Mock</"
+"literal>, which would identify Web Beans that should only be installed when "
+"the system executes inside an integration testing environment:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:197
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"  @Target({TYPE, METHOD})\n"
+"  @DeploymentType\n"
+"  public @interface Mock {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:199
+#, no-c-format
+msgid ""
+"Suppose we had some Web Bean that interacted with an external system to "
+"process payments:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:202
+#, no-c-format
+msgid ""
+"<![CDATA[public class ExternalPaymentProcessor {\n"
+"        \n"
+"    public void process(Payment p) {\n"
+"        ...\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:204
+#, no-c-format
+msgid ""
+"Since this Web Bean does not explicitly specify a deployment type, it has "
+"the default deployment type <literal>@Production</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:207
+#, no-c-format
+msgid ""
+"For integration or unit testing, the external system is slow or unavailable. "
+"So we would create a mock object:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:210
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock \n"
+"public class MockPaymentProcessor implements PaymentProcessor {\n"
+"\n"
+"    @Override\n"
+"    public void process(Payment p) {\n"
+"        p.setSuccessful(true);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:212
+#, no-c-format
+msgid ""
+"But how does the Web Bean manager determine which implementation to use in a "
+"particular deployment?"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:216
+#, no-c-format
+msgid "Enabling deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:218
+#, no-c-format
+msgid ""
+"Web Beans defines two built-in deployment types: <literal>@Production</"
+"literal> and <literal>@Standard</literal>. By default, only Web Beans with "
+"the built-in deployment types are enabled when the system is deployed. We "
+"can identify additional deployment types to be enabled in a particular "
+"deployment by listing them in <literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:224
+#, no-c-format
+msgid ""
+"Going back to our example, when we deploy our integration tests, we want all "
+"our <literal>@Mock</literal> objects to be installed:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:227
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans>\n"
+"    <Deploy>\n"
+"        <Standard/>\n"
+"        <Production/>\n"
+"        <test:Mock/>\n"
+"    </Deploy>\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:229
+#, no-c-format
+msgid ""
+"Now the Web Bean manager will identify and install all Web Beans annotated "
+"<literal>@Production</literal>, <literal>@Standard</literal> or "
+"<literal>@Mock</literal> at deployment time."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:233
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Standard</literal> is used only for certain "
+"special Web Beans defined by the Web Beans specification. We can't use it "
+"for our own Web Beans, and we can't disable it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:237
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Production</literal> is the default deployment "
+"type for Web Beans which don't explicitly declare a deployment type, and may "
+"be disabled."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:244
+#, no-c-format
+msgid "Deployment type precedence"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:246
+#, no-c-format
+msgid ""
+"If you've been paying attention, you're probably wondering how the Web Bean "
+"manager decides which implementation&#151;<literal>ExternalPaymentProcessor</"
+"literal> or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider "
+"what happens when the manager encounters this injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:251
+#, no-c-format
+msgid "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:253
+#, no-c-format
+msgid ""
+"There are now two Web Beans which satisfy the <literal>PaymentProcessor</"
+"literal> contract. Of course, we can't use a binding annotation to "
+"disambiguate, since binding annotations are hard-coded into the source at "
+"the injection point, and we want the manager to be able to decide at "
+"deployment time!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:258
+#, no-c-format
+msgid ""
+"The solution to this problem is that each deployment type has a different "
+"<emphasis>precedence</emphasis>. The precedence of the deployment types is "
+"determined by the order in which they appear in <literal>web-beans.xml</"
+"literal>. In our example, <literal>@Mock</literal> appears later than "
+"<literal>@Production</literal> so it has a higher precedence."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:264
+#, no-c-format
+msgid ""
+"Whenever the manager discovers that more than one Web Bean could satisfy the "
+"contract (API type plus binding annotations) specified by an injection "
+"point, it considers the relative precedence of the Web Beans. If one has a "
+"higher precedence than the others, it chooses the higher precedence Web Bean "
+"to inject. So, in our example, the Web Bean manager will inject "
+"<literal>MockPaymentProcessor</literal> when executing in our integration "
+"testing environment (which is exactly what we want)."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:271
+#, no-c-format
+msgid ""
+"It's interesting to compare this facility to today's popular manager "
+"architectures. Various \"lightweight\" containers also allow conditional "
+"deployment of classes that exist in the classpath, but the classes that are "
+"to be deployed must be explicity, individually, listed in configuration code "
+"or in some XML configuration file. Web Beans does support Web Bean "
+"definition and configuration via XML, but in the common case where no "
+"complex configuration is required, deployment types allow a whole set of Web "
+"Beans to be enabled with a single line of XML. Meanwhile, a developer "
+"browsing the code can easily identify what deployment scenarios the Web Bean "
+"will be used in."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:284
+#, no-c-format
+msgid "Example deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:286
+#, no-c-format
+msgid ""
+"Deployment types are useful for all kinds of things, here's some examples:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:290
+#, no-c-format
+msgid ""
+"<literal>@Mock</literal> and <literal>@Staging</literal> deployment types "
+"for testing"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:294
+#, no-c-format
+msgid "<literal>@AustralianTaxLaw</literal> for site-specific Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:297
+#, no-c-format
+msgid ""
+"<literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party "
+"frameworks which build on Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:301
+#, no-c-format
+msgid ""
+"<literal>@Standard</literal> for standard Web Beans defined by the Web Beans "
+"specification"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:306
+#, no-c-format
+msgid "I'm sure you can think of more applications..."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:313
+#, no-c-format
+msgid "Fixing unsatisfied dependencies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:315
+#, no-c-format
+msgid ""
+"The typesafe resolution algorithm fails when, after considering the binding "
+"annotations and and deployment types of all Web Beans that implement the API "
+"type of an injection point, the Web Bean manager is unable to identify "
+"exactly one Web Bean to inject."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:320
+#, no-c-format
+msgid ""
+"It's usually easy to fix an <literal>UnsatisfiedDependencyException</"
+"literal> or <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:323
+#, no-c-format
+msgid ""
+"To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide "
+"a Web Bean which implements the API type and has the binding types of the "
+"injection point&#151;or enable the deployment type of a Web Bean that "
+"already implements the API type and has the binding types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:328
+#, no-c-format
+msgid ""
+"To fix an <literal>AmbiguousDependencyException</literal>, introduce a "
+"binding type to distinguish between the two implementations of the API type, "
+"or change the deployment type of one of the implementations so that the Web "
+"Bean manager can use deployment type precedence to choose between them. An "
+"<literal>AmbiguousDependencyException</literal> can only occur if two Web "
+"Beans share a binding type and have exactly the same deployment type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:335
+#, no-c-format
+msgid ""
+"There's one more issue you need to be aware of when using dependency "
+"injection in Web Beans."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:341
+#, no-c-format
+msgid "Client proxies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:343
+#, no-c-format
+msgid ""
+"Clients of an injected Web Bean do not usually hold a direct reference to a "
+"Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:346
+#, no-c-format
+msgid ""
+"Imagine that a Web Bean bound to the application scope held a direct "
+"reference to a Web Bean bound to the request scope. The application scoped "
+"Web Bean is shared between many different requests. However, each request "
+"should see a different instance of the request scoped Web bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:351
+#, no-c-format
+msgid ""
+"Now imagine that a Web Bean bound to the session scope held a direct "
+"reference to a Web Bean bound to the application scope. From time to time, "
+"the session context is serialized to disk in order to use memory more "
+"efficiently. However, the application scoped Web Bean instance should not be "
+"serialized along with the session scoped Web Bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:357
+#, no-c-format
+msgid ""
+"Therefore, unless a Web Bean has the default scope <literal>@Dependent</"
+"literal>, the Web Bean manager must indirect all injected references to the "
+"Web Bean through a proxy object. This <emphasis>client proxy</emphasis> is "
+"responsible for ensuring that the Web Bean instance that receives a method "
+"invocation is the instance that is associated with the current context. The "
+"client proxy also allows Web Beans bound to contexts such as the session "
+"context to be serialized to disk without recursively serializing other "
+"injected Web Beans."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:365
+#, no-c-format
+msgid ""
+"Unfortunately, due to limitations of the Java language, some Java types "
+"cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager "
+"throws an <literal>UnproxyableDependencyException</literal> if the type of "
+"an injection point cannot be proxied."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:370
+#, no-c-format
+msgid "The following Java types cannot be proxied by the Web Bean manager:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:374
+#, no-c-format
+msgid ""
+"classes which are declared <literal>final</literal> or have a "
+"<literal>final</literal> method,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:378
+#, no-c-format
+msgid "classes which have no non-private constructor with no parameters, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:381
+#, no-c-format
+msgid "arrays and primitive types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:385
+#, no-c-format
+msgid ""
+"It's usually very easy to fix an <literal>UnproxyableDependencyException</"
+"literal>. Simply add a constructor with no parameters to the injected class, "
+"introduce an interface, or change the scope of the injected Web Bean to "
+"<literal>@Dependent</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:392
+#, no-c-format
+msgid "Obtaining a Web Bean by programatic lookup"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:394
+#, no-c-format
+msgid ""
+"The application may obtain an instance of the interface <literal>Manager</"
+"literal> by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:397
+#, no-c-format
+msgid "<![CDATA[@Current Manager manager;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:399
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> object provides a set of methods for "
+"obtaining a Web Bean instance programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:402
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:404
+#, no-c-format
+msgid ""
+"Binding annotations may be specified by subclassing the helper class "
+"<literal>AnnotationLiteral</literal>, since it is otherwise difficult to "
+"instantiate an annotation type in Java."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:408
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new "
+"AnnotationLiteral<CreditCard>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:410
+#, no-c-format
+msgid ""
+"If the binding type has an annotation member, we can't use an anonymous "
+"subclass of <literal>AnnotationLiteral</literal>&#151;instead we'll need to "
+"create a named subclass:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:413
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class CreditCardBinding \n"
+"    extends AnnotationLiteral<CreditCard> \n"
+"    implements CreditCard {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:415
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new CreditCardBinding() { \n"
+"                                                   public void value() "
+"{ return paymentType; } \n"
+"                                               } );]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:419
+#, no-c-format
+msgid ""
+"Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> "
+"and <literal>@PersistenceContext</literal>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:422
+#, no-c-format
+msgid ""
+"Enterprise Web Beans support all the lifecycle callbacks defined by the EJB "
+"specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:426
+#, no-c-format
+msgid ""
+"Simple Web Beans support only the <literal>@PostConstruct</literal> and "
+"<literal>@PreDestroy</literal> callbacks."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:429
+#, no-c-format
+msgid ""
+"Both enterprise and simple Web Beans support the use of <literal>@Resource</"
+"literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal> "
+"for injection of Java EE resources, EJBs and JPA persistence contexts, "
+"respectively. Simple Web Beans do not support the use of "
+"<literal>@PersistenceContext(type=EXTENDED)</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:434
+#, no-c-format
+msgid ""
+"The <literal>@PostConstruct</literal> callback always occurs after all "
+"dependencies have been injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:440
+#, no-c-format
+msgid "The <literal>InjectionPoint</literal> object"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:442
+#, no-c-format
+msgid ""
+"There are certain kinds of dependent objects&#151;Web Beans with scope "
+"<literal>@Dependent</literal>&#151;that need to know something about the "
+"object or injection point into which they are injected in order to be able "
+"to do what they do. For example:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:448
+#, no-c-format
+msgid ""
+"The log category for a <literal>Logger</literal> depends upon the class of "
+"the object that owns it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:452
+#, no-c-format
+msgid ""
+"Injection of a HTTP parameter or header value depends upon what parameter or "
+"header name was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:456
+#, no-c-format
+msgid ""
+"Injection of the result of an EL expression evaluation depends upon the "
+"expression that was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:461
+#, no-c-format
+msgid ""
+"A Web Bean with scope <literal>@Dependent</literal> may inject an instance "
+"of <literal>InjectionPoint</literal> and access metadata relating to the "
+"injection point to which it belongs."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:465
+#, no-c-format
+msgid ""
+"Let's look at an example. The following code is verbose, and vulnerable to "
+"refactoring problems:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:468
+#, no-c-format
+msgid "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:470
+#, no-c-format
+msgid ""
+"This clever little producer method lets you inject a JDK <literal>Logger</"
+"literal> without explicitly specifying the log category:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:473
+#, no-c-format
+msgid ""
+"<![CDATA[class LogFactory {\n"
+"\n"
+"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
+"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass()."
+"getName()); \n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:475
+#, no-c-format
+msgid "We can now write:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:477
+#, no-c-format
+msgid "<![CDATA[@Current Logger log;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:479
+#, no-c-format
+msgid ""
+"Not convinced? Then here's a second example. To inject HTTP parameters, we "
+"need to define a binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:482
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"public @interface HttpParam {\n"
+"   @NonBinding public String value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:484
+#, no-c-format
+msgid "We would use this binding type at injection points as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:486
+#, no-c-format
+msgid ""
+"<![CDATA[@HttpParam(\"username\") String username;\n"
+"@HttpParam(\"password\") String password;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:488
+#, no-c-format
+msgid "The following producer method does the work:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:490
+#, no-c-format
+msgid ""
+"<![CDATA[class HttpParams\n"
+"\n"
+"   @Produces @HttpParam(\"\")\n"
+"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
+"      return request.getParameter(ip.getAnnotation(HttpParam.class).value"
+"());\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:492
+#, no-c-format
+msgid ""
+"(Note that the <literal>value()</literal> member of the <literal>HttpParam</"
+"literal> annotation is ignored by the Web Bean manager since it is annotated "
+"<literal>@NonBinding.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:495
+#, no-c-format
+msgid ""
+"The Web Bean manager provides a built-in Web Bean that implements the "
+"<literal>InjectionPoint</literal> interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:498
+#, no-c-format
+msgid ""
+"<![CDATA[public interface InjectionPoint { \n"
+"   public Object getInstance(); \n"
+"   public Bean<?> getBean(); \n"
+"   public Member getMember(): \n"
+"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
+"   public Set<T extends Annotation> getAnnotations(); \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/injection.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/interceptors.po (from rev 638, doc/trunk/reference/fr-FR/modules/interceptors.po)
===================================================================
--- doc/trunk/reference/fr-FR/interceptors.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/interceptors.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,572 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: interceptors.xml:4
+#, no-c-format
+msgid "Interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:6
+#, no-c-format
+msgid ""
+"Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending "
+"the functionality in two directions:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:11
+#, no-c-format
+msgid "Any Web Bean may have interceptors, not just session beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:14
+#, no-c-format
+msgid ""
+"Web Beans features a more sophisticated annotation-based approach to binding "
+"interceptors to Web Beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:22
+#, no-c-format
+msgid "The EJB specification defines two kinds of interception points:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:26
+#, no-c-format
+msgid "business method interception, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:29
+#, no-c-format
+msgid "lifecycle callback interception."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:33
+#, no-c-format
+msgid ""
+"A <emphasis>business method interceptor</emphasis> applies to invocations of "
+"methods of the Web Bean by clients of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:36
+#, no-c-format
+msgid ""
+"<![CDATA[public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:38
+#, no-c-format
+msgid ""
+"A <emphasis>lifecycle callback interceptor</emphasis> applies to invocations "
+"of lifecycle callbacks by the container:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[public class DependencyInjectionInterceptor {\n"
+"    @PostConstruct public void injectDependencies(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:43
+#, no-c-format
+msgid ""
+"An interceptor class may intercept both lifecycle callbacks and business "
+"methods."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:49
+#, no-c-format
+msgid "Interceptor bindings"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:51
+#, no-c-format
+msgid ""
+"Suppose we want to declare that some of our Web Beans are transactional. The "
+"first thing we need is an <emphasis>interceptor binding annotation</"
+"emphasis> to specify exactly which Web Beans we're interested in:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:55
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:57
+#, no-c-format
+msgid ""
+"Now we can easily specify that our <literal>ShoppingCart</literal> is a "
+"transactional object:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:60
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:62
+#, no-c-format
+msgid "Or, if we prefer, we can specify that just one method is transactional:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:69
+#, no-c-format
+msgid "Implementing interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:71
+#, no-c-format
+msgid ""
+"That's great, but somewhere along the line we're going to have to actually "
+"implement the interceptor that provides this transaction management aspect. "
+"All we need to do is create a standard EJB interceptor, and annotate it "
+"<literal>@Interceptor</literal> and <literal>@Transactional</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:78
+#, no-c-format
+msgid ""
+"All Web Beans interceptors are simple Web Beans, and can take advantage of "
+"dependency injection and contextual lifecycle management."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:83
+#, no-c-format
+msgid "Multiple interceptors may use the same interceptor binding type."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:88
+#, no-c-format
+msgid "Enabling interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:90
+#, no-c-format
+msgid ""
+"Finally, we need to <emphasis>enable</emphasis> our interceptor in "
+"<literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:93
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:95
+#, no-c-format
+msgid "Whoah! Why the angle bracket stew?"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:97
+#, no-c-format
+msgid "Well, the XML declaration solves two problems:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:101
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all the interceptors in our "
+"system, ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:105
+#, no-c-format
+msgid "it lets us enable or disable interceptor classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:109
+#, no-c-format
+msgid ""
+"For example, we could specify that our security interceptor runs before our "
+"<literal>TransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:112
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <sx:SecurityInterceptor/>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:114
+#, no-c-format
+msgid "Or we could turn them both off in our test environment!"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:119
+#, no-c-format
+msgid "Interceptor bindings with members"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:121
+#, no-c-format
+msgid ""
+"Suppose we want to add some extra information to our "
+"<literal>@Transactional</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:124
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {\n"
+"    boolean requiresNew() default false;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:126
+#, no-c-format
+msgid ""
+"Web Beans will use the value of <literal>requiresNew</literal> to choose "
+"between two different interceptors, <literal>TransactionInterceptor</"
+"literal> and <literal>RequiresNewTransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
+"public class RequiresNewTransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:132
+#, no-c-format
+msgid ""
+"Now we can use <literal>RequiresNewTransactionInterceptor</literal> like "
+"this:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:134
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:136
+#, no-c-format
+msgid ""
+"But what if we only have one interceptor and we want the manager to ignore "
+"the value of <literal>requiresNew</literal> when binding interceptors? We "
+"can use the <literal>@NonBinding</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:140
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Secure {\n"
+"    @NonBinding String[] rolesAllowed() default {};\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:145
+#, no-c-format
+msgid "Multiple interceptor binding annotations"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:147
+#, no-c-format
+msgid ""
+"Usually we use combinations of interceptor bindings types to bind multiple "
+"interceptors to a Web Bean. For example, the following declaration would be "
+"used to bind <literal>TransactionInterceptor</literal> and "
+"<literal>SecurityInterceptor</literal> to the same Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:152
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:154
+#, no-c-format
+msgid ""
+"However, in very complex cases, an interceptor itself may specify some "
+"combination of interceptor binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure @Interceptor\n"
+"public class TransactionalSecureInterceptor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:159
+#, no-c-format
+msgid ""
+"Then this interceptor could be bound to the <literal>checkout()</literal> "
+"method using any one of the following combinations:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:164
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure\n"
+"public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:166
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactionl\n"
+"public class ShoppingCart {\n"
+"    @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:168
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:173
+#, no-c-format
+msgid "Interceptor binding type inheritance"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:175
+#, no-c-format
+msgid ""
+"One limitation of the Java language support for annotations is the lack of "
+"annotation inheritance. Really, annotations should have reuse built in, to "
+"allow this kind of thing to work:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:179
+#, no-c-format
+msgid ""
+"<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:181
+#, no-c-format
+msgid ""
+"Well, fortunately, Web Beans works around this missing feature of Java. We "
+"may annotate one interceptor binding type with other interceptor binding "
+"types. The interceptor bindings are transitive&#151;any Web Bean with the "
+"first interceptor binding inherits the interceptor bindings declared as meta-"
+"annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:186
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"@InterceptorBindingType\n"
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"public @interface Action { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:188
+#, no-c-format
+msgid ""
+"Any Web Bean annotated <literal>@Action</literal> will be bound to both "
+"<literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</"
+"literal>. (And even <literal>TransactionalSecureInterceptor</literal>, if it "
+"exists.)"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:195
+#, no-c-format
+msgid "Use of <literal>@Interceptors</literal>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:197
+#, no-c-format
+msgid ""
+"The <literal>@Interceptors</literal> annotation defined by the EJB "
+"specification is supported for both enterprise and simple Web Beans, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:200
+#, no-c-format
+msgid ""
+"<![CDATA[@Interceptors({TransactionInterceptor.class, SecurityInterceptor."
+"class})\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:202
+#, no-c-format
+msgid "However, this approach suffers the following drawbacks:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:206
+#, no-c-format
+msgid "the interceptor implementation is hardcoded in business code,"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:209
+#, no-c-format
+msgid "interceptors may not be easily disabled at deployment time, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:212
+#, no-c-format
+msgid ""
+"the interceptor ordering is non-global&#151;it is determined by the order in "
+"which interceptors are listed at the class level."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:217
+#, no-c-format
+msgid ""
+"Therefore, we recommend the use of Web Beans-style interceptor bindings."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/interceptors.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/intro.po (from rev 638, doc/trunk/reference/fr-FR/modules/intro.po)
===================================================================
--- doc/trunk/reference/fr-FR/intro.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/intro.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1075 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: intro.xml:4
+#, no-c-format
+msgid "Getting started with Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:6
+#, no-c-format
+msgid ""
+"So you're already keen to get started writing your first Web Bean? Or "
+"perhaps you're skeptical, wondering what kinds of hoops the Web Beans "
+"specification will make you jump through! The good news is that you've "
+"probably already written and used hundreds, perhaps thousands of Web Beans. "
+"You might not even remember the first Web Bean you wrote."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:13
+#, no-c-format
+msgid "Your first Web Bean"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:15
+#, no-c-format
+msgid ""
+"With certain, very special exceptions, every Java class with a constructor "
+"that accepts no parameters is a Web Bean. That includes every JavaBean. "
+"Furthermore, every EJB 3-style session bean is a Web Bean. Sure, the "
+"JavaBeans and EJBs you've been writing every day have not been able to take "
+"advantage of the new services defined by the Web Beans specification, but "
+"you'll be able to use every one of them as Web Beans&#151;injecting them "
+"into other Web Beans, configuring them via the Web Beans XML configuration "
+"facility, even adding interceptors and decorators to them&#151;without "
+"touching your existing code."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:25
+#, no-c-format
+msgid ""
+"Suppose that we have two existing Java classes, that we've been using for "
+"years in various applications. The first class parses a string into a list "
+"of sentences:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class SentenceParser {\n"
+"    public List<String> parse(String text) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:31
+#, no-c-format
+msgid ""
+"The second existing class is a stateless session bean front-end for an "
+"external system that is able to translate sentences from one language to "
+"another:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class SentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:37
+#, no-c-format
+msgid "Where <literal>Translator</literal> is the local interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[@Local\n"
+"public interface Translator {\n"
+"    public String translate(String sentence);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:41
+#, no-c-format
+msgid ""
+"Unfortunately, we don't have a preexisting class that translates whole text "
+"documents. So let's write a Web Bean that does this job:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator {\n"
+"    \n"
+"    private SentenceParser sentenceParser;\n"
+"    private Translator sentenceTranslator;\n"
+"    \n"
+"    @Initializer\n"
+"    TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) {\n"
+"        this.sentenceParser = sentenceParser;\n"
+"        this.sentenceTranslator = sentenceTranslator;\n"
+"    }\n"
+"    \n"
+"    public String translate(String text) {\n"
+"        StringBuilder sb = new StringBuilder();\n"
+"        for (String sentence: sentenceParser.parse(text)) {\n"
+"            sb.append(sentenceTranslator.translate(sentence));\n"
+"        }\n"
+"        return sb.toString();\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:46
+#, no-c-format
+msgid ""
+"We may obtain an instance of <literal>TextTranslator</literal> by injecting "
+"it into a Web Bean, Servlet or EJB:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:49
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public setTextTranslator(TextTranslator textTranslator) {\n"
+"    this.textTranslator = textTranslator;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:51
+#, no-c-format
+msgid ""
+"Alternatively, we may obtain an instance by directly calling a method of the "
+"Web Bean manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:54
+#, no-c-format
+msgid ""
+"<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:56
+#, no-c-format
+msgid ""
+"But wait: <literal>TextTranslator</literal> does not have a constructor with "
+"no parameters! Is it still a Web Bean? Well, a class that does not have a "
+"constructor with no parameters can still be a Web Bean if it has a "
+"constructor annotated <literal>@Initializer</literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:61
+#, no-c-format
+msgid ""
+"As you've guessed, the <literal>@Initializer</literal> annotation has "
+"something to do with dependency injection! <literal>@Initializer</literal> "
+"may be applied to a constructor or method of a Web Bean, and tells the Web "
+"Bean manager to call that constructor or method when instantiating the Web "
+"Bean. The Web Bean manager will inject other Web Beans to the parameters of "
+"the constructor or method."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:68
+#, no-c-format
+msgid ""
+"At system initialization time, the Web Bean manager must validate that "
+"exactly one Web Bean exists which satisfies each injection point. In our "
+"example, if no implementation of <literal>Translator</literal> "
+"available&#151;if the <literal>SentenceTranslator</literal> EJB was not "
+"deployed&#151;the Web Bean manager would throw an "
+"<literal>UnsatisfiedDependencyException</literal>. If more than one "
+"implementation of <literal>Translator</literal> was available, the Web Bean "
+"manager would throw an <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:80
+#, no-c-format
+msgid "What is a Web Bean?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:82
+#, no-c-format
+msgid "So what, <emphasis>exactly</emphasis>, is a Web Bean?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:84
+#, no-c-format
+msgid ""
+"A Web Bean is an application class that contains business logic. A Web Bean "
+"may be called directly from Java code, or it may be invoked via Unified EL. "
+"A Web Bean may access transactional resources. Dependencies between Web "
+"Beans are managed automatically by the Web Bean manager. Most Web Beans are "
+"<emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The "
+"lifecycle of a Web Bean is always managed by the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:91
+#, no-c-format
+msgid ""
+"Let's back up a second. What does it really mean to be \"contextual\"? Since "
+"Web Beans may be stateful, it matters <emphasis>which</emphasis> bean "
+"instance I have. Unlike a stateless component model (for example, stateless "
+"session beans) or a singleton component model (such as servlets, or "
+"singleton beans), different clients of a Web Bean see the Web Bean in "
+"different states. The client-visible state depends upon which instance of "
+"the Web Bean the client has a reference to."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:98
+#, no-c-format
+msgid ""
+"However, like a stateless or singleton model, but <emphasis>unlike</"
+"emphasis> stateful session beans, the client does not control the lifecycle "
+"of the instance by explicitly creating and destroying it. Instead, the "
+"<emphasis>scope</emphasis> of the Web Bean determines:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:105
+#, no-c-format
+msgid "the lifecycle of each instance of the Web Bean and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:108
+#, no-c-format
+msgid ""
+"which clients share a reference to a particular instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:113
+#, no-c-format
+msgid ""
+"For a given thread in a Web Beans application, there may be an "
+"<emphasis>active context</emphasis> associated with the scope of the Web "
+"Bean. This context may be unique to the thread (for example, if the Web Bean "
+"is request scoped), or it may be shared with certain other threads (for "
+"example, if the Web Bean is session scoped) or even all other threads (if it "
+"is application scoped)."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:119
+#, no-c-format
+msgid ""
+"Clients (for example, other Web Beans) executing in the same context will "
+"see the same instance of the Web Bean. But clients in a different context "
+"will see a different instance."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:123
+#, no-c-format
+msgid ""
+"One great advantage of the contextual model is that it allows stateful Web "
+"Beans to be treated like services! The client need not concern itself with "
+"managing the lifecycle of the Web Bean it is using, <emphasis>nor does it "
+"even need to know what that lifecyle is.</emphasis> Web Beans interact by "
+"passing messages, and the Web Bean implementations define the lifecycle of "
+"their own state. The Web Beans are loosely coupled because:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:132
+#, no-c-format
+msgid "they interact via well-defined public APIs"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:135
+#, no-c-format
+msgid "their lifecycles are completely decoupled"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:139
+#, no-c-format
+msgid ""
+"We can replace one Web Bean with a different Web Bean that implements the "
+"same API and has a different lifecycle (a different scope) without affecting "
+"the other Web Bean implementation. In fact, Web Beans defines a "
+"sophisticated facility for overriding Web Bean implementations at deployment "
+"time, as we will see in <xref linkend=\"deploymenttypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:145
+#, no-c-format
+msgid ""
+"Note that not all clients of a Web Bean are Web Beans. Other objects such as "
+"Servlets or Message-Driven Beans&#151;which are by nature not injectable, "
+"contextual objects&#151;may also obtain references to Web Beans by injection."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:149
+#, no-c-format
+msgid "Enough hand-waving. More formally, according to the spec:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:153
+#, no-c-format
+msgid "A Web Bean comprises:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:156
+#, no-c-format
+msgid "A (nonempty) set of API types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:157
+#, no-c-format
+msgid "A (nonempty) set of binding annotation types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:158
+#, no-c-format
+msgid "A scope"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:159
+#, no-c-format
+msgid "A deployment type"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:160
+#, no-c-format
+msgid "Optionally, a Web Bean name"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:161
+#, no-c-format
+msgid "A set of interceptor binding types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:162
+#, no-c-format
+msgid "A Web Bean implementation"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:167
+#, no-c-format
+msgid "Let's see what some of these terms mean, to the Web Bean developer."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:170
+#, no-c-format
+msgid "API types, binding types and dependency injection"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:172
+#, no-c-format
+msgid ""
+"Web Beans usually acquire references to other Web Beans via dependency "
+"injection. Any injected attribute specifies a \"contract\" that must be "
+"satisfied by the Web Bean to be injected. The contract is:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:177
+#, no-c-format
+msgid "an API type, together with"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:178
+#, no-c-format
+msgid "a set of binding types."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:181
+#, no-c-format
+msgid ""
+"An API is a user-defined class or interface. (If the Web Bean is an EJB "
+"session bean, the API type is the <literal>@Local</literal> interface or "
+"bean-class local view). A binding type represents some client-visible "
+"semantic that is satisfied by some implementations of the API and not by "
+"others."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:186
+#, no-c-format
+msgid ""
+"Binding types are represented by user-defined annotations that are "
+"themselves annotated <literal>@BindingType</literal>. For example, the "
+"following injection point has API type <literal>PaymentProcessor</literal> "
+"and binding type <literal>@CreditCard</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:191
+#, no-c-format
+msgid "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:193
+#, no-c-format
+msgid ""
+"If no binding type is explicitly specified at an injection point, the "
+"default binding type <literal>@Current</literal> is assumed."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:196
+#, no-c-format
+msgid ""
+"For each injection point, the Web Bean manager searches for a Web Bean which "
+"satisfies the contract (implements the API, and has all the binding types), "
+"and injects that Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:200
+#, no-c-format
+msgid ""
+"The following Web Bean has the binding type <literal>@CreditCard</literal> "
+"and implements the API type <literal>PaymentProcessor</literal>. It could "
+"therefore be injected to the example injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:204
+#, no-c-format
+msgid ""
+"<![CDATA[@CreditCard\n"
+"public class CreditCardPaymentProcessor \n"
+"    implements PaymentProcessor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:206
+#, no-c-format
+msgid ""
+"If a Web Bean does not explicitly specify a set of binding types, it has "
+"exactly one binding type: the default binding type <literal>@Current</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:209
+#, no-c-format
+msgid ""
+"Web Beans defines a sophisticated but intuitive <emphasis>resolution "
+"algorithm</emphasis> that helps the container decide what to do if there is "
+"more than one Web Bean that satisfies a particular contract. We'll get into "
+"the details in <xref linkend=\"injection\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:217
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:219
+#, no-c-format
+msgid ""
+"<emphasis>Deployment types</emphasis> let us classify our Web Beans by "
+"deployment scenario. A deployment type is an annotation that represents a "
+"particular deployment scenario, for example <literal>@Mock</literal>, "
+"<literal>@Staging</literal> or <literal>@AustralianTaxLaw</literal>. We "
+"apply the annotation to Web Beans which should be deployed in that scenario. "
+"A deployment type allows a whole set of Web Beans to be conditionally "
+"deployed, with a just single line of configuration."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:226
+#, no-c-format
+msgid ""
+"Many Web Beans just use the default deployment type <literal>@Production</"
+"literal>, in which case no deployment type need be explicitly specified. All "
+"three Web Bean in our example have the deployment type <literal>@Production</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:230
+#, no-c-format
+msgid ""
+"In a testing environment, we might want to replace the "
+"<literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:233
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock\n"
+"public class MockSentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) {\n"
+"        return \"Lorem ipsum dolor sit amet\";\n"
+"    }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:236
+#, no-c-format
+msgid ""
+"We would enable the deployment type <literal>@Mock</literal> in our testing "
+"environment, to indicate that <literal>MockSentenceTranslator</literal> and "
+"any other Web Bean annotated <literal>@Mock</literal> should be used."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:240
+#, no-c-format
+msgid ""
+"We'll talk more about this unique and powerful feature in <xref linkend="
+"\"deploymenttypes\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:246
+#, no-c-format
+msgid "Scope"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:248
+#, no-c-format
+msgid ""
+"The <emphasis>scope</emphasis> defines the lifecycle and visibility of "
+"instances of the Web Bean. The Web Beans context model is extensible, "
+"accommodating arbitrary scopes. However, certain important scopes are built-"
+"in to the specification, and provided by the Web Bean manager. A scope is "
+"represented by an annotation type."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:254
+#, no-c-format
+msgid ""
+"For example, any web application may have <emphasis>session scoped</"
+"emphasis> Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:257
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:259
+#, no-c-format
+msgid ""
+"An instance of a session scoped Web Bean is bound to a user session and is "
+"shared by all requests that execute in the context of that session."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:262
+#, no-c-format
+msgid ""
+"By default, Web Beans belong to a special scope called the "
+"<emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are "
+"pure dependent objects of the object into which they are injected, and their "
+"lifecycle is bound to the lifecycle of that object."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:267
+#, no-c-format
+msgid "We'll talk more about scopes in <xref linkend=\"scopescontexts\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:272
+#, no-c-format
+msgid "Web Bean names and Unified EL"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:274
+#, no-c-format
+msgid ""
+"A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in "
+"Unified EL expressions. It's easy to specify the name of a Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:278
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named(\"cart\")\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:280
+#, no-c-format
+msgid "Now we can easily use the Web Bean in any JSF or JSP page:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:282
+#, no-c-format
+msgid ""
+"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
+"    ....\n"
+"</h:dataTable>]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:284
+#, no-c-format
+msgid ""
+"It's even easier to just let the name be defaulted by the Web Bean manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:287
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:289
+#, no-c-format
+msgid ""
+"In this case, the name defaults to <literal>shoppingCart</literal>&#151;the "
+"unqualified class name, with the first character changed to lowercase."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:295
+#, no-c-format
+msgid "Interceptor binding types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:297
+#, no-c-format
+msgid ""
+"Web Beans supports the interceptor functionality defined by EJB 3, not only "
+"for EJB beans, but also for plain Java classes. In addition, Web Beans "
+"provides a new approach to binding interceptors to EJB beans and other Web "
+"Beans."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:302
+#, no-c-format
+msgid ""
+"It remains possible to directly specify the interceptor class via use of the "
+"<literal>@Interceptors</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:305
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped \n"
+"@Interceptors(TransactionInterceptor.class)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:307
+#, no-c-format
+msgid ""
+"However, it is more elegant, and better practice, to indirect the "
+"interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:313
+#, no-c-format
+msgid ""
+"We'll discuss Web Beans interceptors and decorators in <xref linkend="
+"\"interceptors\"/> and <xref linkend=\"decorators\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:321
+#, no-c-format
+msgid "What kinds of objects can be Web Beans?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:323
+#, no-c-format
+msgid ""
+"We've already seen that JavaBeans, EJBs and some other Java classes can be "
+"Web Beans. But exactly what kinds of objects are Web Beans?"
+msgstr ""
+
+#. Tag: title
+#: intro.xml:327
+#, no-c-format
+msgid "Simple Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:329
+#, no-c-format
+msgid ""
+"The Web Beans specification says that a concrete Java class is a "
+"<emphasis>simple</emphasis> Web Bean if:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:334
+#, no-c-format
+msgid ""
+"it is not an EE container-managed component, like an EJB, a Servlet or a JPA "
+"entity,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:338
+#, no-c-format
+msgid "it is not a non-static static inner class,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:341
+#, no-c-format
+msgid "it is not a parameterized type, and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:344
+#, no-c-format
+msgid ""
+"it has a constructor with no parameters, or a constructor annotated "
+"<literal>@Initializer</literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:349
+#, no-c-format
+msgid "Thus, almost every JavaBean is a simple Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:351
+#, no-c-format
+msgid ""
+"Every interface implemented directly or indirectly by a simple Web Bean is "
+"an API type of the simple Web Bean. The class and its superclasses are also "
+"API types."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:358
+#, no-c-format
+msgid "Enterprise Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:360
+#, no-c-format
+msgid ""
+"The specification says that all EJB 3-style session and singleton beans are "
+"<emphasis>enterprise</emphasis> Web Beans. Message driven beans are not Web "
+"Beans&#151;since they are not intended to be injected into other "
+"objects&#151;but they can take advantage of most of the functionality of Web "
+"Beans, including dependency injection and interceptors."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:366
+#, no-c-format
+msgid ""
+"Every local interface of an enterprise Web Bean that does not have a "
+"wildcard type parameter or type variable, and every one of its "
+"superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean "
+"has a bean class local view, the bean class, and every one of its "
+"superclasses, is also an API type."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:372
+#, no-c-format
+msgid ""
+"Stateful session beans should declare a remove method with no parameters or "
+"a remove method annotated <literal>@Destructor</literal>. The Web Bean "
+"manager calls this method to destroy the stateful session bean instance at "
+"the end of its lifecycle. This method is called the <emphasis>destructor</"
+"emphasis> method of the enterprise Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:378
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful @SessionScoped\n"
+"public class ShoppingCart {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:380
+#, no-c-format
+msgid ""
+"So when should we use an enterprise Web Bean instead of a simple Web Bean? "
+"Well, whenever we need the advanced enterprise services offered by EJB, such "
+"as:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:387
+#, no-c-format
+msgid "method-level transaction management and security,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:390
+#, no-c-format
+msgid "concurrency management,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:393
+#, no-c-format
+msgid ""
+"instance-level passivation for stateful session beans and instance-pooling "
+"for stateless session beans,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:397
+#, no-c-format
+msgid "remote and web service invocation, and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:400
+#, no-c-format
+msgid "timers and asynchronous methods,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:404
+#, no-c-format
+msgid ""
+"we should use an enterprise Web Bean. When we don't need any of these "
+"things, a simple Web Bean will serve just fine."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:407
+#, no-c-format
+msgid ""
+"Many Web Beans (including any session or application scoped Web Bean) are "
+"available for concurrent access. Therefore, the concurrency management "
+"provided by EJB 3.1 is especially useful. Most session and application "
+"scoped Web Beans should be EJBs."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:412
+#, no-c-format
+msgid ""
+"Web Beans which hold references to heavy-weight resources, or hold a lot of "
+"internal state benefit from the advanced container-managed lifecycle defined "
+"by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/"
+"<literal>@Singleton</literal> model, with its support for passivation and "
+"instance pooling."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:417
+#, no-c-format
+msgid ""
+"Finally, it's usually obvious when method-level transaction management, "
+"method-level security, timers, remote methods or asynchronous methods are "
+"needed."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:420
+#, no-c-format
+msgid ""
+"It's usually easy to start with simple Web Bean, and then turn it into an "
+"EJB, just by adding an annotation: <literal>@Stateless</literal>, "
+"<literal>@Stateful</literal> or <literal>@Singleton</literal>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:427
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:429
+#, no-c-format
+msgid ""
+"A <emphasis>producer method</emphasis> is a method that is called by the Web "
+"Bean manager to obtain an instance of the Web Bean when no instance exists "
+"in the current context. A producer method lets the application take full "
+"control of the instantiation process, instead of leaving instantiation to "
+"the Web Bean manager. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:435
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"\n"
+"    private Random random = new Random( System.currentTimeMillis() );\n"
+"    \n"
+"    @Produces @Random int next() {\n"
+"        return random.nextInt(100);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:437
+#, no-c-format
+msgid ""
+"The result of a producer method is injected just like any other Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:439
+#, no-c-format
+msgid "<![CDATA[@Random int randomNumber]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:441
+#, no-c-format
+msgid ""
+"The method return type and all interfaces it extends/implements directly or "
+"indirectly are API types of the producer method. If the return type is a "
+"class, all superclasses are also API types."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:445
+#, no-c-format
+msgid "Some producer methods return objects that require explicit destruction:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:447
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
+"    return createConnection( user.getId(), user.getPassword() );\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:449
+#, no-c-format
+msgid ""
+"These producer methods may define matching <emphasis>disposal methods</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:451
+#, no-c-format
+msgid ""
+"<![CDATA[void close(@Disposes Connection connection) {\n"
+"    connection.close();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:453
+#, no-c-format
+msgid ""
+"This disposal method is called automatically by the Web Bean manager at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:456
+#, no-c-format
+msgid ""
+"We'll talk much more about producer methods in <xref linkend="
+"\"producermethods\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:461
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:463
+#, no-c-format
+msgid ""
+"Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the "
+"developer from the tedium of managing the lifecycles of all the various JMS "
+"objects required to send messages to queues and topics. We'll discuss JMS "
+"endpoints in <xref linkend=\"jms\"/>."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/intro.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/next.po (from rev 638, doc/trunk/reference/fr-FR/modules/next.po)
===================================================================
--- doc/trunk/reference/fr-FR/next.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/next.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,49 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: next.xml:4
+#, no-c-format
+msgid "Next steps"
+msgstr ""
+
+#. Tag: para
+#: next.xml:6
+#, no-c-format
+msgid ""
+"Because Web Beans is so new, there's not yet a lot of information available "
+"online."
+msgstr ""
+
+#. Tag: para
+#: next.xml:9
+#, no-c-format
+msgid ""
+"Of course, the Web Beans specification is the best source of more "
+"information about Web Beans. The spec is about 100 pages long, only twice "
+"the length of this article, and almost as readable. But, of course, it "
+"covers many details that we've skipped over. The spec is available from "
+"<literal>http://jcp.org/en/jsr/detail?id=299</literal>."
+msgstr ""
+
+#. Tag: para
+#: next.xml:15
+#, no-c-format
+msgid ""
+"The Web Beans Reference implementation is being developed at <literal>http://"
+"seamframework.org/WebBeans</literal>. The RI development team and the Web "
+"Beans spec lead blog at <literal>http://in.relation.to</literal>. This "
+"article is substantially based upon a series of blog entries published there."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/next.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/part1.po (from rev 638, doc/trunk/reference/fr-FR/modules/part1.po)
===================================================================
--- doc/trunk/reference/fr-FR/part1.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/part1.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,229 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part1.xml:5
+#, no-c-format
+msgid ""
+"The Web Beans (JSR-299) specification defines a set of services for the Java "
+"EE environment that makes applications much easier to develop. Web Beans "
+"layers an enhanced lifecycle and interaction model over existing Java "
+"component types including JavaBeans and Enterprise Java Beans. As a "
+"complement to the traditional Java EE programming model, the Web Beans "
+"services provide:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:14
+#, no-c-format
+msgid ""
+"an improved lifecycle for stateful components, bound to well-defined "
+"<emphasis>contexts</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:18
+#, no-c-format
+msgid "a typesafe approach to <emphasis>dependency injection</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:21
+#, no-c-format
+msgid ""
+"interaction via an <emphasis>event notification</emphasis> facility, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:25
+#, no-c-format
+msgid ""
+"a better approach to binding <emphasis>interceptors</emphasis> to "
+"components, along with a new kind of interceptor, called a "
+"<emphasis>decorator</emphasis>, that is more appropriate for use in solving "
+"business problems."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:32
+#, no-c-format
+msgid ""
+"Dependency injection, together with contextual lifecycle management, saves "
+"the user of an unfamiliar API from having to ask and answer the following "
+"questions:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:38
+#, no-c-format
+msgid "what is the lifecycle of this object?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:41
+#, no-c-format
+msgid "how many simultaneous clients can it have?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:44
+#, no-c-format
+msgid "is it multithreaded?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:47
+#, no-c-format
+msgid "where can I get one from?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:50
+#, no-c-format
+msgid "do I need to explicitly destroy it?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:53
+#, no-c-format
+msgid "where should I keep my reference to it when I'm not using it directly?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:57
+#, no-c-format
+msgid ""
+"how can I add an indirection layer, so that the implementation of this "
+"object can vary at deployment time?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:61
+#, no-c-format
+msgid "how should I go about sharing this object between other objects?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:65
+#, no-c-format
+msgid ""
+"A Web Bean specifies only the type and semantics of other Web Beans it "
+"depends upon. It need not be aware of the actual lifecycle, concrete "
+"implementation, threading model or other clients of any Web Bean it depends "
+"upon. Even better, the concrete implementation, lifecycle and threading "
+"model of a Web Bean it depends upon may vary according to the deployment "
+"scenario, without affecting any client."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:72
+#, no-c-format
+msgid ""
+"Events, interceptors and decorators enhance the <emphasis>loose-coupling</"
+"emphasis> that is inherent in this model:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:77
+#, no-c-format
+msgid ""
+"<emphasis>event notifications</emphasis> decouple event producers from event "
+"consumers,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:81
+#, no-c-format
+msgid ""
+"<emphasis>interceptors</emphasis> decouple technical concerns from business "
+"logic, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:85
+#, no-c-format
+msgid ""
+"<emphasis>decorators</emphasis> allow business concerns to be "
+"compartmentalized."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:90
+#, no-c-format
+msgid ""
+"Most importantly, Web Beans provides all these facilities in a "
+"<emphasis>typesafe</emphasis> way. Web Beans never uses string-based "
+"identifiers to determine how collaborating objects fit together. And XML, "
+"though it remains an option, is rarely used. Instead, Web Beans uses the "
+"typing information that is already available in the Java object model, "
+"together with a new pattern, called <emphasis>binding annotations</"
+"emphasis>, to wire together Web Beans, their dependencies, their "
+"interceptors and decorators and their event consumers."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:100
+#, no-c-format
+msgid ""
+"The Web Beans services are general and apply to the following types of "
+"components that exist in the Java EE environment:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:105
+#, no-c-format
+msgid "all JavaBeans,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:108
+#, no-c-format
+msgid "all EJBs, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:111
+#, no-c-format
+msgid "all Servlets."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:115
+#, no-c-format
+msgid ""
+"Web Beans even provides the necessary integration points so that other kinds "
+"of components defined by future Java EE specifications or by non-standard "
+"frameworks may be cleanly integrated with Web Beans, take advantage of the "
+"Web Beans services, and interact with any other kind of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:120
+#, no-c-format
+msgid ""
+"Web Beans was influenced by a number of existing Java frameworks, including "
+"Seam, Guice and Spring. However, Web Beans has its own very distinct "
+"character: more typesafe than Seam, more stateful and less XML-centric than "
+"Spring, more web and enterprise-application capable than Guice."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:125
+#, no-c-format
+msgid ""
+"Most importantly, Web Beans is a JCP standard that integrates cleanly with "
+"Java EE, and with any Java SE environment where embeddable EJB Lite is "
+"available."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/part1.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/part2.po (from rev 638, doc/trunk/reference/fr-FR/modules/part2.po)
===================================================================
--- doc/trunk/reference/fr-FR/part2.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/part2.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,102 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part2.xml:5
+#, no-c-format
+msgid ""
+"The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. "
+"We've already seen three means of achieving loose coupling:"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:10
+#, no-c-format
+msgid ""
+"<emphasis>deployment types</emphasis> enable deployment time polymorphism,"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:14
+#, no-c-format
+msgid "<emphasis>producer methods</emphasis> enable runtime polymorphism, and"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:18
+#, no-c-format
+msgid ""
+"<emphasis>contextual lifecycle management</emphasis> decouples Web Bean "
+"lifecycles."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:23
+#, no-c-format
+msgid ""
+"These techniques serve to enable loose coupling of client and server. The "
+"client is no longer tightly bound to an implementation of an API, nor is it "
+"required to manage the lifecycle of the server object. This approach lets "
+"<emphasis>stateful objects interact as if they were services</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:28
+#, no-c-format
+msgid ""
+"Loose coupling makes a system more <emphasis>dynamic</emphasis>. The system "
+"can respond to change in a well-defined manner. In the past, frameworks that "
+"attempted to provide the facilities listed above invariably did it by "
+"sacrificing type safety. Web Beans is the first technology that achieves "
+"this level of loose coupling in a typesafe way."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:34
+#, no-c-format
+msgid ""
+"Web Beans provides three extra important facilities that further the goal of "
+"loose coupling:"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:39
+#, no-c-format
+msgid ""
+"<emphasis>interceptors</emphasis> decouple technical concerns from business "
+"logic,"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:43
+#, no-c-format
+msgid ""
+"<emphasis>decorators</emphasis> may be used to decouple some business "
+"concerns, and"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:47
+#, no-c-format
+msgid ""
+"<emphasis>event notifications</emphasis> decouple event producers from event "
+"consumers."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:52
+#, no-c-format
+msgid "Let's explore interceptors first."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/part2.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/part3.po (from rev 638, doc/trunk/reference/fr-FR/modules/part3.po)
===================================================================
--- doc/trunk/reference/fr-FR/part3.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/part3.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,150 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part3.xml:5
+#, no-c-format
+msgid ""
+"The second major theme of Web Beans is <emphasis>strong typing</emphasis>. "
+"The information about the dependencies, interceptors and decorators of a Web "
+"Bean, and the information about event consumers for an event producer, is "
+"contained in typesafe Java constructs that may be validated by the compiler."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:10
+#, no-c-format
+msgid ""
+"You don't see string-based identifiers in Web Beans code, not because the "
+"framework is hiding them from you using clever defaulting rules&#151;so-"
+"called \"configuration by convention\"&#151;but because there are simply no "
+"strings there to begin with!"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:15
+#, no-c-format
+msgid ""
+"The obvious benefit of this approach is that <emphasis>any</emphasis> IDE "
+"can provide autocompletion, validation and refactoring without the need for "
+"special tooling. But there is a second, less-immediately-obvious, benefit. "
+"It turns out that when you start thinking of identifying objects, events or "
+"interceptors via annotations instead of names, you have an opportunity to "
+"lift the semantic level of your code."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:21
+#, no-c-format
+msgid ""
+"Web Beans encourages you develop annotations that model concepts, for "
+"example,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:26
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:29
+#, no-c-format
+msgid "<literal>@Mock</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:32
+#, no-c-format
+msgid "<literal>@Secure</literal> or"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:35
+#, no-c-format
+msgid "<literal>@Updated</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:39
+#, no-c-format
+msgid "instead of using compound names like"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:43
+#, no-c-format
+msgid "<literal>asyncPaymentProcessor</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:46
+#, no-c-format
+msgid "<literal>mockPaymentProcessor</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:49
+#, no-c-format
+msgid "<literal>SecurityInterceptor</literal> or"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:52
+#, no-c-format
+msgid "<literal>DocumentUpdatedEvent</literal>."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:56
+#, no-c-format
+msgid ""
+"The annotations are reusable. They help describe common qualities of "
+"disparate parts of the system. They help us categorize and understand our "
+"code. They help us deal with common concerns in a common way. They make our "
+"code more literate and more understandable."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:61
+#, no-c-format
+msgid ""
+"Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A "
+"stereotype models a common <emphasis>role</emphasis> in your application "
+"architecture. It encapsulates various properties of the role, including "
+"scope, interceptor bindings, deployment type, etc, into a single reusable "
+"package."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:66
+#, no-c-format
+msgid ""
+"Even Web Beans XML metadata is strongly typed! There's no compiler for XML, "
+"so Web Beans takes advantage of XML schemas to validate the Java types and "
+"attributes that appear in XML. This approach turns out to make the XML more "
+"literate, just like annotations made our Java code more literate."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:71
+#, no-c-format
+msgid ""
+"We're now ready to meet some more advanced features of Web Beans. Bear in "
+"mind that these features exist to make our code both easier to validate and "
+"more understandable. Most of the time you don't ever really <emphasis>need</"
+"emphasis> to use these features, but if you use them wisely, you'll come to "
+"appreciate their power."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/part3.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/part4.po (from rev 638, doc/trunk/reference/fr-FR/modules/part4.po)
===================================================================
--- doc/trunk/reference/fr-FR/part4.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/part4.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,52 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part4.xml:5
+#, no-c-format
+msgid ""
+"The third theme of Web Beans is <emphasis>integration</emphasis>. Web Beans "
+"was designed to work in concert with other technologies, helping the "
+"application developer fit the other technologies together. Web Beans is an "
+"open technology. It forms a part of the Java EE ecosystem, and is itself the "
+"foundation for a new ecosystem of portable extensions and integration with "
+"existing frameworks and technologies."
+msgstr ""
+
+#. Tag: para
+#: part4.xml:12
+#, no-c-format
+msgid ""
+"We've already seen how Web Beans helps integrate EJB and JSF, allowing EJBs "
+"to be bound directly to JSF pages. That's just the beginning. Web Beans "
+"offers the same potential to diverse other technologies, such as Business "
+"Process Management engines, other Web Frameworks, and third-party component "
+"models. The Java EE platform will never be able to standardize all the "
+"interesting technologies that are used in the world of Java application "
+"development, but Web Beans makes it easier to use the technologies which are "
+"not yet part of the platform seamlessly within the Java EE environment."
+msgstr ""
+
+#. Tag: para
+#: part4.xml:21
+#, no-c-format
+msgid ""
+"We're about to see how to take full advantage of the Java EE platform in an "
+"application that uses Web Beans. We'll also briefly meet a set of SPIs that "
+"are provided to support portable extensions to Web Beans. You might not ever "
+"need to use these SPIs directly, but it's nice to know they are there if you "
+"need them. Most importantly, you'll take advantage of them indirectly, every "
+"time you use a third-party extension."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/part4.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/producermethods.po (from rev 638, doc/trunk/reference/fr-FR/modules/producermethods.po)
===================================================================
--- doc/trunk/reference/fr-FR/producermethods.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/producermethods.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,247 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: producermethods.xml:5
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:7
+#, no-c-format
+msgid ""
+"Producer methods let us overcome certain limitations that arise when the Web "
+"Bean manager, instead of the application, is responsible for instantiating "
+"objects. They're also the easiest way to integrate objects which are not Web "
+"Beans into the Web Beans environment. (We'll meet a second approach in <xref "
+"linkend=\"xml\"/>.)"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:12
+#, no-c-format
+msgid "According to the spec:"
+msgstr ""
+
+#. Tag: chapter
+#: producermethods.xml:12
+#, no-c-format
+msgid ""
+"<blockquote> <para>A Web Beans producer method acts as a source of objects "
+"to be injected, where:</para> <itemizedlist> <listitem> <para>the objects to "
+"be injected are not required to be instances of Web Beans,</para> </"
+"listitem> <listitem> <para>the concrete type of the objects to be injected "
+"may vary at runtime or</para> </listitem> <listitem> <para>the objects "
+"require some custom initialization that is not performed by the Web Bean "
+"constructor</para> </listitem> </itemizedlist> </blockquote> <para>For "
+"example, producer methods let us:</para> <itemizedlist> <listitem> "
+"<para>expose a JPA entity as a Web Bean,</para> </listitem> <listitem> "
+"<para>expose any JDK class as a Web Bean,</para> </listitem> <listitem> "
+"<para>define multiple Web Beans, with different scopes or initialization, "
+"for the same implementation class, or</para> </listitem> <listitem> "
+"<para>vary the implementation of an API type at runtime.</para> </listitem> "
+"</itemizedlist> <para>In particular, producer methods let us use runtime "
+"polymorphism with Web Beans. As we've seen, deployment types are a powerful "
+"solution to the problem of deployment-time polymorphism. But once the system "
+"is deployed, the Web Bean implementation is fixed. A producer method has no "
+"such limitation:</para> <programlisting role=\"JAVA\"><![CDATA"
+"[@SessionScoped\n"
+"public class Preferences {\n"
+"    \n"
+"    private PaymentStrategyType paymentStrategy;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    @Produces @Preferred \n"
+"    public PaymentStrategy getPaymentStrategy() {\n"
+"        switch (paymentStrategy) {\n"
+"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
+"            case CHEQUE: return new ChequePaymentStrategy();\n"
+"            case PAYPAL: return new PayPalPaymentStrategy();\n"
+"            default: return null;\n"
+"        } \n"
+"    }\n"
+"    \n"
+"}]]></programlisting> <para>Consider an injection point:</para> "
+"<programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy "
+"paymentStrat;]]></programlisting> <para>This injection point has the same "
+"type and binding annotations as the producer method, so it resolves to the "
+"producer method using the usual Web Beans injection rules. The producer "
+"method will be called by the Web Bean manager to obtain an instance to "
+"service this injection point.</para>."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:68
+#, no-c-format
+msgid "Scope of a producer method"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:70
+#, no-c-format
+msgid ""
+"The scope of the producer method defaults to <literal>@Dependent</literal>, "
+"and so it will be called <emphasis>every time</emphasis> the Web Bean "
+"manager injects this field or any other field that resolves to the same "
+"producer method. Thus, there could be multiple instances of the "
+"<literal>PaymentStrategy</literal> object for each user session."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:75
+#, no-c-format
+msgid ""
+"To change this behavior, we can add a <literal>@SessionScoped</literal> "
+"annotation to the method."
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy() {\n"
+"    ...\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:80
+#, no-c-format
+msgid ""
+"Now, when the producer method is called, the returned "
+"<literal>PaymentStrategy</literal> will be bound to the session context. The "
+"producer method won't be called again in the same session."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:87
+#, no-c-format
+msgid "Injection into producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:89
+#, no-c-format
+msgid ""
+"There's one potential problem with the code above. The implementations of "
+"<literal>CreditCardPaymentStrategy</literal> are instantiated using the Java "
+"<literal>new</literal> operator. Objects instantiated directly by the "
+"application can't take advantage of dependency injection and don't have "
+"interceptors."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:94
+#, no-c-format
+msgid ""
+"If this isn't what we want we can use dependency injection into the producer "
+"method to obtain Web Bean instances:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:97
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
+"                                          ChequePaymentStrategy cps,\n"
+"                                          PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:99
+#, no-c-format
+msgid ""
+"Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request "
+"scoped Web Bean? Then the producer method has the effect of \"promoting\" "
+"the current request scoped instance into session scope. This is almost "
+"certainly a bug! The request scoped object will be destroyed by the Web Bean "
+"manager before the session ends, but the reference to the object will be "
+"left \"hanging\" in the session scope. This error will <emphasis>not</"
+"emphasis> be detected by the Web Bean manager, so please take extra care "
+"when returning Web Bean instances from producer methods!"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:107
+#, no-c-format
+msgid ""
+"There's at least three ways we could go about fixing this bug. We could "
+"change the scope of the <literal>CreditCardPaymentStrategy</literal> "
+"implementation, but this would affect other clients of that Web Bean. A "
+"better option would be to change the scope of the producer method to "
+"<literal>@Dependent</literal> or <literal>@RequestScoped</literal>."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:113
+#, no-c-format
+msgid ""
+"But a more common solution is to use the special <literal>@New</literal> "
+"binding annotation."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:119
+#, no-c-format
+msgid "Use of <literal>@New</literal> with producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:121
+#, no-c-format
+msgid "Consider the following producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:123
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy "
+"ccps,\n"
+"                                          @New ChequePaymentStrategy cps,\n"
+"                                          @New PayPalPaymentStrategy ppps) "
+"{\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:125
+#, no-c-format
+msgid ""
+"Then a new <emphasis>dependent</emphasis> instance of "
+"<literal>CreditCardPaymentStrategy</literal> will be created, passed to the "
+"producer method, returned by the producer method and finally bound to the "
+"session context. The dependent object won't be destroyed until the "
+"<literal>Preferences</literal> object is destroyed, at the end of the "
+"session."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/producermethods.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/ri-spi.po (from rev 638, doc/trunk/reference/fr-FR/modules/ri-spi.po)
===================================================================
--- doc/trunk/reference/fr-FR/ri-spi.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/ri-spi.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,272 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-20 22:07+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri-spi.xml:4
+#, no-c-format
+msgid "Integrating the Web Beans RI into other environments"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:6
+#, no-c-format
+msgid ""
+"Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI into "
+"other EE environments (for example another application server like "
+"Glassfish), into a servlet container (like Tomcat), or with an Embedded "
+"EJB3.1 implementation is fairly easy. In this Appendix we will briefly "
+"discuss the steps needed."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:15
+#, no-c-format
+msgid ""
+"It should be possible to run Web Beans in an SE environment, but you'll to "
+"do more work, adding your own contexts and lifecycle. The Web Beans RI "
+"currently doesn't expose lifecycle extension points, so you would have to "
+"code directly against Web Beans RI classes."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:24
+#, no-c-format
+msgid "The Web Beans RI SPI"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:26
+#, no-c-format
+msgid ""
+"The Web Beans SPI is located in <literal>webbeans-ri-spi</literal> module, "
+"and packaged as <literal>webbeans-ri-spi.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:31
+#, no-c-format
+msgid "Currently, the only SPI to implement is the bootstrap spi:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[public interface WebBeanDiscovery {\n"
+"   /**\n"
+"    * Gets list of all classes in classpath archives with web-beans.xml "
+"files\n"
+"    * \n"
+"    * @return An iterable over the classes \n"
+"    */\n"
+"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
+"   \n"
+"   /**\n"
+"    * Gets a list of all web-beans.xml files in the app classpath\n"
+"    * \n"
+"    * @return An iterable over the web-beans.xml files \n"
+"    */\n"
+"   public Iterable<URL> discoverWebBeansXml();\n"
+"   \n"
+"   /**\n"
+"    * Gets a descriptor for each EJB in the application\n"
+"    * \n"
+"    * @return The bean class to descriptor map \n"
+"    */\n"
+"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:37
+#, no-c-format
+msgid ""
+"The discovery of Web Bean classes and <literal>web-bean.xml</literal> files "
+"is self-explanatory (the algorithm is described in Section 11.1 of the JSR-"
+"299 specification, and isn't repeated here)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:43
+#, no-c-format
+msgid ""
+"The Web Beans RI also delegates EJB3 bean discovery to the container so that "
+"it doesn't have to scan for EJB3 annotations or parse <literal>ejb-jar.xml</"
+"literal>. For each EJB in the application an EJBDescriptor should be "
+"discovered:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:50
+#, no-c-format
+msgid ""
+"<![CDATA[public interface EjbDescriptor<T> {\n"
+"   \n"
+"   /**\n"
+"    * Gets the EJB type\n"
+"    * \n"
+"    * @return The EJB Bean class\n"
+"    */\n"
+"   public Class<T> getType();\n"
+"\n"
+"   /**\n"
+"    * Gets the local business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the local business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces"
+"();\n"
+"   \n"
+"   /**\n"
+"    * Gets the remote business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remote business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> "
+"getRemoteBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Get the remove methods of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remove methods\n"
+"    */\n"
+"   public Iterable<Method> getRemoveMethods();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is stateless\n"
+"    * \n"
+"    * @return True if stateless, false otherwise\n"
+"    */\n"
+"   public boolean isStateless();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is a EJB 3.1 Singleton\n"
+"    * \n"
+"    * @return True if the bean is a singleton, false otherwise\n"
+"    */\n"
+"   public boolean isSingleton();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is stateful\n"
+"    * \n"
+"    * @return True if the bean is stateful, false otherwise\n"
+"    */\n"
+"   public boolean isStateful();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is and MDB\n"
+"    * \n"
+"    * @return True if the bean is an MDB, false otherwise\n"
+"    */\n"
+"   public boolean isMessageDriven();\n"
+"\n"
+"   /**\n"
+"    * Gets the EJB name\n"
+"    * \n"
+"    * @return The name\n"
+"    */\n"
+"   public String getEjbName();\n"
+"   \n"
+"   /**\n"
+"    * @return The JNDI string which can be used to lookup a proxy which \n"
+"    * implements all local business interfaces \n"
+"    * \n"
+"    */\n"
+"   public String getLocalJndiName();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:52
+#, no-c-format
+msgid ""
+"The contract described the JavaDoc is enough to implement an EJBDescriptor. "
+"In addition to these two interfaces, there is "
+"<literal>BusinessInterfaceDescriptor</literal> which represents a local "
+"business interface (encapsulating the interface class and jndi name)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:59
+#, no-c-format
+msgid ""
+"The Web Beans RI can be told to load your implementation of "
+"<literal>WebBeanDiscovery</literal> using the property <literal>org.jboss."
+"webbeans.bootstrap.webBeanDiscovery</literal> with the fully qualified class "
+"name as the value. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:66
+#, no-c-format
+msgid ""
+"org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration."
+"jbossas.WebBeanDiscoveryImpl"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:68
+#, no-c-format
+msgid ""
+"The property can either be specified as a system property, or in a "
+"properties file <literal>META-INF/web-beans-ri.properties</literal>."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:76
+#, no-c-format
+msgid "The contract with the container"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:78
+#, no-c-format
+msgid ""
+"There are a number of requirements that the Web Beans RI places on the "
+"container for correct functioning that fall outside implementation of APIs"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:86
+#, no-c-format
+msgid "Classloader isolation"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:90
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must enable, automatically, or through user "
+"configuation, classloader isolation for each Web Beans application"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:99
+#, no-c-format
+msgid "The <literal>webbeans-ri.jar</literal>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:103
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must insert the <literal>webbeans-ri.jar</"
+"literal> into the applications isolated classloader. It cannot be loaded "
+"from a shared classloader."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/ri-spi.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/ri.po (from rev 638, doc/trunk/reference/fr-FR/modules/ri.po)
===================================================================
--- doc/trunk/reference/fr-FR/ri.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/ri.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1003 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri.xml:4
+#, no-c-format
+msgid "The Web Beans Reference Implementation"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans Reference Implementation is being developed at <ulink url="
+"\"http://seamframework.org/WebBeans\">the Seam project</ulink>. You can "
+"download the latest developer release of Web Beans from the <ulink url="
+"\"http://seamframework.org/Download\">the downloads page</ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:13
+#, no-c-format
+msgid ""
+"The Web Beans RI comes with a two deployable example applications: "
+"<literal>webbeans-numberguess</literal>, a war example, containing only "
+"simple beans, and <literal>webbeans-translator</literal> an ear example, "
+"containing enterprise beans. To run the examples you'll need the following:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:22
+#, no-c-format
+msgid "the latest release of the Web Beans RI,"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:25
+#, no-c-format
+msgid "JBoss AS 5.0.0.GA, and"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:28
+#, no-c-format
+msgid "Ant 1.7.0."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:32
+#, no-c-format
+msgid ""
+"Currently, the Web Beans RI only runs on JBoss Application Server 5. You'll "
+"need to download JBoss AS 5.0.0.GA from <ulink url=\"http://www.jboss.org/"
+"jbossas/downloads/\">jboss.org</ulink>, and unzip it. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd /Applications\n"
+"$ unzip ~/jboss-5.0.0.GA.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:41
+#, no-c-format
+msgid ""
+"Next, download the Web Beans RI from <ulink url=\"http://seamframework.org/"
+"Download\">seamframework.org</ulink>, and unzip it. For example"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd ~/\n"
+"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:50
+#, no-c-format
+msgid ""
+"Next, we need to tell Web Beans where JBoss is located. Edit <literal>jboss-"
+"as/build.properties</literal> and set the <literal>jboss.home</literal> "
+"property. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:56
+#, no-c-format
+msgid "jboss.home=/Applications/jboss-5.0.0.GA"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:58
+#, no-c-format
+msgid ""
+"As Web Beans is a new piece of software, you need to update JBoss AS to run "
+"the Web Beans RI. Future versions of JBoss AS will include these updates, "
+"and this step won't be necessary."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:65
+#, no-c-format
+msgid ""
+"Currently, two updates are needed. Firstly, a new deployer, "
+"<literal>webbeans.deployer</literal> is added. This adds supports for Web "
+"Bean archives to JBoss AS, and allows the Web Beans RI to query the EJB3 "
+"container and discover which EJBs are installed in your application. "
+"Secondly, an update to JBoss EJB3 is needed."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:74
+#, no-c-format
+msgid ""
+"To install the update, you'll need Ant 1.7.0 installed, and the "
+"<literal>ANT_HOME</literal> environment variable set. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:79
+#, no-c-format
+msgid ""
+"$ unzip apache-ant-1.7.0.zip\n"
+"$ export ANT_HOME=~/apache-ant-1.7.0"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:81
+#, no-c-format
+msgid ""
+"Then, you can install the update. The update script will use Maven to "
+"download the Web Beans and EJB3 automatically."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:86
+#, no-c-format
+msgid ""
+"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
+"$ ant update"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:88
+#, no-c-format
+msgid "Now, you're ready to deploy your first example!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:93
+#, no-c-format
+msgid ""
+"The build scripts for the examples offer a number of targets, these are:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:99
+#, no-c-format
+msgid "<literal>ant restart</literal> - deploy the example in exploded format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:105
+#, no-c-format
+msgid ""
+"<literal>ant explode</literal> - update an exploded example, without "
+"restarting the deployment"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:111
+#, no-c-format
+msgid ""
+"<literal>ant deploy</literal> - deploy the example in compressed jar format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:116
+#, no-c-format
+msgid "<literal>ant undeploy</literal> - remove the example from the server"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:121
+#, no-c-format
+msgid "<literal>ant clean</literal> - clean the example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:128
+#, no-c-format
+msgid "To deploy the numberguess example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:132
+#, no-c-format
+msgid ""
+"$ cd examples/numberguess\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:134
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and enjoy hours of fun at <ulink url="
+"\"http://localhost:8080/webbeans-numberguess\"></ulink>!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:139
+#, no-c-format
+msgid ""
+"The Web Beans RI includes a second simple example that will translate your "
+"text into Latin. The numberguess example is a war example, and uses only "
+"simple beans; the translator example is an ear example, and includes "
+"enterprise beans, packaged in an EJB module. To try it out:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:146
+#, no-c-format
+msgid ""
+"$ cd examples/translator\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:148
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and visit <ulink url=\"http://"
+"localhost:8080/webbeans-translator\"></ulink>!"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:154
+#, no-c-format
+msgid "The numberguess example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:156
+#, no-c-format
+msgid ""
+"In the numberguess application you get given 10 attempts to guess a number "
+"between 1 and 100. After each attempt, you will be told whether you are too "
+"high, or too low."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:162
+#, no-c-format
+msgid ""
+"The numberguess example is comprised of a number of Web Beans, configuration "
+"files, and Facelet JSF pages, packaged as a war. Let's start with the "
+"configuration files."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:168
+#, no-c-format
+msgid ""
+"All the configuration files for this example are located in <literal>WEB-INF/"
+"</literal>, which is stored in <literal>WebContent</literal> in the source "
+"tree. First, we have <literal>faces-config.xml</literal>, in which we tell "
+"JSF to use Facelets:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
+"<faces-config version=\"1.2\"\n"
+"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
+"    \n"
+"    <application>\n"
+"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
+"    </application>\n"
+"\n"
+"</faces-config>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:178
+#, no-c-format
+msgid ""
+"There is an empty <literal>web-beans.xml</literal> file, which marks this "
+"application as a Web Beans application."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:183
+#, no-c-format
+msgid "Finally there is <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: section
+#: ri.xml:185
+#, no-c-format
+msgid ""
+"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
+"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
+"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
+"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
+"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"\n"
+"<web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
+"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
+"   \n"
+"   <display-name>Web Beans Numbergues example</display-name>\n"
+"\n"
+"   <!-- JSF -->\n"
+"\n"
+"   <servlet>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
+"      <load-on-startup>1</load-on-startup>\n"
+"   </servlet>\n"
+"\n"
+"   <servlet-mapping>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <url-pattern>*.jsf</url-pattern>\n"
+"   </servlet-mapping>\n"
+"   \n"
+"   <context-param>\n"
+"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
+"      <param-value>.xhtml</param-value>\n"
+"   </context-param>\n"
+"\n"
+"   <session-config>\n"
+"      <session-timeout>10</session-timeout>\n"
+"   </session-config>\n"
+"   \n"
+"    <listener>\n"
+"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
+"class>\n"
+"    </listener>\n"
+"\n"
+"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
+"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
+"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
+"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
+"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
+"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
+"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
+"session timeout of 10 minutes </para> </callout> <callout arearefs="
+"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
+"Beans services can be used in the servlet request </para> </callout> </"
+"calloutlist> </programlistingco> <note> <para> The only configuration "
+"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
+"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
+"the Web Beans RI with any Servlet based web framework; just configure the "
+"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
+"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
+"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
+"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
+"\"30\"/> <area id=\"submit\" coords=\"33\"/> </areaspec> <programlisting><!"
+"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
+"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
+"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
+"\n"
+"  <ui:composition template=\"template.xhtml\">\n"
+"    <ui:define name=\"content\">\n"
+"       <h1>Guess a number...</h1>\n"
+"       <h:form id=\"NumberGuessMain\">\n"
+"          <div style=\"color: red\">\n"
+"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
+"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
+"number gt game.guess and game.guess ne 0}\"/>\n"
+"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
+"number lt game.guess and game.guess ne 0}\"/>\n"
+"          </div>\n"
+"   \n"
+"          <div>\n"
+"             I'm thinking of a number between #{game.smallest} and #{game."
+"biggest}.\n"
+"             You have #{game.remainingGuesses} guesses.\n"
+"          </div>\n"
+"     \n"
+"          <div>\n"
+"             Your guess: \n"
+"             <h:inputText id=\"inputGuess\" \n"
+"                          value=\"#{game.guess}\" \n"
+"                          required=\"true\" \n"
+"                          size=\"3\" \n"
+"                          disabled=\"#{game.number eq game.guess}\">\n"
+"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
+"                                     minimum=\"#{game.smallest}\"/>\n"
+"             </h:inputText>\n"
+"            <h:commandButton id=\"GuessButton\"  \n"
+"                             value=\"Guess\" \n"
+"                             action=\"#{game.check}\" \n"
+"                             disabled=\"#{game.number eq game.guess}\"/>\n"
+"          </div>\n"
+"          <div>\n"
+"            <h:commandButton id=\"RestartButton\" value=\"Reset\" action=\"#"
+"{game.reset}\" immediate=\"true\" />\n"
+"          </div>\n"
+"       </h:form>\n"
+"    </ui:define>\n"
+"  </ui:composition>\n"
+"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
+"<para> Facelets is a templating language for JSF, here we are wrapping our "
+"page in a template which defines the header. </para> </callout> <callout "
+"arearefs=\"messages\"> <para> There are a number of messages which can be "
+"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
+"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
+"range of numbers they can guess gets smaller - this sentance changes to make "
+"sure they know what range to guess in. </para> </callout> <callout arearefs="
+"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
+"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
+"range validator is used to make sure the user doesn't accidentally input a "
+"number outside of the range in which they can guess - if the validator "
+"wasn't here, the user might use up a guess on an out of range number. </"
+"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
+"must be a way for the user to send their guess to the server. Here we bind "
+"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
+"programlistingco>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:298
+#, no-c-format
+msgid ""
+"The example exists of 4 classes, the first two of which are binding types. "
+"First, there is the <literal>@Random</literal> binding type, used for "
+"injecting a random number:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:304
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface Random {}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:306
+#, no-c-format
+msgid ""
+"There is also the <literal>@MaxNumber</literal> binding type, used for "
+"injecting the maximum number that can be injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface MaxNumber {}\n"
+"]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:313
+#, no-c-format
+msgid ""
+"The <literal>Generator</literal> class is responsible for creating the "
+"random number, via a producer method. It also exposes the maximum possible "
+"number via a producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:319
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"   \n"
+"   private java.util.Random random = new java.util.Random( System."
+"currentTimeMillis() );\n"
+"   \n"
+"   private int maxNumber = 100;\n"
+"   \n"
+"   java.util.Random getRandom()\n"
+"   {\n"
+"      return random;\n"
+"   }\n"
+"   \n"
+"   @Produces @Random int next() { \n"
+"      return getRandom().nextInt(maxNumber); \n"
+"   }\n"
+"   \n"
+"   @Produces @MaxNumber int getMaxNumber()\n"
+"   {\n"
+"      return maxNumber;\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:321
+#, no-c-format
+msgid ""
+"You'll notice that the <literal>Generator</literal> is application scoped; "
+"therefore we don't get a different random each time."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:326
+#, no-c-format
+msgid ""
+"The final Web Bean in the application is the session scoped <literal>Game</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:331
+#, no-c-format
+msgid ""
+"You'll note that we've used the <literal>@Named</literal> annotation, so "
+"that we can use the bean through EL in the JSF page. Finally, we've used "
+"constructor injection to initialize the game with a random number. And of "
+"course, we need to tell the player when they've won, so we give feedback "
+"with a <literal>FacesMessage</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:339
+#, no-c-format
+msgid ""
+"<![CDATA[package org.jboss.webbeans.examples.numberguess;\n"
+"\n"
+"\n"
+"import javax.annotation.PostConstruct;\n"
+"import javax.faces.application.FacesMessage;\n"
+"import javax.faces.context.FacesContext;\n"
+"import javax.webbeans.AnnotationLiteral;\n"
+"import javax.webbeans.Current;\n"
+"import javax.webbeans.Initializer;\n"
+"import javax.webbeans.Named;\n"
+"import javax.webbeans.SessionScoped;\n"
+"import javax.webbeans.manager.Manager;\n"
+"\n"
+"@Named\n"
+"@SessionScoped\n"
+"public class Game\n"
+"{\n"
+"   private int number;\n"
+"   \n"
+"   private int guess;\n"
+"   private int smallest;\n"
+"   private int biggest;\n"
+"   private int remainingGuesses;\n"
+"   \n"
+"   @Current Manager manager;\n"
+"   \n"
+"   public Game()\n"
+"   {\n"
+"   }\n"
+"   \n"
+"   @Initializer\n"
+"   Game(@MaxNumber int maxNumber)\n"
+"   {      \n"
+"      this.biggest = maxNumber;\n"
+"   }\n"
+"\n"
+"   public int getNumber()\n"
+"   {\n"
+"      return number;\n"
+"   }\n"
+"   \n"
+"   public int getGuess()\n"
+"   {\n"
+"      return guess;\n"
+"   }\n"
+"   \n"
+"   public void setGuess(int guess)\n"
+"   {\n"
+"      this.guess = guess;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getRemainingGuesses()\n"
+"   {\n"
+"      return remainingGuesses;\n"
+"   }\n"
+"   \n"
+"   public String check()\n"
+"   {\n"
+"      if (guess>number)\n"
+"      {\n"
+"         biggest = guess - 1;\n"
+"      }\n"
+"      if (guess<number)\n"
+"      {\n"
+"         smallest = guess + 1;\n"
+"      }\n"
+"      if (guess == number)\n"
+"      {\n"
+"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
+"(\"Correct!\"));\n"
+"      }\n"
+"      remainingGuesses--;\n"
+"      return null;\n"
+"   }\n"
+"   \n"
+"   @PostConstruct\n"
+"   public void reset()\n"
+"   {\n"
+"      this.smallest = 0;\n"
+"      this.guess = 0;\n"
+"      this.remainingGuesses = 10;\n"
+"      this.number = manager.getInstanceByType(Integer.class, new "
+"AnnotationLiteral<Random>(){});\n"
+"   }\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:343
+#, no-c-format
+msgid "The translator example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:345
+#, no-c-format
+msgid ""
+"The translator example will take any sentences you enter, and translate them "
+"to Latin."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:350
+#, no-c-format
+msgid ""
+"The translator example is built as an ear, and contains EJBs and enterprise "
+"beans. As a result, it's structure is more complex than the numberguess "
+"example."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:357
+#, no-c-format
+msgid ""
+"EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will make "
+"this structure much simpler!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:363
+#, no-c-format
+msgid ""
+"First, let's take a look at the ear aggregator, which is located in "
+"<literal>webbeans-translator-ear</literal> module. Maven automatically "
+"generates the <literal>application.xml</literal> and <literal>jboss-app.xml</"
+"literal> for us:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:370
+#, no-c-format
+msgid ""
+"<![CDATA[<plugin>\n"
+"   <groupId>org.apache.maven.plugins</groupId>\n"
+"   <artifactId>maven-ear-plugin</artifactId>\n"
+"   <configuration>\n"
+"      <modules>\n"
+"         <webModule>\n"
+"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
+"            <artifactId>webbeans-translator-war</artifactId>\n"
+"            <contextRoot>/webbeans-translator</contextRoot>\n"
+"         </webModule>\n"
+"      </modules>\n"
+"      <jboss>\n"
+"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
+"loader-repository>\n"
+"      </jboss>\n"
+"   </configuration>\n"
+"</plugin>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:372
+#, no-c-format
+msgid ""
+"We're doing a couple of things here - firstly we set the context path, which "
+"gives us a nice url (<ulink url=\"http://localhost:8080/webbeans-translator"
+"\">http://localhost:8080/webbeans-translator</ulink>) and we also enable "
+"class loader isolation for JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:380
+#, no-c-format
+msgid ""
+"If you aren't using Maven to generate these files, you would need "
+"<literal>META-INF/jboss-app.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:385
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<!DOCTYPE jboss-app\n"
+"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
+"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
+"<jboss-app>\n"
+"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
+"repository>\n"
+"</jboss-app>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:387
+#, no-c-format
+msgid "and <literal>META-INF/application.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:391
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\">\n"
+"  <display-name>webbeans-translator-ear</display-name>\n"
+"  <description>Ear Example for the reference implementation of JSR 299: Web "
+"Beans</description>\n"
+"  \n"
+"  <module>\n"
+"    <web>\n"
+"      <web-uri>webbeans-translator.war</web-uri>\n"
+"      <context-root>/webbeans-translator</context-root>\n"
+"    </web>\n"
+"  </module>\n"
+"  <module>\n"
+"    <ejb>webbeans-translator.jar</ejb>\n"
+"  </module>\n"
+"</application>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:394
+#, no-c-format
+msgid ""
+"Next, lets look at the war. Just as in the numberguess example, we have a "
+"<literal>faces-config.xml</literal> (to enabled Facelets) and a <literal>web."
+"xml</literal> (to enable JSF and attach Web Beans services to the servlet "
+"container) in <literal>WebContent/WEB-INF</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:401
+#, no-c-format
+msgid ""
+"More intersting is the facelet used to translate text. Just as in the "
+"numberguess example we have a template, which surrounds the form (ommitted "
+"here for brevity):"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:407
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
+"            \n"
+"   <table>\n"
+"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
+"         <td>\n"
+"            Your text\n"
+"         </td>\n"
+"         <td>\n"
+"            Translation\n"
+"         </td>\n"
+"      </tr>\n"
+"      <tr>\n"
+"         <td>\n"
+"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
+"required=\"true\" rows=\"5\" cols=\"80\" />\n"
+"         </td>\n"
+"         <td>\n"
+"            <h:outputText value=\"#{translator.translatedText}\" />\n"
+"         </td>\n"
+"      </tr>\n"
+"   </table>\n"
+"   <div>\n"
+"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
+"{translator.translate}\"/>\n"
+"   </div>\n"
+"   \n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:409
+#, no-c-format
+msgid ""
+"The user can enter some text in the lefthand textarea, and hit the translate "
+"button to see the result to the right."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:414
+#, no-c-format
+msgid ""
+"Finally, let's look at the ejb module, <literal>webbeans-translator-ejb</"
+"literal>. There are two configuration files in <literal>src/main/resources/"
+"META-INF</literal>, an empty <literal>web-beans.xml</literal>, used to mark "
+"the archive as containing Web Beans, and <literal>ejb-jar.xml</literal>. Web "
+"Beans provides injection and initializtion services for all EJBs, and uses "
+"<literal>ejb-jar.xml</literal> to enable this, you'll need this in any EJB "
+"project which uses Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:426
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
+"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\">\n"
+"         \n"
+"   <interceptors>\n"
+"     <interceptor>\n"
+"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"     </interceptor>\n"
+"   </interceptors>\n"
+"   \n"
+"   <assembly-descriptor>\n"
+"      <interceptor-binding>\n"
+"         <ejb-name>*</ejb-name>\n"
+"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"      </interceptor-binding>\n"
+"   </assembly-descriptor>\n"
+"   \n"
+"</ejb-jar>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:428
+#, no-c-format
+msgid ""
+"We've saved the most interesting bit to last, the code! The project has two "
+"simple beans, <literal>SentanceParser</literal> and <literal>TextTranslator</"
+"literal> and two enterprise beans, <literal>TanslatorControllerBean</"
+"literal> and <literal>SentenceTranslator</literal>. You should be getting "
+"quite familiar with what a Web Bean looks like by now, so we'll just "
+"highlight the most interesting bits here."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:438
+#, no-c-format
+msgid ""
+"Both <literal>SentanceParser</literal> and <literal>TextTranslator</literal> "
+"are dependent beans, and <literal>TextTranslator</literal> uses constructor "
+"initialization:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:444
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator { \n"
+"   private SentenceParser sentenceParser; \n"
+"   private Translator sentenceTranslator; \n"
+"   \n"
+"   @Initializer\n"
+"   TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) \n"
+"   { \n"
+"      this.sentenceParser = sentenceParser; \n"
+"      this.sentenceTranslator = sentenceTranslator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:446
+#, no-c-format
+msgid ""
+"<literal>TextTranslator</literal> is a stateless bean (with a local business "
+"interface), where the magic happens - of course, we couldn't develop a full "
+"translator, but we gave it a good go!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:452
+#, no-c-format
+msgid ""
+"Finally, there is UI orientated controller, that collects the text from the "
+"user, and dispatches it to the translator. This is a request scoped, named, "
+"stateful session bean, which injects the translator."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:458
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful\n"
+"@RequestScoped\n"
+"@Named(\"translator\")\n"
+"public class TranslatorControllerBean implements TranslatorController\n"
+"{\n"
+"   \n"
+"   @Current TextTranslator translator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:460
+#, no-c-format
+msgid "The bean also has getters and setters for all the fields on the page."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:464
+#, no-c-format
+msgid "As this is a stateful session bean, we have to have a remove method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:468
+#, no-c-format
+msgid ""
+"<![CDATA[   @Remove\n"
+"   public void remove()\n"
+"   {\n"
+"      \n"
+"   }]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:470
+#, no-c-format
+msgid ""
+"The Web Beans manager will call the remove method for you when the bean is "
+"destroyed; in this case at the end of the request."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:476
+#, no-c-format
+msgid ""
+"That concludes our short tour of the Web Beans RI examples. For more on the "
+"RI, or to help out, please visit <ulink url=\"http://www.seamframework.org/"
+"WebBeans/Development\">http://www.seamframework.org/WebBeans/Development</"
+"ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:482
+#, no-c-format
+msgid ""
+"We need help in all areas - bug fixing, writing new features, writing "
+"examples and translating this reference guide."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/ri.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/scopescontexts.po (from rev 638, doc/trunk/reference/fr-FR/modules/scopescontexts.po)
===================================================================
--- doc/trunk/reference/fr-FR/scopescontexts.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/scopescontexts.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,582 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: scopescontexts.xml:4
+#, no-c-format
+msgid "Scopes and contexts"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen a few examples of <emphasis>scope type annotations</"
+"emphasis>. The scope of a Web Bean determines the lifecycle of instances of "
+"the Web Bean. The scope also determines which clients refer to which "
+"instances of the Web Bean. According to the Web Beans specification, a scope "
+"determines:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:14
+#, no-c-format
+msgid "When a new instance of any Web Bean with that scope is created"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:17
+#, no-c-format
+msgid "When an existing instance of any Web Bean with that scope is destroyed"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:20
+#, no-c-format
+msgid ""
+"Which injected references refer to any instance of a Web Bean with that scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:25
+#, no-c-format
+msgid ""
+"For example, if we have a session scoped Web Bean, <literal>CurrentUser</"
+"literal>, all Web Beans that are called in the context of the same "
+"<literal>HttpSession</literal> will see the same instance of "
+"<literal>CurrentUser</literal>. This instance will be automatically created "
+"the first time a <literal>CurrentUser</literal> is needed in that session, "
+"and automatically destroyed when the session ends."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:32
+#, no-c-format
+msgid "Scope types"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:34
+#, no-c-format
+msgid ""
+"Web Beans features an <emphasis>extensible context model</emphasis>. It is "
+"possible to define new scopes by creating a new scope type annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:37
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD})\n"
+"@ScopeType\n"
+"public @interface ClusterScoped {}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:39
+#, no-c-format
+msgid ""
+"Of course, that's the easy part of the job. For this scope type to be "
+"useful, we will also need to define a <literal>Context</literal> object that "
+"implements the scope! Implementing a <literal>Context</literal> is usually a "
+"very technical task, intended for framework development only."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:44
+#, no-c-format
+msgid ""
+"We can apply a scope type annotation to a Web Bean implementation class to "
+"specify the scope of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[@ClusterScoped\n"
+"public class SecondLevelCache { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:58
+#, no-c-format
+msgid "Usually, you'll use one of Web Beans' built-in scopes."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:63
+#, no-c-format
+msgid "Built-in scopes"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:65
+#, no-c-format
+msgid "Web Beans defines four built-in scopes:"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:69
+#, no-c-format
+msgid "@RequestScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:72
+#, no-c-format
+msgid "@SessionScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:75
+#, no-c-format
+msgid "@ApplicationScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:78
+#, no-c-format
+msgid "@ConversationScoped"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:82
+#, no-c-format
+msgid "For a web application that uses Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:86
+#, no-c-format
+msgid ""
+"any servlet request has access to active request, session and application "
+"scopes, and, additionally"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:90
+#, no-c-format
+msgid "any JSF request has access to an active conversation scope."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:94
+#, no-c-format
+msgid "The request and application scopes are also active:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:98
+#, no-c-format
+msgid "during invocations of EJB remote methods,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:101
+#, no-c-format
+msgid "during EJB timeouts,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:104
+#, no-c-format
+msgid "during message delivery to a message-driven bean, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:107
+#, no-c-format
+msgid "during web service invocations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:111
+#, no-c-format
+msgid ""
+"If the application tries to invoke a Web Bean with a scope that does not "
+"have an active context, a <literal>ContextNotActiveException</literal> is "
+"thrown by the Web Bean manager at runtime."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:115
+#, no-c-format
+msgid ""
+"Three of the four built-in scopes should be extremely familiar to every Java "
+"EE developer, so let's not waste time discussing them here. One of the "
+"scopes, however, is new."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:122
+#, no-c-format
+msgid "The conversation scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:124
+#, no-c-format
+msgid ""
+"The Web Beans conversation scope is a bit like the traditional session scope "
+"in that it holds state associated with a user of the system, and spans "
+"multiple requests to the server. However, unlike the session scope, the "
+"conversation scope:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:130
+#, no-c-format
+msgid "is demarcated explicitly by the application, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:133
+#, no-c-format
+msgid ""
+"holds state associated with a particular web browser tab in a JSF "
+"application."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:138
+#, no-c-format
+msgid ""
+"A conversation represents a task, a unit of work from the point of view of "
+"the user. The conversation context holds state associated with what the user "
+"is currently working on. If the user is doing multiple things at the same "
+"time, there are multiple conversations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:143
+#, no-c-format
+msgid ""
+"The conversation context is active during any JSF request. However, most "
+"conversations are destroyed at the end of the request. If a conversation "
+"should hold state across multiple requests, it must be explicitly promoted "
+"to a <emphasis>long-running conversation</emphasis>."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:149
+#, no-c-format
+msgid "Conversation demarcation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:151
+#, no-c-format
+msgid ""
+"Web Beans provides a built-in Web Bean for controlling the lifecyle of "
+"conversations in a JSF application. This Web Bean may be obtained by "
+"injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:154
+#, no-c-format
+msgid "@Current Conversation conversation;"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:156
+#, no-c-format
+msgid ""
+"To promote the conversation associated with the current request to a long-"
+"running conversation, call the <literal>begin()</literal> method from "
+"application code. To schedule the current long-running conversation context "
+"for destruction at the end of the current request, call <literal>end()</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:161
+#, no-c-format
+msgid ""
+"In the following example, a conversation-scoped Web Bean controls the "
+"conversation with which it is associated:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:164
+#, no-c-format
+msgid ""
+"@ConversationScoped @Stateful\n"
+"public class OrderBuilder {\n"
+"\n"
+"    private Order order;\n"
+"    private @Current Conversation conversation;\n"
+"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
+"    \n"
+"    @Produces public Order getOrder() {\n"
+"        return order;\n"
+"    }\n"
+"\n"
+"    public Order createOrder() {\n"
+"        order = new Order();\n"
+"        conversation.begin();\n"
+"        return order;\n"
+"    }\n"
+"    \n"
+"    public void addLineItem(Product product, int quantity) {\n"
+"        order.add( new LineItem(product, quantity) );\n"
+"    }\n"
+"\n"
+"    public void saveOrder(Order order) {\n"
+"        em.persist(order);\n"
+"        conversation.end();\n"
+"    }\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:166
+#, no-c-format
+msgid ""
+"This Web Bean is able to control its own lifecycle through use of the "
+"<literal>Conversation</literal> API. But some other Web Beans have a "
+"lifecycle which depends completely upon another object."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:173
+#, no-c-format
+msgid "Conversation propagation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:175
+#, no-c-format
+msgid ""
+"The conversation context automatically propagates with any JSF faces request "
+"(JSF form submission). It does not automatically propagate with non-faces "
+"requests, for example, navigation via a link."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:179
+#, no-c-format
+msgid ""
+"We can force the conversation to propagate with a non-faces request by "
+"including the unique identifier of the conversation as a request parameter. "
+"The Web Beans specification reserves the request parameter named "
+"<literal>cid</literal> for this use. The unique identifier of the "
+"conversation may be obtained from the <literal>Conversation</literal> "
+"object, which has the Web Beans name <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:186
+#, no-c-format
+msgid "Therefore, the following link propagates the conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:188
+#, no-c-format
+msgid ""
+"<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]"
+">"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:190
+#, no-c-format
+msgid ""
+"The Web Bean manager is also required to propagate conversations across any "
+"redirect, even if the conversation is not marked long-running. This makes it "
+"very easy to implement the common POST-then-redirect pattern, without resort "
+"to fragile constructs such as a \"flash\" object. In this case, the Web Bean "
+"manager automatically adds a request parameter to the redirect URL."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:200
+#, no-c-format
+msgid "Conversation timeout"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:202
+#, no-c-format
+msgid ""
+"The Web Bean manager is permitted to destroy a conversation and all state "
+"held in its context at any time in order to preserve resources. A Web Bean "
+"manager implementation will normally do this on the basis of some kind of "
+"timeout&#151;though this is not required by the Web Beans specification. The "
+"timeout is the period of inactivity before the conversation is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:208
+#, no-c-format
+msgid ""
+"The <literal>Conversation</literal> object provides a method to set the "
+"timeout. This is a hint to the Web Bean manager, which is free to ignore the "
+"setting."
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:212
+#, no-c-format
+msgid "conversation.setTimeout(timeoutInMillis);"
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:219
+#, no-c-format
+msgid "The dependent pseudo-scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:221
+#, no-c-format
+msgid ""
+"In addition to the four built-in scopes, Web Beans features the so-called "
+"<emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a "
+"Web Bean which does not explicitly declare a scope type."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:225
+#, no-c-format
+msgid ""
+"For example, this Web Bean has the scope type <literal>@Dependent</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:227
+#, no-c-format
+msgid "<![CDATA[public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:229
+#, no-c-format
+msgid ""
+"When an injection point of a Web Bean resolves to a dependent Web Bean, a "
+"new instance of the dependent Web Bean is created every time the first Web "
+"Bean is instantiated. Instances of dependent Web Beans are never shared "
+"between different Web Beans or different injection points. They are "
+"<emphasis>dependent objects</emphasis> of some other Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:235
+#, no-c-format
+msgid ""
+"Dependent Web Bean instances are destroyed when the instance they depend "
+"upon is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:243
+#, no-c-format
+msgid ""
+"Web Beans makes it easy to obtain a dependent instance of a Java class or "
+"EJB bean, even if the class or EJB bean is already declared as a Web Bean "
+"with some other scope type."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:248
+#, no-c-format
+msgid "The <literal>@New</literal> annotation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:250
+#, no-c-format
+msgid ""
+"The built-in <literal>@New</literal> binding annotation allows "
+"<emphasis>implicit</emphasis> definition of a dependent Web Bean at an "
+"injection point. Suppose we declare the following injected field:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:254
+#, no-c-format
+msgid "<![CDATA[@New Calculator calculator;]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:256
+#, no-c-format
+msgid ""
+"Then a Web Bean with scope <literal>@Dependent</literal>, binding type "
+"<literal>@New</literal>, API type <literal>Calculator</literal>, "
+"implementation class <literal>Calculator</literal> and deployment type "
+"<literal>@Standard</literal> is implicitly defined."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:261
+#, no-c-format
+msgid ""
+"This is true even if <literal>Calculator</literal> is <emphasis>already</"
+"emphasis> declared with a different scope type, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:264
+#, no-c-format
+msgid ""
+"<![CDATA[@ConversationScoped\n"
+"public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:266
+#, no-c-format
+msgid ""
+"So the following injected attributes each get a different instance of "
+"<literal>Calculator</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:269
+#, no-c-format
+msgid ""
+"<![CDATA[public class PaymentCalc {\n"
+"\n"
+"    @Current Calculator calculator;\n"
+"    @New Calculator newCalculator;\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:271
+#, no-c-format
+msgid ""
+"The <literal>calculator</literal> field has a conversation-scoped instance "
+"of <literal>Calculator</literal> injected. The <literal>newCalculator</"
+"literal> field has a new instance of <literal>Calculator</literal> injected, "
+"with a lifecycle that is bound to the owning <literal>PaymentCalc</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:276
+#, no-c-format
+msgid ""
+"This feature is particularly useful with producer methods, as we'll see in "
+"the next chapter."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/scopescontexts.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/specialization.po (from rev 638, doc/trunk/reference/fr-FR/modules/specialization.po)
===================================================================
--- doc/trunk/reference/fr-FR/specialization.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/specialization.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,291 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: specialization.xml:4
+#, no-c-format
+msgid "Specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:6
+#, no-c-format
+msgid ""
+"We've already seen how the Web Beans dependency injection model lets us "
+"<emphasis>override</emphasis> the implementation of an API at deployment "
+"time. For example, the following enterprise Web Bean provides an "
+"implementation of the API <literal>PaymentProcessor</literal> in production:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:11
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless\n"
+"public class CreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:13
+#, no-c-format
+msgid ""
+"But in our staging environment, we override that implementation of "
+"<literal>PaymentProcessor</literal> with a different Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:16
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless @Staging\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:18
+#, no-c-format
+msgid ""
+"What we've tried to do with <literal>StagingCreditCardPaymentProcessor</"
+"literal> is to completely replace <literal>AsyncPaymentProcessor</literal> "
+"in a particular deployment of the system. In that deployment, the deployment "
+"type <literal>@Staging</literal> would have a higher priority than the "
+"default deployment type <literal>@Production</literal>, and therefore "
+"clients with the following injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:24
+#, no-c-format
+msgid "@CreditCard PaymentProcessor ccpp"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:26
+#, no-c-format
+msgid ""
+"Would receive an instance of <literal>StagingCreditCardPaymentProcessor</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:28
+#, no-c-format
+msgid "Unfortunately, there are several traps we can easily fall into:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:32
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not implement all the API types of the Web "
+"Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:36
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not declare all the binding types of the "
+"Web Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:40
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean might not have the same name as the Web Bean "
+"that it attempts to override, or"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:44
+#, no-c-format
+msgid ""
+"the Web Bean that it attempts to override might declare a producer method, "
+"disposal method or observer method."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:49
+#, no-c-format
+msgid ""
+"In each of these cases, the Web Bean that we tried to override could still "
+"be called at runtime. Therefore, overriding is somewhat prone to developer "
+"error."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:52
+#, no-c-format
+msgid ""
+"Web Beans provides a special feature, called <emphasis>specialization</"
+"emphasis>, that helps the developer avoid these traps. Specialization looks "
+"a little esoteric at first, but it's easy to use in practice, and you'll "
+"really appreciate the extra security it provides."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:58
+#, no-c-format
+msgid "Using specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:60
+#, no-c-format
+msgid ""
+"Specialization is a feature that is specific to simple and enterprise Web "
+"Beans. To make use of specialization, the higher-priority Web Bean must:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:65
+#, no-c-format
+msgid "be a direct subclass of the Web Bean it overrides, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:68
+#, no-c-format
+msgid ""
+"be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or an "
+"enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:73
+#, no-c-format
+msgid "be annotated <literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:77
+#, no-c-format
+msgid ""
+"@Stateless @Staging @Specializes\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        extends CreditCardPaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:79
+#, no-c-format
+msgid ""
+"We say that the higher-priority Web Bean <emphasis>specializes</emphasis> "
+"its superclass."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:85
+#, no-c-format
+msgid "Advantages of specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:87
+#, no-c-format
+msgid "When specialization is used:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:91
+#, no-c-format
+msgid ""
+"the binding types of the superclass are automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:95
+#, no-c-format
+msgid ""
+"the Web Bean name of the superclass is automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:99
+#, no-c-format
+msgid ""
+"producer methods, disposal methods and observer methods declared by the "
+"superclass are called upon an instance of the Web Bean annotated "
+"<literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:105
+#, no-c-format
+msgid ""
+"In our example, the binding type <literal>@CreditCard</literal> of "
+"<literal>CreditCardPaymentProcessor</literal> is inherited by "
+"<literal>StagingCreditCardPaymentProcessor</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:109
+#, no-c-format
+msgid "Furthermore, the Web Bean manager will validate that:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:113
+#, no-c-format
+msgid ""
+"all API types of the superclass are API types of the Web Bean annotated "
+"<literal>@Specializes</literal> (all local interfaces of the superclass "
+"enterprise bean are also local interfaces of the subclass),"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:119
+#, no-c-format
+msgid ""
+"the deployment type of the Web Bean annotated <literal>@Specializes</"
+"literal> has a higher precedence than the deployment type of the superclass, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:124
+#, no-c-format
+msgid ""
+"there is no other enabled Web Bean that also specializes the superclass."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:129
+#, no-c-format
+msgid ""
+"If any of these conditions are violated, the Web Bean manager throws an "
+"exception at initialization time."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:132
+#, no-c-format
+msgid ""
+"Therefore, we can be certain that the superclass will <emphasis>never</"
+"emphasis> be called in any deployment of the system where the Web Bean "
+"annotated <literal>@Specializes</literal> is deployed and enabled."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/specialization.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/stereotypes.po (from rev 638, doc/trunk/reference/fr-FR/modules/stereotypes.po)
===================================================================
--- doc/trunk/reference/fr-FR/stereotypes.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/stereotypes.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,352 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: stereotypes.xml:4
+#, no-c-format
+msgid "Stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:6
+#, no-c-format
+msgid "According to the Web Beans specification:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:10
+#, no-c-format
+msgid ""
+"In many systems, use of architectural patterns produces a set of recurring "
+"Web Bean roles. A stereotype allows a framework developer to identify such a "
+"role and declare some common metadata for Web Beans with that role in a "
+"central place."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:14
+#, no-c-format
+msgid "A stereotype encapsulates any combination of:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:18
+#, no-c-format
+msgid "a default deployment type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:21
+#, no-c-format
+msgid "a default scope type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:24
+#, no-c-format
+msgid "a restriction upon the Web Bean scope,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:27
+#, no-c-format
+msgid "a requirement that the Web Bean implement or extend a certain type, and"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:30
+#, no-c-format
+msgid "a set of interceptor binding annotations."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:34
+#, no-c-format
+msgid ""
+"A stereotype may also specify that all Web Beans with the stereotype have "
+"defaulted Web Bean names."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:37
+#, no-c-format
+msgid "A Web Bean may declare zero, one or multiple stereotypes."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:41
+#, no-c-format
+msgid ""
+"A stereotype is a Java annotation type. This stereotype identifies action "
+"classes in some MVC framework:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:46
+#, no-c-format
+msgid "We use the stereotype by applying the annotation to a Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:48
+#, no-c-format
+msgid ""
+"<![CDATA[@Action \n"
+"public class LoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:51
+#, no-c-format
+msgid "Default scope and deployment type for a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:53
+#, no-c-format
+msgid ""
+"A stereotype may specify a default scope and/or default deployment type for "
+"Web Beans with that stereotype. For example, if the deployment type "
+"<literal>@WebTier</literal> identifies Web Beans that should only be "
+"deployed when the system executes as a web application, we might specify the "
+"following defaults for action classes:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:59
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:61
+#, no-c-format
+msgid ""
+"Of course, a particular action may still override these defaults if "
+"necessary:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[@Dependent @Mock @Action \n"
+"public class MockLoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:66
+#, no-c-format
+msgid ""
+"If we want to force all actions to a particular scope, we can do that too."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:72
+#, no-c-format
+msgid "Restricting scope and type with a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:74
+#, no-c-format
+msgid ""
+"Suppose that we wish to prevent actions from declaring certain scopes. Web "
+"Beans lets us explicitly specify the set of allowed scopes for Web Beans "
+"with a certain stereotype. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(supportedScopes=RequestScoped.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:80
+#, no-c-format
+msgid ""
+"If a particular action class attempts to specify a scope other than the Web "
+"Beans request scope, an exception will be thrown by the Web Bean manager at "
+"initialization time."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:84
+#, no-c-format
+msgid ""
+"We can also force all Web Bean with a certain stereotype to implement an "
+"interface or extend a class:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:87
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(requiredTypes=AbstractAction.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:89
+#, no-c-format
+msgid ""
+"If a particular action class does not extend the class "
+"<literal>AbstractAction</literal>, an exception will be thrown by the Web "
+"Bean manager at initialization time."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:96
+#, no-c-format
+msgid "Interceptor bindings for stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:98
+#, no-c-format
+msgid ""
+"A stereotype may specify a set of interceptor bindings to be inherited by "
+"all Web Beans with that stereotype."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:101
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:103
+#, no-c-format
+msgid ""
+"This helps us get technical concerns even further away from the business "
+"code!"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:109
+#, no-c-format
+msgid "Name defaulting with stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:111
+#, no-c-format
+msgid ""
+"Finally, we can specify that all Web Beans with a certain stereotype have a "
+"Web Bean name, defaulted by the Web Bean manager. Actions are often "
+"referenced in JSP pages, so they're a perfect use case for this feature. All "
+"we need to do is add an empty <literal>@Named</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:116
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@Named\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:118
+#, no-c-format
+msgid ""
+"Now, <literal>LoginAction</literal> will have the name <literal>loginAction</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:124
+#, no-c-format
+msgid "Standard stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:126
+#, no-c-format
+msgid ""
+"We've already met two standard stereotypes defined by the Web Beans "
+"specification: <literal>@Interceptor</literal> and <literal>@Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:129
+#, no-c-format
+msgid "Web Beans defines one further standard stereotype:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:131
+#, no-c-format
+msgid ""
+"<![CDATA[@Named \n"
+"@RequestScoped \n"
+"@Stereotype \n"
+"@Target({TYPE, METHOD}) \n"
+"@Retention(RUNTIME) \n"
+"public @interface Model {} ]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:133
+#, no-c-format
+msgid ""
+"This stereotype is intended for use with JSF. Instead of using JSF managed "
+"beans, just annotate a Web Bean <literal>@Model</literal>, and use it "
+"directly in your JSF page."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/stereotypes.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/fr-FR/xml.po (from rev 638, doc/trunk/reference/fr-FR/modules/xml.po)
===================================================================
--- doc/trunk/reference/fr-FR/xml.po	                        (rev 0)
+++ doc/trunk/reference/fr-FR/xml.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,352 @@
+# Language fr-FR translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: xml.xml:4
+#, no-c-format
+msgid "Defining Web Beans using XML"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen plenty of examples of Web Beans declared using "
+"annotations. However, there are a couple of occasions when we can't use "
+"annotations to define the Web Bean:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:12
+#, no-c-format
+msgid "when the implementation class comes from some preexisting library, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:15
+#, no-c-format
+msgid ""
+"when there should be multiple Web Beans with the same implementation class."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:20
+#, no-c-format
+msgid "In either of these cases, Web Beans gives us two options:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:23
+#, no-c-format
+msgid "write a producer method, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:24
+#, no-c-format
+msgid "declare the Web Bean using XML."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:27
+#, no-c-format
+msgid ""
+"Many frameworks use XML to provide metadata relating to Java classes. "
+"However, Web Beans uses a very different approach to specifying the names of "
+"Java classes, fields or methods to most other frameworks. Instead of writing "
+"class and member names as the string values of XML elements and attributes, "
+"Web Beans lets you use the class or member name as the name of the XML "
+"element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:33
+#, no-c-format
+msgid ""
+"The advantage of this approach is that you can write an XML schema that "
+"prevents spelling errors in your XML document. It's even possible for a tool "
+"to generate the XML schema automatically from the compiled Java code. Or, an "
+"integrated development environment could perform the same validation without "
+"the need for the explicit intermediate generation step."
+msgstr ""
+
+#. Tag: title
+#: xml.xml:40
+#, no-c-format
+msgid "Declaring Web Bean classes"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:42
+#, no-c-format
+msgid ""
+"For each Java package, Web Beans defines a corresponding XML namespace. The "
+"namespace is formed by prepending <literal>urn:java:</literal> to the Java "
+"package name. For the package <literal>com.mydomain.myapp</literal>, the XML "
+"namespace is <literal>urn:java:com.mydomain.myapp</literal>."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:47
+#, no-c-format
+msgid ""
+"Java types belonging to a package are referred to using an XML element in "
+"the namespace corresponding to the package. The name of the element is the "
+"name of the Java type. Fields and methods of the type are specified by child "
+"elements in the same namespace. If the type is an annotation, members are "
+"specified by attributes of the element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:53
+#, no-c-format
+msgid ""
+"For example, the element <literal>&lt;util:Date/&gt;</literal> in the "
+"following XML fragment refers to the class <literal>java.util.Date</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:util=\"urn:java:java.util\">\n"
+"\n"
+"    <util:Date/>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:58
+#, no-c-format
+msgid ""
+"And this is all the code we need to declare that <literal>Date</literal> is "
+"a simple Web Bean! An instance of <literal>Date</literal> may now be "
+"injected by any other Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:62
+#, no-c-format
+msgid "<![CDATA[@Current Date date]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:67
+#, no-c-format
+msgid "Declaring Web Bean metadata"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:69
+#, no-c-format
+msgid ""
+"We can declare the scope, deployment type and interceptor binding types "
+"using direct child elements of the Web Bean declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:72
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:ShoppingCart>\n"
+"    <SessionScoped/>\n"
+"    <myfwk:Transactional requiresNew=\"true\"/>\n"
+"    <myfwk:Secure/>\n"
+"</myapp:ShoppingCart>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:74
+#, no-c-format
+msgid "We use exactly the same approach to specify names and binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[<util:Date>\n"
+"    <Named>currentTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <SessionScoped/>\n"
+"    <myapp:Login/>\n"
+"    <Named>loginTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:SystemStart/>\n"
+"    <Named>systemStartTime</Named>\n"
+"</util:Date>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:78
+#, no-c-format
+msgid ""
+"Where <literal>@Login</literal> and <literal>@SystemStart</literal> are "
+"binding annotations types."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@Current Date currentTime;\n"
+"@Login Date loginTime;\n"
+"@SystemStart Date systemStartTime;]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:83
+#, no-c-format
+msgid "As usual, a Web Bean may support multiple binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:85
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
+"    <myapp:PayByCheque/>\n"
+"    <myapp:Asynchronous/>\n"
+"</myapp:AsynchronousChequePaymentProcessor>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:87
+#, no-c-format
+msgid ""
+"Interceptors and decorators are just simple Web Beans, so they may be "
+"declared just like any other simple Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:90
+#, no-c-format
+msgid ""
+"<![CDATA[<myfwk:TransactionInterceptor>\n"
+"    <Interceptor/>\n"
+"    <myfwk:Transactional/>\n"
+"</myfwk:TransactionInterceptor>]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:95
+#, no-c-format
+msgid "Declaring Web Bean members"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:97
+#, no-c-format
+msgid "TODO!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:104
+#, no-c-format
+msgid "Declaring inline Web Beans"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:106
+#, no-c-format
+msgid "Web Beans lets us define a Web Bean at an injection point. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:108
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:System>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:admin>\n"
+"        <myapp:Name>\n"
+"            <myapp:firstname>Gavin</myapp:firstname>\n"
+"            <myapp:lastname>King</myapp:lastname>\n"
+"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
+"        </myapp:Name>\n"
+"    </myapp:admin>\n"
+"</myapp:System>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:110
+#, no-c-format
+msgid ""
+"The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of "
+"scope <literal>@Dependent</literal> and class <literal>Name</literal>, with "
+"a set of initial field values. This Web Bean has a special, container-"
+"generated binding and is therefore injectable only to the specific injection "
+"point at which it is declared."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:116
+#, no-c-format
+msgid ""
+"This simple but powerful feature allows the Web Beans XML format to be used "
+"to specify whole graphs of Java objects. It's not quite a full databinding "
+"solution, but it's close!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:123
+#, no-c-format
+msgid "Using a schema"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:125
+#, no-c-format
+msgid ""
+"If we want our XML document format to be authored by people who aren't Java "
+"developers, or who don't have access to our code, we need to provide a "
+"schema. There's nothing specific to Web Beans about writing or using the "
+"schema."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
+"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/"
+"jee/web-beans-1.0.xsd\n"
+"                              urn:java:com.mydomain.myapp http://mydomain."
+"com/xsd/myapp-1.2.xsd\">\n"
+"\n"
+"    <myapp:System>\n"
+"        ...\n"
+"    </myapp:System>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:132
+#, no-c-format
+msgid ""
+"Writing an XML schema is quite tedious. Therefore, the Web Beans RI project "
+"will provide a tool which automatically generates the XML schema from "
+"compiled Java code."
+msgstr ""


Property changes on: doc/trunk/reference/fr-FR/xml.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/it-IT/Author_Group.po
===================================================================
--- doc/trunk/reference/it-IT/Author_Group.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/Author_Group.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,60 @@
+# Language it-IT translations for Introduction_to_Web_Beans package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Introduction_to_Web_Beans VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-04 23:18+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:4
+#, no-c-format
+msgid "<firstname>Gavin</firstname> <surname>King</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red Hat "
+"Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: author
+#: Author_Group.xml:12
+#, no-c-format
+msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:15
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) Reference Implementation lead </jobtitle> "
+"<orgname>Red Hat Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:21
+#, no-c-format
+msgid "<firstname>Nicola</firstname> <surname>Benaglia</surname>"
+msgstr ""
+
+#. Tag: contrib
+#: Author_Group.xml:24 Author_Group.xml:29
+#, no-c-format
+msgid "Italian Translation"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:26
+#, no-c-format
+msgid "<firstname>Francesco</firstname> <surname>Milesi</surname>"
+msgstr ""

Copied: doc/trunk/reference/it-IT/Book_Info.po (from rev 638, doc/trunk/reference/it-IT/modules/Book_Info.po)
===================================================================
--- doc/trunk/reference/it-IT/Book_Info.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/Book_Info.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,50 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-20 00:05+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:4
+#, no-c-format
+msgid "Introduction to Web Beans"
+msgstr "Introduzione a Web Beans"
+
+#. Tag: subtitle
+#: Book_Info.xml:5
+#, no-c-format
+msgid ""
+"The new Java standard for dependency injection and contextual state "
+"management"
+msgstr ""
+"Il nuovo standard Java per la dependency injection e la gestione contestuale "
+"dello stato"
+
+#~ msgid "<firstname>Gavin</firstname> <surname>King</surname>"
+#~ msgstr "<firstname>Gavin</firstname> <surname>King</surname>"
+
+#~ msgid ""
+#~ "<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red "
+#~ "Hat Middleware LLC</orgname>"
+#~ msgstr ""
+#~ "<jobtitle>Responsabile della specifica di Web Beans (JSR-299)</jobtitle> "
+#~ "<orgname>Red Hat Middleware LLC</orgname>"
+
+#~ msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
+#~ msgstr "<firstname>Pete</firstname> <surname>Muir</surname>"
+
+#~ msgid ""
+#~ "<jobtitle>Web Beans (JSR-299) Reference Implementation lead</jobtitle> "
+#~ "<orgname>Red Hat Middleware LLC</orgname>"
+#~ msgstr ""
+#~ "<jobtitle>Responsabile per l'implementazione della documentazione Web "
+#~ "Beans (JSR-299)</jobtitle> <orgname>Red Hat Middleware LLC</orgname>"


Property changes on: doc/trunk/reference/it-IT/Book_Info.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/decorators.po (from rev 638, doc/trunk/reference/it-IT/modules/decorators.po)
===================================================================
--- doc/trunk/reference/it-IT/decorators.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/decorators.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,239 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-20 13:48+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: decorators.xml:4
+#, no-c-format
+msgid "Decorators"
+msgstr "Decoratori"
+
+#. Tag: para
+#: decorators.xml:6
+#, no-c-format
+msgid "Interceptors are a powerful way to capture and separate concerns which are <emphasis>orthogonal</emphasis> to the type system. Any interceptor is able to intercept invocations of any Java type. This makes them perfect for solving technical concerns such as transaction management and security. However, by nature, interceptors are unaware of the actual semantics of the events they intercept. Thus, interceptors aren't an appropriate tool for separating business-related concerns."
+msgstr "Gli interceptor sono un potente modo per catturare e separare i concern (N.d.T. un concern è un particulare concetto o area di interesse) che sono <emphasis>orthogonal</emphasis> al sistema tipo. Qualsiasi interceptor è capace di intercettare le invocazioni di qualsiasi tipo Java. Questo li rende perfetti per risolvere concern tecnici quali gestione delle transazioni e la sicurezza. Comunque, per natura, gli interceptor non sono consapevoli dell'attuale semantica degli eventi che intercettano. Quindi gli interceptor non sono il giusto strumento per separare i concern di tipo business."
+
+# ...concerns that cut across many disparate types = ?
+#. Tag: para
+#: decorators.xml:14
+#, no-c-format
+msgid "The reverse is true of <emphasis>decorators</emphasis>. A decorator intercepts invocations only for a certain Java interface, and is therefore aware of all the semantics attached to that interface. This makes decorators a perfect tool for modeling some kinds of business concerns. It also means that a decorator doesn't have the generality of an interceptor. Decorators aren't able to solve technical concerns that cut across many disparate types."
+msgstr "Il contrario è vero per i <emphasis>decoratori</emphasis>. Un decoratore intercetta le invocazioni solamente per una certa interfaccia Java, e quindi è consapevole della semantica legata a questa. Ciò rende i decoratori uno strumento perfetto per modellare alcuni tipi di concern di business. E significa pure che un decoratore non ha la generalità di un interceptor. I decoratori non sono capaci di risolvere i concern tecnici che agiscono per diversi tipi."
+
+#. Tag: para
+#: decorators.xml:22
+#, no-c-format
+msgid "Suppose we have an interface that represents accounts:"
+msgstr "Supponiamo di avere un'interfaccia che rappresenti degli account:"
+
+#. Tag: programlisting
+#: decorators.xml:24
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Account {\n"
+"    public BigDecimal getBalance();\n"
+"    public User getOwner();\n"
+"    public void withdraw(BigDecimal amount);\n"
+"    public void deposit(BigDecimal amount);\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public interface Account {\n"
+"    public BigDecimal getBalance();\n"
+"    public User getOwner();\n"
+"    public void withdraw(BigDecimal amount);\n"
+"    public void deposit(BigDecimal amount);\n"
+"}]]>"
+
+#. Tag: para
+#: decorators.xml:26
+#, no-c-format
+msgid "Several different Web Beans in our system implement the <literal>Account</literal> interface. However, we have a common legal requirement that, for any kind of account, large transactions must be recorded by the system in a special log. This is a perfect job for a decorator."
+msgstr "Parecchi Web Beans del nostro sistema implementano l'interfaccia <literal>Account</literal>. Abbiamo come comune requisito legale, per ogni tipo di account, che le transazioni lunghe vengano registrate dal sistema in uno speciale log. Questo è un lavoro perfetto per un decoratore."
+
+#. Tag: para
+#: decorators.xml:32
+#, no-c-format
+msgid "A decorator is a simple Web Bean that implements the type it decorates and is annotated <literal>@Decorator</literal>."
+msgstr "Un decorator è un semplice Web Beans che implementa il tipo che decora ed è annotato con <literal>@Decorator</literal>.\""
+
+#. Tag: programlisting
+#: decorators.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Decorator\n"
+"public abstract class LargeTransactionDecorator \n"
+"        implements Account {\n"
+"    \n"
+"    @Decorates Account account;\n"
+"    \n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    public void withdraw(BigDecimal amount) {\n"
+"        account.withdraw(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedWithdrawl(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"    public void deposit(BigDecimal amount);\n"
+"        account.deposit(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedDeposit(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Decorator\n"
+"public abstract class LargeTransactionDecorator \n"
+"        implements Account {\n"
+"    \n"
+"    @Decorates Account account;\n"
+"    \n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    public void withdraw(BigDecimal amount) {\n"
+"        account.withdraw(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedWithdrawl(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"    public void deposit(BigDecimal amount);\n"
+"        account.deposit(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedDeposit(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: decorators.xml:37
+#, no-c-format
+msgid "Unlike other simple Web Beans, a decorator may be an abstract class. If there's nothing special the decorator needs to do for a particular method of the decorated interface, you don't need to implement that method."
+msgstr "Diversamente dai semplici Web Beans, un decoratore può essere una classe astratta. Se un decoratore non ha niente da fare per un particolare metodo, allora non occorre implementare quel metodo."
+
+#. Tag: title
+#: decorators.xml:43
+#, no-c-format
+msgid "Delegate attributes"
+msgstr "Attributi delegate"
+
+#. Tag: para
+#: decorators.xml:45
+#, no-c-format
+msgid "All decorators have a <emphasis>delegate attribute</emphasis>. The type and binding types of the delegate attribute determine which Web Beans the decorator is bound to. The delegate attribute type must implement or extend all interfaces implemented by the decorator."
+msgstr "Tutti i decoratori hanno un <emphasis>attributo delegato</emphasis>. Il tipo ed i tipi di binding dell'attributo delegato determinano a quali Web Beans è legato il decoratore. Il tipo di attributo delegato deve implementare o estendere tutte le interfacce implementate dal decoratore."
+
+#. Tag: para
+#: decorators.xml:50
+#, no-c-format
+msgid "This delegate attribute specifies that the decorator is bound to all Web Beans that implement <literal>Account</literal>:"
+msgstr "Quest'attributo delegate specifica che ildecorator è legao a tutti i Web Beans che implementano <literal>Account</literal>:"
+
+#. Tag: programlisting
+#: decorators.xml:53
+#, no-c-format
+msgid "<![CDATA[@Decorates Account account;]]>"
+msgstr "<![CDATA[@Decorates Account account;]]>"
+
+# E' corretto tradurre BOUND con LEGATO in questo particolare contesto?
+# ....rivedere alcune frasi sopra.
+#. Tag: para
+#: decorators.xml:55
+#, no-c-format
+msgid "A delegate attribute may specify a binding annotation. Then the decorator will only be bound to Web Beans with the same binding."
+msgstr "Un attributo delegato può specificare un'annotazione di binding. E quindi il decoratore verrà associato a Web Beans con lo stesso binding."
+
+#. Tag: programlisting
+#: decorators.xml:58
+#, no-c-format
+msgid "<![CDATA[@Decorates @Foreign Account account;]]>"
+msgstr "<![CDATA[@Decorates @Foreign Account account;]]>"
+
+#. Tag: para
+#: decorators.xml:60
+#, no-c-format
+msgid "A decorator is bound to any Web Bean which:"
+msgstr "Un decorator è legato ad un qualsiasi Web Bean che:"
+
+#. Tag: para
+#: decorators.xml:64
+#, no-c-format
+msgid "has the type of the delegate attribute as an API type, and"
+msgstr "ha il tipo di attributo delegate come un tipo API, e"
+
+#. Tag: para
+#: decorators.xml:67
+#, no-c-format
+msgid "has all binding types that are declared by the delegate attribute."
+msgstr "ha tutti i tipi di binding che sono dichiarati dall'attributo delegate."
+
+#. Tag: para
+#: decorators.xml:71
+#, no-c-format
+msgid "The decorator may invoke the delegate attribute, which has much the same effect as calling <literal>InvocationContext.proceed()</literal> from an interceptor."
+msgstr "Il decoratore può invocare l'attributo delegate, il ché ha lo stesso effetto come chiamare <literal>InvocationContext.proceed()</literal> da un interceptor."
+
+#. Tag: title
+#: decorators.xml:78
+#, no-c-format
+msgid "Enabling decorators"
+msgstr "Abilitare i decoratori"
+
+#. Tag: para
+#: decorators.xml:80
+#, no-c-format
+msgid "We need to <emphasis>enable</emphasis> our decorator in <literal>web-beans.xml</literal>."
+msgstr "Occorre <emphasis>abilitare</emphasis> il decoratore in <literal>web-beans.xml</literal>."
+
+#. Tag: programlisting
+#: decorators.xml:83
+#, no-c-format
+msgid ""
+"<![CDATA[<Decorators>\n"
+"    <myapp:LargeTransactionDecorator/>\n"
+"</Decorators>]]>"
+msgstr ""
+"<![CDATA[<Decorators>\n"
+"    <myapp:LargeTransactionDecorator/>\n"
+"</Decorators>]]>"
+
+# Rivedere la frase?
+#. Tag: para
+#: decorators.xml:85
+#, no-c-format
+msgid "This declaration serves the same purpose for decorators that the <literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:"
+msgstr "Per i decoratori questa dichiarazione provvede alle stesse finalità di quanto la dichiarazione <literal>&lt;Interceptors&gt;</literal> fa per gli interceptor."
+
+#. Tag: para
+#: decorators.xml:90
+#, no-c-format
+msgid "it enables us to specify a total ordering for all decorators in our system, ensuring deterministic behavior, and"
+msgstr "Consente di specificare un ordinamento totale per tutti i decoratori del sistema, assicurando un comportamento deterministico, e"
+
+#. Tag: para
+#: decorators.xml:94
+#, no-c-format
+msgid "it lets us enable or disable decorator classes at deployment time."
+msgstr "consente di abilitare o disabilitare le classi decorato durante la fase di deploy."
+
+#. Tag: para
+#: decorators.xml:98
+#, no-c-format
+msgid "Interceptors for a method are called before decorators that apply to that method."
+msgstr "Gli interceptor per un metodo sono chiamati prima dei decoratori che vengono applicati a tali metodo."
+


Property changes on: doc/trunk/reference/it-IT/decorators.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/ee.po (from rev 638, doc/trunk/reference/it-IT/modules/ee.po)
===================================================================
--- doc/trunk/reference/it-IT/ee.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/ee.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,473 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-20 13:47+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ee.xml:4
+#, no-c-format
+msgid "Java EE integration"
+msgstr "Integrazione Java EE"
+
+#. Tag: para
+#: ee.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is fully integrated into the Java EE environment. Web Beans have "
+"access to Java EE resources and JPA persistence contexts. They may be used "
+"in Unified EL expressions in JSF and JSP pages. They may even be injected "
+"into some objects, such as Servlets and Message-Driven Beans, which are not "
+"Web Beans."
+msgstr ""
+"Web Beans è pienamente integrata nell'ambiente Java EE. Web Beans ha accesso "
+"alle risorse Java EE ed ai contesti di persistenza JPA. I Web Beans possono "
+"essere usati in espressioni Unified EL dentro pagine JSF e JSP. Possono "
+"anche essere iniettati negli oggetti, come Servlet e Message-Driven Beans, "
+"che non sono Web Beans."
+
+#. Tag: title
+#: ee.xml:12
+#, no-c-format
+msgid "Injecting Java EE resources into a Web Bean"
+msgstr "Iniettare risorse Java EE in un Web Bean"
+
+#. Tag: para
+#: ee.xml:14
+#, no-c-format
+msgid ""
+"All simple and enterprise Web Beans may take advantage of Java EE dependency "
+"injection using <literal>@Resource</literal>, <literal>@EJB</literal> and "
+"<literal>@PersistenceContext</literal>. We've already seen a couple of "
+"examples of this, though we didn't pay much attention at the time:"
+msgstr ""
+"Tutti i Web Beans sia semplici che enterprise si avvantaggiano della "
+"dependency injection di Java EE usando <literal>@Resource</literal>, "
+"<literal>@EJB</literal> e <literal>@PersistenceContext</literal>. Abbiamo "
+"già visto un paio di esempi a riguardo, sebbene non ci siamo soffermati "
+"molto a suo tempo."
+
+#. Tag: programlisting
+#: ee.xml:19
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+
+#. Tag: programlisting
+#: ee.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"    \n"
+"    ...\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@SessionScoped\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"    \n"
+"    ...\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: ee.xml:23
+#, no-c-format
+msgid ""
+"The Java EE <literal>@PostConstruct</literal> and <literal>@PreDestroy</"
+"literal> callbacks are also supported for all simple and enterprise Web "
+"Beans. The <literal>@PostConstruct</literal> method is called after "
+"<emphasis>all</emphasis> injection has been performed."
+msgstr ""
+"Le chiamate Java EE <literal>@PostConstruct</literal> e "
+"<literal>@PreDestroy</literal> vengono anche supportate per tutti i Web "
+"Beans (semplici e enterprise). Il metodo <literal>@PostConstruct</literal> "
+"viene chiamato dopo che <emphasis>tutta</emphasis> l'injection è stata "
+"eseguita."
+
+#. Tag: para
+#: ee.xml:28
+#, no-c-format
+msgid ""
+"There is one restriction to be aware of here: <literal>@PersistenceContext"
+"(type=EXTENDED)</literal> is not supported for simple Web Beans."
+msgstr ""
+"C'è una restrizione di cui essere informati: <literal>@PersistenceContext"
+"(type=EXTENDED)</literal> non è supportato per i Web Beans semplici."
+
+#. Tag: title
+#: ee.xml:35
+#, no-c-format
+msgid "Calling a Web Bean from a Servlet"
+msgstr "Chiamare un Web Bean da un servlet"
+
+#. Tag: para
+#: ee.xml:37
+#, no-c-format
+msgid ""
+"It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject the "
+"Web Bean using Web Beans field or initializer method injection."
+msgstr ""
+"E' facile utilizzare i Web Beans da un Servlet in Java EE 6. Semplicemente "
+"si inietti il Web Bean utilizzando l'injection del campo Web Bean o del "
+"metodo inizializzatore."
+
+#. Tag: programlisting
+#: ee.xml:40
+#, no-c-format
+msgid ""
+"public class Login extends HttpServlet {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @Current Login login;\n"
+"\n"
+"    @Override\n"
+"    public void service(HttpServletRequest request, HttpServletResponse "
+"response)\n"
+"        throws ServletException, IOException {\n"
+"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
+"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
+"        login.login();\n"
+"        if ( login.isLoggedIn() ) {\n"
+"            response.sendRedirect(\"/home.jsp\");\n"
+"        }\n"
+"        else {\n"
+"            response.sendRedirect(\"/loginError.jsp\");\n"
+"        }\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+"public class Login extends HttpServlet {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @Current Login login;\n"
+"\n"
+"    @Override\n"
+"    public void service(HttpServletRequest request, HttpServletResponse "
+"response)\n"
+"        throws ServletException, IOException {\n"
+"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
+"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
+"        login.login();\n"
+"        if ( login.isLoggedIn() ) {\n"
+"            response.sendRedirect(\"/home.jsp\");\n"
+"        }\n"
+"        else {\n"
+"            response.sendRedirect(\"/loginError.jsp\");\n"
+"        }\n"
+"    }\n"
+"            \n"
+"}"
+
+#. Tag: para
+#: ee.xml:42
+#, no-c-format
+msgid ""
+"The Web Beans client proxy takes care of routing method invocations from the "
+"Servlet to the correct instances of <literal>Credentials</literal> and "
+"<literal>Login</literal> for the current request and HTTP session."
+msgstr ""
+"Il client proxy Web Beans si occupa di instradare le invocazioni dei metodi "
+"da un Servlet alle corrette istanze di <literal>Credentials</literal> e "
+"<literal>Login</literal> per la richiesta corrente e la sessione HTTP."
+
+#. Tag: title
+#: ee.xml:49
+#, no-c-format
+msgid "Calling a Web Bean from a Message-Driven Bean"
+msgstr "Chiamare un Web Bean da un Message-Driven Bean"
+
+#. Tag: para
+#: ee.xml:51
+#, no-c-format
+msgid ""
+"Web Beans injection applies to all EJBs, even when they aren't under the "
+"control of the Web Bean manager (if they were obtained by direct JNDI "
+"lookup, or injection using <literal>@EJB</literal>, for example. In "
+"particular, you can use Web Beans injection in Message-Driven Beans, which "
+"are not considered Web Beans because you can't inject them."
+msgstr ""
+"L'injection dei Web Beans si applica a tutti gli EJB3, perfino quando non "
+"sono sotto il controllo del manager Web Bean (per esempio se sono stati "
+"ottenuti da ricerca JNDI diretta, o injection usando <literal>@EJB</"
+"literal>) In particolaresi può usare l'injection di Web Beans nei Message-"
+"Driven Beans, che non sono considerati Web Beans poiché non possono essere "
+"iniettati."
+
+# Web Beans interceptor bindings =?
+#. Tag: para
+#: ee.xml:57
+#, no-c-format
+msgid ""
+"You can even use Web Beans interceptor bindings for Message-Driven Beans."
+msgstr ""
+"Si possono perfino associare degli interceptor Web Beans ai Message-Driven "
+"Beans."
+
+#. Tag: programlisting
+#: ee.xml:59
+#, no-c-format
+msgid ""
+"@Transactional @MessageDriven\n"
+"public class ProcessOrder implements MessageListener {\n"
+"\n"
+"    @Current Inventory inventory;\n"
+"    @PersistenceContext EntityManager em;\n"
+"\n"
+"    public void onMessage(Message message) {\n"
+"        ...\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+"@Transactional @MessageDriven\n"
+"public class ProcessOrder implements MessageListener {\n"
+"\n"
+"    @Current Inventory inventory;\n"
+"    @PersistenceContext EntityManager em;\n"
+"\n"
+"    public void onMessage(Message message) {\n"
+"        ...\n"
+"    }\n"
+"            \n"
+"}"
+
+#. Tag: para
+#: ee.xml:61
+#, no-c-format
+msgid ""
+"Thus, receiving messages is super-easy in a Web Beans environment. But "
+"beware that there is no session or conversation context available when a "
+"message is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</"
+"literal> and <literal>@ApplicationScoped</literal> Web Beans are available."
+msgstr ""
+"Quindi ricevere i messaggi è veramente facile in ambiente Web Beans. Ma "
+"attenzione che non è disponibile alcun contesto di sessione o conversazione "
+"quando il messaggio viene consegnato al Message-Driven Bean. Solamente i Web "
+"Beans <literal>@RequestScoped</literal> and <literal>@ApplicationScoped</"
+"literal> sono disponibili."
+
+#. Tag: para
+#: ee.xml:66
+#, no-c-format
+msgid "It's also easy to send messages using Web Beans."
+msgstr "E' anche molto facile spedire messaggi usando Web Beans."
+
+#. Tag: title
+#: ee.xml:71
+#, no-c-format
+msgid "JMS endpoints"
+msgstr "Endpoint JMS"
+
+#. Tag: para
+#: ee.xml:73
+#, no-c-format
+msgid ""
+"Sending messages using JMS can be quite complex, because of the number of "
+"different objects you need to deal with. For queues we have <literal>Queue</"
+"literal>, <literal>QueueConnectionFactory</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> and "
+"<literal>QueueSender</literal>. For topics we have <literal>Topic</literal>, "
+"<literal>TopicConnectionFactory</literal>, <literal>TopicConnection</"
+"literal>, <literal>TopicSession</literal> and <literal>TopicPublisher</"
+"literal>. Each of these objects has its own lifecycle and threading model "
+"that we need to worry about."
+msgstr ""
+"La spedizione dei messaggi usando JMS può essere abbastanza complessa, a "
+"causa del numero di oggetti differenti da trattare. Per le code si hanno "
+"<literal>Queue</literal>, <literal>QueueConnectionFactory</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> e "
+"<literal>QueueSender</literal>. Per i topic si hanno <literal>Topic</"
+"literal>, <literal>TopicConnectionFactory</literal>, "
+"<literal>TopicConnection</literal>, <literal>TopicSession</literal> e "
+"<literal>TopicPublisher</literal>. Ciascuno di questi oggetti ha il proprio "
+"ciclo di vita e modello di thread di cui bisogna (pre)occuparsi."
+
+#. Tag: para
+#: ee.xml:82
+#, no-c-format
+msgid ""
+"Web Beans takes care of all this for us. All we need to do is declare the "
+"queue or topic in <literal>web-beans.xml</literal>, specifying an associated "
+"binding type and connection factory."
+msgstr ""
+"I Web Beans si prendono cura di tutto questo per noi. Tutto ciò che occorre "
+"fare è dichiarare la coda od il topic in <literal>web-beans.xml</literal>, "
+"specificando un "
+
+#. Tag: programlisting
+#: ee.xml:86
+#, no-c-format
+msgid ""
+"<![CDATA[<Queue>\n"
+"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
+"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:OrderProcessor/>    \n"
+"</Queue>]]>"
+msgstr ""
+"<![CDATA[<Queue>\n"
+"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
+"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:OrderProcessor/>    \n"
+"</Queue>]]>"
+
+#. Tag: programlisting
+#: ee.xml:88
+#, no-c-format
+msgid ""
+"<![CDATA[<Topic>\n"
+"    <destination>java:comp/env/jms/StockPrices</destination>\n"
+"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:StockPrices/>    \n"
+"</Topic>]]>"
+msgstr ""
+"<![CDATA[<Topic>\n"
+"    <destination>java:comp/env/jms/StockPrices</destination>\n"
+"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:StockPrices/>    \n"
+"</Topic>]]>"
+
+#. Tag: para
+#: ee.xml:90
+#, no-c-format
+msgid ""
+"Now we can just inject the <literal>Queue</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> or "
+"<literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, "
+"<literal>TopicConnection</literal>, <literal>TopicSession</literal> or "
+"<literal>TopicPublisher</literal> for a topic."
+msgstr ""
+"Ora è possibile iniettare <literal>Queue</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> o "
+"<literal>QueueSender</literal> per una coda, oppure <literal>Topic</"
+"literal>, <literal>TopicConnection</literal>, <literal>TopicSession</"
+"literal> o <literal>TopicPublisher</literal> per un topic."
+
+#. Tag: programlisting
+#: ee.xml:96
+#, no-c-format
+msgid ""
+"@OrderProcessor QueueSender orderSender;\n"
+"@OrderProcessor QueueSession orderSession;\n"
+"\n"
+"public void sendMessage() {\n"
+"    MapMessage msg = orderSession.createMapMessage();\n"
+"    ...\n"
+"    orderSender.send(msg);\n"
+"}"
+msgstr ""
+"@OrderProcessor QueueSender orderSender;\n"
+"@OrderProcessor QueueSession orderSession;\n"
+"\n"
+"public void sendMessage() {\n"
+"    MapMessage msg = orderSession.createMapMessage();\n"
+"    ...\n"
+"    orderSender.send(msg);\n"
+"}"
+
+#. Tag: programlisting
+#: ee.xml:98
+#, no-c-format
+msgid ""
+"@StockPrices TopicPublisher pricePublisher;\n"
+"@StockPrices TopicSession priceSession;\n"
+"\n"
+"public void sendMessage(String price) {\n"
+"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
+"}"
+msgstr ""
+"@StockPrices TopicPublisher pricePublisher;\n"
+"@StockPrices TopicSession priceSession;\n"
+"\n"
+"public void sendMessage(String price) {\n"
+"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
+"}"
+
+#. Tag: para
+#: ee.xml:100
+#, fuzzy, no-c-format
+msgid ""
+"The lifecycle of the injected JMS objects is completely controlled by the "
+"Web Bean manager."
+msgstr ""
+"Il ciclo di vita degli oggetti JMS iniettati è interamente controllato dal "
+"manager Web Bean."
+
+#. Tag: title
+#: ee.xml:106
+#, no-c-format
+msgid "Packaging and deployment"
+msgstr "Packaging and deployment"
+
+#. Tag: para
+#: ee.xml:108
+#, no-c-format
+msgid ""
+"Web Beans doesn't define any special deployment archive. You can package Web "
+"Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the "
+"application classpath. However, each archive that contains Web Beans must "
+"include a file named <literal>web-beans.xml</literal> in the <literal>META-"
+"INF</literal> or <literal>WEB-INF</literal> directory. The file may be "
+"empty. Web Beans deployed in archives that do not have a <literal>web-beans."
+"xml</literal> file will not be available for use in the application."
+msgstr ""
+"Web Beans non definisce nessuno archivio speciale per il deploy. Si può "
+"impacchettare i Web Beans in JAR, EJB-JAR o WAR&#151;qualsiasi locazione di "
+"deploy nel classpath dell'applicazione. Comunque ciascun archivio che "
+"contiene Web Beans devi includere un file chiamato <literal>web-beans.xml</"
+"literal> nella directory <literal>META-INF</literal> o <literal>WEB-INF</"
+"literal>. Il file può essere vuoto. I Web Beans collocati negli archivi che "
+"non hanno un file <literal>web-beans.xml</literal> non saranno disponibili "
+"per l'uso nell'applicazione."
+
+#. Tag: para
+#: ee.xml:116
+#, no-c-format
+msgid ""
+"For Java SE execution, Web Beans may be deployed in any location in which "
+"EJBs may be deployed for execution by the embeddable EJB Lite container. "
+"Again, each location must contain a <literal>web-beans.xml</literal> file."
+msgstr ""
+"Per l'esecuzione in Java SE, Web Beans può essere deployato in un qualsiasi "
+"posto nel quale gli EJB siano stati messi per essere eseguito da un "
+"embeddable EJB Lite container.  Di nuovo ogni locazioni deve contenere un "
+"file <literal>web-beans.xml</literal>."


Property changes on: doc/trunk/reference/it-IT/ee.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/events.po (from rev 726, doc/trunk/reference/it-IT/modules/events.po)
===================================================================
--- doc/trunk/reference/it-IT/events.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/events.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,593 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-25 13:41+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: events.xml:4
+#, no-c-format
+msgid "Events"
+msgstr "Eventi"
+
+#. Tag: para
+#: events.xml:6
+#, no-c-format
+msgid "The Web Beans event notification facility allows Web Beans to interact in a totally decoupled manner. Event <emphasis>producers</emphasis> raise events that are then delivered to event <emphasis>observers</emphasis> by the Web Bean manager. This basic schema might sound like the familiar observer/observable pattern, but there are a couple of twists:"
+msgstr "Il sistema di notifica a eventi di Web Beans consente a Web Beans di interagire in maniera totalmente disaccoppiata. I <emphasis>produttori</emphasis> di eventi sollevano eventi che vengono consegnati agli <emphasis>osservatori</emphasis> di eventi tramite il manager Web Bean. Lo schema base può suonare simile al familiare pattern observer/observable, ma ci sono un paio di differenze:"
+
+#. Tag: para
+#: events.xml:14
+#, no-c-format
+msgid "not only are event producers decoupled from observers; observers are completely decoupled from producers,"
+msgstr "non solo i produttori di eventi sono disaccoppiati dagli osservatori; gli osservatori sono completamente disaccoppiati dai produttori,"
+
+#. Tag: para
+#: events.xml:18
+#, no-c-format
+msgid "observers can specify a combination of \"selectors\" to narrow the set of event notifications they will receive, and"
+msgstr "gli osservatori possono specificare una combinazione di \"selettori\" per restringere il set di notifiche di eventi da ricevere, e"
+
+#. Tag: para
+#: events.xml:22
+#, no-c-format
+msgid "observers can be notified immediately, or can specify that delivery of the event should be delayed until the end of the current transaction"
+msgstr "gli osservatori possono essere notificati immediatamente, o possono specificare che la consegna degli eventi venga ritardata fino alla fine della transazione conrrente"
+
+#. Tag: title
+#: events.xml:28
+#, no-c-format
+msgid "Event observers"
+msgstr "Osservatori di eventi"
+
+#. Tag: para
+#: events.xml:30
+#, no-c-format
+msgid "An <emphasis>observer method</emphasis> is a method of a Web Bean with a parameter annotated <literal>@Observes</literal>."
+msgstr "Un <emphasis>metodo osservatore</emphasis> è un metodo di un Web Bean con un parametro annotato <literal>@Observes</literal>."
+
+#. Tag: programlisting
+#: events.xml:33
+#, no-c-format
+msgid "<![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }]]>"
+msgstr "<![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }]]>"
+
+#. Tag: para
+#: events.xml:35
+#, no-c-format
+msgid "The annotated parameter is called the <emphasis>event parameter</emphasis>. The type of the event parameter is the observed <emphasis>event type</emphasis>. Observer methods may also specify \"selectors\", which are just instances of Web Beans binding types. When a binding type is used as an event selector, it is called an <emphasis>event binding type</emphasis>."
+msgstr "Il parametro annotato viene chiamato <emphasis>parametro evento</emphasis>. Il tipo di parametro evento è il <emphasis>tipo evento</emphasis> osservato. I metodi osservatori possono anche specificare dei \"selettori\", che sono solo istanze di tipi di binding di Web Beans. Quando un tipo di binding viene usato come selettore di eventi viene chiamato <emphasis>tipo binding di evento</emphasis>. "
+
+#. Tag: programlisting
+#: events.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Updated { ... }]]>"
+msgstr ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Updated { ... }]]>"
+
+#. Tag: para
+#: events.xml:43
+#, no-c-format
+msgid "We specify the event bindings of the observer method by annotating the event parameter:"
+msgstr "Specifichiamo i binding di evento del metodo osservatore annotando il parametro evento:"
+
+#. Tag: programlisting
+#: events.xml:46
+#: events.xml:190
+#, no-c-format
+msgid "<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document) { ... }]]>"
+msgstr "<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document) { ... }]]>"
+
+#. Tag: para
+#: events.xml:48
+#, no-c-format
+msgid "An observer method need not specify any event bindings&#151;in this case it is interested in <emphasis>all</emphasis> events of a particular type. If it does specify event bindings, it is only interested in events which also have those event bindings."
+msgstr "Un metodo osservatore non ha bisogno di specificare alcun binding di evento&#151;in questo caso è interessato a <emphasis>tutti</emphasis> gli eventi di un particolare tipo. Se specifica dei binding di evento, è solamente interessato agli eventi che hanno anche gli stessi binding di evento."
+
+#. Tag: para
+#: events.xml:53
+#, no-c-format
+msgid "The observer method may have additional parameters, which are injected according to the usual Web Beans method parameter injection semantics:"
+msgstr "Il metodo osservatore può avere parametri addizionali che vengono iniettati secondo la solita semantica di iniezione del parametro del metodo Web Beans."
+
+#. Tag: programlisting
+#: events.xml:56
+#, no-c-format
+msgid "<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document, User user) { ... }]]>"
+msgstr "<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document, User user) { ... }]]>"
+
+#. Tag: title
+#: events.xml:61
+#, no-c-format
+msgid "Event producers"
+msgstr "Produttori di eventi"
+
+#. Tag: para
+#: events.xml:63
+#, no-c-format
+msgid "The event producer may obtain an <emphasis>event notifier</emphasis> object by injection:"
+msgstr "Il produttore dell'evento può ottenere tramite iniezione un oggetto <emphasis>notificatore d'evento</emphasis>:"
+
+#. Tag: programlisting
+#: events.xml:66
+#, no-c-format
+msgid "<![CDATA[@Observable Event<Document> documentEvent]]>"
+msgstr "<![CDATA[@Observable Event<Document> documentEvent]]>"
+
+#. Tag: para
+#: events.xml:68
+#, no-c-format
+msgid "The <literal>@Observable</literal> annotation implicitly defines a Web Bean with scope <literal>@Dependent</literal> and deployment type <literal>@Standard</literal>, with an implementation provided by the Web Bean manager."
+msgstr "L'annotazione <literal>@Observable</literal> definisce implicitamente un Web Bean con scope <literal>@Dependent</literal> e tipo di deploy <literal>@Standard</literal>, con un'implementazione fornita dal manager Web Bean."
+
+#. Tag: para
+#: events.xml:72
+#, no-c-format
+msgid "A producer raises events by calling the <literal>fire()</literal> method of the <literal>Event</literal> interface, passing an <emphasis>event object</emphasis>:"
+msgstr "Un produttore solleva eventi chiamando il metodo <literal>fire()</literal> dell'intefaccia <literal>Event</literal>, passando un <emphasis>oggetto evento</emphasis>:"
+
+#. Tag: programlisting
+#: events.xml:75
+#, no-c-format
+msgid "<![CDATA[documentEvent.fire(document);]]>"
+msgstr "<![CDATA[documentEvent.fire(document);]]>"
+
+#. Tag: para
+#: events.xml:77
+#, no-c-format
+msgid "An event object may be an instance of any Java class that has no type variables or wildcard type parameters. The event will be delivered to every observer method that:"
+msgstr "Un oggetto evento può essere un'istanza di una classe Java che non ha variabili tipo o parametri tipo wildcard. L'evento verrà consegnato ad ogni metodo osservatore che:"
+
+#. Tag: para
+#: events.xml:83
+#: events.xml:107
+#: events.xml:126
+#, no-c-format
+msgid "has an event parameter to which the event object is assignable, and"
+msgstr "ha un parametro evento a cui l'oggetto evento è assegnabile, e"
+
+#. Tag: para
+#: events.xml:86
+#, no-c-format
+msgid "specifies no event bindings."
+msgstr "non specifica binding d'evento."
+
+#. Tag: para
+#: events.xml:90
+#, no-c-format
+msgid "The Web Bean manager simply calls all the observer methods, passing the event object as the value of the event parameter. If any observer method throws an exception, the Web Bean manager stops calling observer methods, and the exception is rethrown by the <literal>fire()</literal> method."
+msgstr "Il manager Web Bean chiama semplicemente tutti i metodi osservatori, passando l'oggento evento come valore del parametro evento. Se il metodo osservatore lancia un'eccezione, il manager Web Bean smette di chiamare i metodi osservatori, e l'eccezione viene rilanciata dal metodo <literal>fire()</literal>."
+
+#. Tag: para
+#: events.xml:95
+#, no-c-format
+msgid "To specify a \"selector\", the event producer may pass an instance of the event binding type to the <literal>fire()</literal> method:"
+msgstr "Per specificare un \"selettore\" il produttore d'evento può passare un'istanza del tipo di binding d'evento al metodo <literal>fire()</literal>:"
+
+#. Tag: programlisting
+#: events.xml:98
+#, no-c-format
+msgid "<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>(){} );]]>"
+msgstr "<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>(){} );]]>"
+
+#. Tag: para
+#: events.xml:100
+#, no-c-format
+msgid "The helper class <literal>AnnotationLiteral</literal> makes it possible to instantiate binding types inline, since this is otherwise difficult to do in Java."
+msgstr "La classe helper <literal>AnnotationLiteral</literal> rende possibile istanziare inline i tipi di binding, dato che questo risulta difficile da fare in Java."
+
+#. Tag: para
+#: events.xml:103
+#, no-c-format
+msgid "The event will be delivered to every observer method that:"
+msgstr "L'evento verrà consegnato ad ogni metodo osservatore che:"
+
+#. Tag: para
+#: events.xml:110
+#, no-c-format
+msgid "does not specify any event binding <emphasis>except</emphasis> for the event bindings passed to <literal>fire()</literal>."
+msgstr "non specifica alcun event binding <emphasis>tranne</emphasis> per gli event binding passati a <literal>fire()</literal>."
+
+#. Tag: para
+#: events.xml:115
+#, no-c-format
+msgid "Alternatively, event bindings may be specified by annotating the event notifier injection point:"
+msgstr "In alternativa gli event binding possono essere specificati annotando il punto di iniezione del notificato d'evento:"
+
+#. Tag: programlisting
+#: events.xml:118
+#, no-c-format
+msgid "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
+msgstr "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
+
+#. Tag: para
+#: events.xml:120
+#, no-c-format
+msgid "Then every event fired via this instance of <literal>Event</literal> has the annotated event binding. The event will be delivered to every observer method that:"
+msgstr "Quindi ciascun evento sollevato tramite quest'istanza di <literal>Event</literal> ha annotato l'event binding. L'evento verrà consegnato ad ogni metodo osservatore che:"
+
+# la frase è ambigua...."or the annotated..."  si lega a "to" o a "except" ??
+#. Tag: para
+#: events.xml:129
+#, no-c-format
+msgid "does not specify any event binding <emphasis>except</emphasis> for the event bindings passed to <literal>fire()</literal> or the annotated event bindings of the event notifier injection point."
+msgstr "non specifica alcun event binding <emphasis>tranne</emphasis> per gli event binding passati a <literal>fire()</literal> o per gli event binding annotati del punto di iniezione del notificatore eventi."
+
+#. Tag: title
+#: events.xml:138
+#, no-c-format
+msgid "Registering observers dynamically"
+msgstr "Registrare dinamicamente gli osservatori"
+
+#. Tag: para
+#: events.xml:140
+#, no-c-format
+msgid "It's often useful to register an event observer dynamically. The application may implement the <literal>Observer</literal> interface and register an instance with an event notifier by calling the <literal>observe()</literal> method."
+msgstr "E' spesso utile registrare un osservatore d'evento in modo dinamico. L'applicazione può implementare l'interfaccia <literal>Observer</literal> e registrare un'istanza con un notificatore d'evento chiamando il metodo <literal>observe()</literal>."
+
+#. Tag: programlisting
+#: events.xml:144
+#, no-c-format
+msgid "<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } } );]]>"
+msgstr "<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } } );]]>"
+
+#. Tag: para
+#: events.xml:146
+#, no-c-format
+msgid "Event binding types may be specified by the event notifier injection point or by passing event binding type instances to the <literal>observe()</literal> method:"
+msgstr "I tipi di event binding possono essere specificati dal punto di iniezione del notificatore d'eventi o passando istance del tipo di event binding al metodo <literal>observe()</literal>:"
+
+#. Tag: programlisting
+#: events.xml:149
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } }, \n"
+"                                                new AnnotationLiteral<Updated>(){} );]]>"
+msgstr ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } }, \n"
+"                                                new AnnotationLiteral<Updated>(){} );]]>"
+
+#. Tag: title
+#: events.xml:154
+#, no-c-format
+msgid "Event bindings with members"
+msgstr "Event binding con membri"
+
+#. Tag: para
+#: events.xml:156
+#, no-c-format
+msgid "An event binding type may have annotation members:"
+msgstr "Un tipo di event binding può avere membri annotati:"
+
+#. Tag: programlisting
+#: events.xml:158
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Role {\n"
+"    RoleType value();\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Role {\n"
+"    RoleType value();\n"
+"}]]>"
+
+#. Tag: para
+#: events.xml:160
+#, no-c-format
+msgid "The member value is used to narrow the messages delivered to the observer:"
+msgstr "Il valore del membro è usato per restringere i messaggi consegnati all'osservatore:"
+
+#. Tag: programlisting
+#: events.xml:162
+#, no-c-format
+msgid "<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) { ... }]]>"
+msgstr "<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) { ... }]]>"
+
+#. Tag: para
+#: events.xml:164
+#, no-c-format
+msgid "Event binding type members may be specified statically by the event producer, via annotations at the event notifier injection point:"
+msgstr "I membri del tipo di eventbinding possono essere specificati staticamente dal produttore di eventi tramite annotazioni nel punto di iniezione del notificatore d'evento:"
+
+#. Tag: programlisting
+#: events.xml:167
+#, no-c-format
+msgid "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
+msgstr "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
+
+#. Tag: para
+#: events.xml:169
+#, no-c-format
+msgid "Alternatively, the value of the event binding type member may be determined dynamically by the event producer. We start by writing an abstract subclass of <literal>AnnotationLiteral</literal>:"
+msgstr "Alternativamente il valore del membro del tipo di event binding può esserre dinamicamente determinato dal produttore di eventi. Iniziamo scrivendo una sottoclasse astratta di <literal>AnnotationLiteral</literal>:"
+
+#. Tag: programlisting
+#: events.xml:172
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class RoleBinding \n"
+"    extends AnnotationLiteral<Role> \n"
+"    implements Role {}]]>"
+msgstr ""
+"<![CDATA[abstract class RoleBinding \n"
+"    extends AnnotationLiteral<Role> \n"
+"    implements Role {}]]>"
+
+#. Tag: para
+#: events.xml:174
+#, no-c-format
+msgid "The event producer passes an instance of this class to <literal>fire()</literal>:"
+msgstr "Il produttore di eventi passa un'istanza di questa classe a <literal>fire()</literal>:"
+
+#. Tag: programlisting
+#: events.xml:176
+#, no-c-format
+msgid "<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value() { return user.getRole(); } } );]]>"
+msgstr "<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value() { return user.getRole(); } } );]]>"
+
+#. Tag: title
+#: events.xml:181
+#, no-c-format
+msgid "Multiple event bindings"
+msgstr "Event binding multipli"
+
+#. Tag: para
+#: events.xml:183
+#, no-c-format
+msgid "Event binding types may be combined, for example:"
+msgstr "I tipi di event binding possono essere combinati, per esempio:"
+
+#. Tag: programlisting
+#: events.xml:185
+#, no-c-format
+msgid ""
+"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
+"...\n"
+"if (document.isBlog()) blogEvent.fire(document, new AnnotationLiteral<Updated>(){});]]>"
+msgstr ""
+"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
+"...\n"
+"if (document.isBlog()) blogEvent.fire(document, new AnnotationLiteral<Updated>(){});]]>"
+
+#. Tag: para
+#: events.xml:187
+#, no-c-format
+msgid "When this event occurs, all of the following observer methods will be notified:"
+msgstr "Quando si genera un evento, tutti i seguenti metodi osservatori verranno notificati:"
+
+#. Tag: programlisting
+#: events.xml:189
+#, no-c-format
+msgid "<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document document) { ... }]]>"
+msgstr "<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document document) { ... }]]>"
+
+#. Tag: programlisting
+#: events.xml:191
+#, no-c-format
+msgid "<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) { ... }]]>"
+msgstr "<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) { ... }]]>"
+
+#. Tag: programlisting
+#: events.xml:192
+#, no-c-format
+msgid "<![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }}}]]>"
+msgstr "<![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }}}]]>"
+
+#. Tag: title
+#: events.xml:197
+#, no-c-format
+msgid "Transactional observers"
+msgstr "Osservatori transazionali"
+
+#. Tag: para
+#: events.xml:199
+#, no-c-format
+msgid "Transactional observers receive their event notifications during the before or after completion phase of the transaction in which the event was raised. For example, the following observer method needs to refresh a query result set that is cached in the application context, but only when transactions that update the <literal>Category</literal> tree succeed:"
+msgstr "Gli osservatori transazionali ricevono notifiche d'evento prima o dopo la fase di completamento della transazione, nella quale l'evento viene sollevato. Per esempio, il seguente metodo osservatore ha bisogno di aggiornare il set di risultati della query memorizzato nel contesto dell'applicazione, ma solo quando hanno successo le transazioni che aggiornano l'albero <literal>Category</literal>."
+
+#. Tag: programlisting
+#: events.xml:205
+#, no-c-format
+msgid "<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes CategoryUpdateEvent event) { ... }]]>"
+msgstr "<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes CategoryUpdateEvent event) { ... }]]>"
+
+#. Tag: para
+#: events.xml:207
+#, no-c-format
+msgid "There are three kinds of transactional observers:"
+msgstr "Ci sono tre tipi di osservatori transazionali:"
+
+#. Tag: para
+#: events.xml:211
+#, no-c-format
+msgid "<literal>@AfterTransactionSuccess</literal> observers are called during the after completion phase of the transaction, but only if the transaction completes successfully"
+msgstr "gli osservatori <literal>@AfterTransactionSuccess</literal> vengono chiamati dopo la fase di completamento della transazione, ma solo se questa si completa con successo"
+
+#. Tag: para
+#: events.xml:216
+#, no-c-format
+msgid "<literal>@AfterTransactionFailure</literal> observers are called during the after completion phase of the transaction, but only if the transaction fails to complete successfully"
+msgstr "gli osservatori <literal>@AfterTransactionFailure</literal> vengono chiamati dopo la fase di completamento della transazione, ma solo se questa fallisce e quindi non completa con successo"
+
+#. Tag: para
+#: events.xml:221
+#, no-c-format
+msgid "<literal>@AfterTransactionCompletion</literal> observers are called during the after completion phase of the transaction"
+msgstr "gli osservatori <literal>@AfterTransactionCompletion</literal> vengono chiamati dopo la fase di completamento della transazione"
+
+#. Tag: para
+#: events.xml:225
+#, no-c-format
+msgid "<literal>@BeforeTransactionCompletion</literal> observers are called during the before completion phase of the transaction"
+msgstr "gli osservatori <literal>@BeforeTransactionCompletion</literal> vengono chiamati prima della fase di completamento della transazione"
+
+#. Tag: para
+#: events.xml:230
+#, no-c-format
+msgid "Transactional observers are very important in a stateful object model like Web Beans, because state is often held for longer than a single atomic transaction."
+msgstr "Gli osservatori transazionali sono molto importanti in un modello ad oggetto stateful come Web Beans, poiché lo stato è spesso mantenuto per un tempo più lungo di una singola transazione atomica."
+
+#. Tag: para
+#: events.xml:233
+#, no-c-format
+msgid "Imagine that we have cached a JPA query result set in the application scope:"
+msgstr "Si immagini di avere cachato un risultato di query JPA nello scope di applicazione:"
+
+#. Tag: programlisting
+#: events.xml:235
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    List<Product> products;\n"
+"\n"
+"    @Produces @Catalog \n"
+"    List<Product> getCatalog() {\n"
+"        if (products==null) {\n"
+"            products = em.createQuery(\"select p from Product p where p.deleted = false\")\n"
+"                .getResultList();\n"
+"        }\n"
+"        return products;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    List<Product> products;\n"
+"\n"
+"    @Produces @Catalog \n"
+"    List<Product> getCatalog() {\n"
+"        if (products==null) {\n"
+"            products = em.createQuery(\"select p from Product p where p.deleted = false\")\n"
+"                .getResultList();\n"
+"        }\n"
+"        return products;\n"
+"    }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: events.xml:237
+#, no-c-format
+msgid "From time to time, a <literal>Product</literal> is created or deleted. When this occurs, we need to refresh the <literal>Product</literal> catalog. But we should wait until <emphasis>after</emphasis> the transaction completes successfully before performing this refresh!"
+msgstr "Di tanto in tanto un <literal>Product</literal> viene creato o cancellato. Quando questo avviene occorre aggiornare il catalogo del <literal>Product</literal>. Ma si dovrebbe aspettare che la transazione  <emphasis>abbia completato</emphasis> con successo prima di eseguire l'aggiornamento!"
+
+#. Tag: para
+#: events.xml:242
+#, no-c-format
+msgid "The Web Bean that creates and deletes <literal>Product</literal>s could raise events, for example:"
+msgstr "Il Web Bean che crea o cancella <literal>Product</literal> può sollevare eventi, per esempio:"
+
+#. Tag: programlisting
+#: events.xml:245
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class ProductManager {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    @Observable Event<Product> productEvent;\n"
+"\n"
+"    public void delete(Product product) {\n"
+"        em.delete(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
+"    }\n"
+"    \n"
+"    public void persist(Product product) {\n"
+"        em.persist(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Stateless\n"
+"public class ProductManager {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    @Observable Event<Product> productEvent;\n"
+"\n"
+"    public void delete(Product product) {\n"
+"        em.delete(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
+"    }\n"
+"    \n"
+"    public void persist(Product product) {\n"
+"        em.persist(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: events.xml:247
+#, no-c-format
+msgid "And now <literal>Catalog</literal> can observe the events after successful completion of the transaction:"
+msgstr "E ora <literal>Catalog</literal> può osservare gli eventi dopo il completamento (con successo) della transazione:"
+
+#. Tag: programlisting
+#: events.xml:250
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Created Product product) {\n"
+"        products.add(product);\n"
+"    }\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product product) {\n"
+"        products.remove(product);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Created Product product) {\n"
+"        products.add(product);\n"
+"    }\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product product) {\n"
+"        products.remove(product);\n"
+"    }\n"
+"    \n"
+"}]]>"
+


Property changes on: doc/trunk/reference/it-IT/events.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/it-IT/example.mo
===================================================================
(Binary files differ)


Property changes on: doc/trunk/reference/it-IT/example.mo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: doc/trunk/reference/it-IT/example.po (from rev 638, doc/trunk/reference/it-IT/modules/example.po)
===================================================================
--- doc/trunk/reference/it-IT/example.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/example.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,235 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-05 00:25+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example.xml:4
+#, no-c-format
+msgid "JSF web application example"
+msgstr "Esempio di applicazione web JSF"
+
+#. Tag: para
+#: example.xml:6
+#, no-c-format
+msgid "Let's illustrate these ideas with a full example. We're going to implement user login/logout for an application that uses JSF. First, we'll define a Web Bean to hold the username and password entered during login:"
+msgstr "Illustriamo queste idee con un esempio completo. Implementiamo il login/logout dell'utente per un'applicazione che utilizza JSF. Innanzitutto definiamo un Web Bean che mantenga username e password digitati durante il login:"
+
+#. Tag: programlisting
+#: example.xml:11
+#, no-c-format
+msgid ""
+"<![CDATA[@Named @RequestScoped\n"
+"public class Credentials {\n"
+"        \n"
+"    private String username;\n"
+"    private String password;\n"
+"    \n"
+"    public String getUsername() { return username; }\n"
+"    public void setUsername(String username) { this.username = username; }\n"
+"    \n"
+"    public String getPassword() { return password; }\n"
+"    public void setPassword(String password) { this.password = password; }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Named @RequestScoped\n"
+"public class Credentials {\n"
+"        \n"
+"    private String username;\n"
+"    private String password;\n"
+"    \n"
+"    public String getUsername() { return username; }\n"
+"    public void setUsername(String username) { this.username = username; }\n"
+"    \n"
+"    public String getPassword() { return password; }\n"
+"    public void setPassword(String password) { this.password = password; }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: example.xml:13
+#, no-c-format
+msgid "This Web Bean is bound to the login prompt in the following JSF form:"
+msgstr "Questo Web Bean è associato al login all'interno della seguente form JSF:"
+
+#. Tag: programlisting
+#: example.xml:15
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form>\n"
+"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
+"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
+"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
+"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
+"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
+"    </h:panelGrid>\n"
+"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!login.loggedIn}\"/>\n"
+"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#{login.loggedIn}\"/>\n"
+"</h:form>]]>"
+msgstr ""
+"<![CDATA[<h:form>\n"
+"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
+"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
+"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
+"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
+"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
+"    </h:panelGrid>\n"
+"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!login.loggedIn}\"/>\n"
+"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#{login.loggedIn}\"/>\n"
+"</h:form>]]>"
+
+#. Tag: para
+#: example.xml:17
+#, no-c-format
+msgid "The actual work is done by a session scoped Web Bean that maintains information about the currently logged-in user and exposes the <literal>User</literal> entity to other Web Beans:"
+msgstr "Il vero lavoro è fatto da un Web Bean con scope di sessione che mantiene le informazioni sull'utente correntemente loggato ed espone l'entity <literal>User</literal> agli altri Web Beans:"
+
+#. Tag: programlisting
+#: example.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"\n"
+"    private User user;\n"
+"    \n"
+"    public void login() {\n"
+"            \n"
+"        List<User> results = userDatabase.createQuery(\n"
+"           \"select u from User u where u.username=:username and u.password=:password\")\n"
+"           .setParameter(\"username\", credentials.getUsername())\n"
+"           .setParameter(\"password\", credentials.getPassword())\n"
+"           .getResultList();\n"
+"        \n"
+"        if ( !results.isEmpty() ) {\n"
+"           user = results.get(0);\n"
+"        }\n"
+"        \n"
+"    }\n"
+"    \n"
+"    public void logout() {\n"
+"        user = null;\n"
+"    }\n"
+"    \n"
+"    public boolean isLoggedIn() {\n"
+"       return user!=null;\n"
+"    }\n"
+"    \n"
+"    @Produces @LoggedIn User getCurrentUser() {\n"
+"        return user;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"\n"
+"    private User user;\n"
+"    \n"
+"    public void login() {\n"
+"            \n"
+"        List<User> results = userDatabase.createQuery(\n"
+"           \"select u from User u where u.username=:username and u.password=:password\")\n"
+"           .setParameter(\"username\", credentials.getUsername())\n"
+"           .setParameter(\"password\", credentials.getPassword())\n"
+"           .getResultList();\n"
+"        \n"
+"        if ( !results.isEmpty() ) {\n"
+"           user = results.get(0);\n"
+"        }\n"
+"        \n"
+"    }\n"
+"    \n"
+"    public void logout() {\n"
+"        user = null;\n"
+"    }\n"
+"    \n"
+"    public boolean isLoggedIn() {\n"
+"       return user!=null;\n"
+"    }\n"
+"    \n"
+"    @Produces @LoggedIn User getCurrentUser() {\n"
+"        return user;\n"
+"    }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: example.xml:23
+#, no-c-format
+msgid "Of course, <literal>@LoggedIn</literal> is a binding annotation:"
+msgstr "<literal>@LoggedIn</literal> è un'annotazione di binding:"
+
+#. Tag: programlisting
+#: example.xml:25
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD})\n"
+"@BindingType\n"
+"public @interface LoggedIn {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD})\n"
+"@BindingType\n"
+"public @interface LoggedIn {}]]>"
+
+#. Tag: para
+#: example.xml:27
+#, no-c-format
+msgid "Now, any other Web Bean can easily inject the current user:"
+msgstr "Ora qualsiasi altro Web Bean può facilmente iniettare l'utente corrente:"
+
+#. Tag: programlisting
+#: example.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class DocumentEditor {\n"
+"\n"
+"    @Current Document document;\n"
+"    @LoggedIn User currentUser;\n"
+"    @PersistenceContext EntityManager docDatabase;\n"
+"    \n"
+"    public void save() {\n"
+"        document.setCreatedBy(currentUser);\n"
+"        docDatabase.persist(document);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class DocumentEditor {\n"
+"\n"
+"    @Current Document document;\n"
+"    @LoggedIn User currentUser;\n"
+"    @PersistenceContext EntityManager docDatabase;\n"
+"    \n"
+"    public void save() {\n"
+"        document.setCreatedBy(currentUser);\n"
+"        docDatabase.persist(document);\n"
+"    }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: example.xml:31
+#, no-c-format
+msgid "Hopefully, this example gives a flavor of the Web Bean programming model. In the next chapter, we'll explore Web Beans dependency injection in greater depth."
+msgstr "Quest'esempio è un assaggio del modello di programmazione con Web Bean. Nel prossimo capitolo esploreremo la dependency injection dei Web Bean con maggior profondità."
+


Property changes on: doc/trunk/reference/it-IT/example.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/extend.po (from rev 638, doc/trunk/reference/it-IT/modules/extend.po)
===================================================================
--- doc/trunk/reference/it-IT/extend.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/extend.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,307 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-20 16:41+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: extend.xml:4
+#, no-c-format
+msgid "Extending Web Beans"
+msgstr "Estendere i Web Beans"
+
+#. Tag: para
+#: extend.xml:6
+#, no-c-format
+msgid "Web Beans is intended to be a platform for frameworks, extensions and integration with other technologies. Therefore, Web Beans exposes a set of SPIs for the use of developers of portable extensions to Web Beans. For example, the following kinds of extensions were envisaged by the designers of Web Beans:"
+msgstr "Web Beans è inteso essere una piattaforma per framework, estensioni e integrazione con altre tecnologie. Quindi Web Beans espone un set di SPI (Service Provider Interface) per l'uso da parte degli sviluppatori di estensioni portabili a Web Beans. Per esempio, i seguentitipi di estensione sono state prese in considerazione dai progettisti di Web Beans:"
+
+#. Tag: para
+#: extend.xml:14
+#, no-c-format
+msgid "integration with Business Process Management engines,"
+msgstr "Integrazione con i motori di Gestione dei Processi di Business,"
+
+#. Tag: para
+#: extend.xml:17
+#, no-c-format
+msgid "integration with third-party frameworks such as Spring, Seam, GWT or Wicket, and"
+msgstr "integrazione con framework di terze-parti quali Spring, Seam, GWT o Wicket, e"
+
+#. Tag: para
+#: extend.xml:21
+#, no-c-format
+msgid "new technology based upon the Web Beans programming model."
+msgstr "nuova tecnologia basata sul modello di programmazione di Web Beans."
+
+#. Tag: para
+#: extend.xml:25
+#, no-c-format
+msgid "The nerve center for extending Web Beans is the <literal>Manager</literal> object."
+msgstr "Il nervo centrale per l'estensione di Web Beans è l'oggetto <literal>Manager</literal>."
+
+#. Tag: title
+#: extend.xml:29
+#, no-c-format
+msgid "The <literal>Manager</literal> object"
+msgstr "L'oggetto <literal>Manager</literal>"
+
+#. Tag: para
+#: extend.xml:31
+#, no-c-format
+msgid "The <literal>Manager</literal> interface lets us register and obtain Web Beans, interceptors, decorators, observers and contexts programatically."
+msgstr "L'interfaccia <literal>Manager</literal> consente di registrare ed ottenere programmaticamente interceptor, decoratori, osservatori e contesti di Web Beans."
+
+#. Tag: programlisting
+#: extend.xml:34
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Manager\n"
+"{\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public Set<Bean<?>> resolveByName(String name);\n"
+"\n"
+"   public Object getInstanceByName(String name);\n"
+"\n"
+"   public <T> T getInstance(Bean<T> bean);\n"
+"\n"
+"   public void fireEvent(Object event, Annotation... bindings);\n"
+"\n"
+"   public Context getContext(Class<? extends Annotation> scopeType);\n"
+"\n"
+"   public Manager addContext(Context context);\n"
+"\n"
+"   public Manager addBean(Bean<?> bean);\n"
+"\n"
+"   public Manager addInterceptor(Interceptor interceptor);\n"
+"\n"
+"   public Manager addDecorator(Decorator decorator);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer,\n"
+"         TypeLiteral<T> eventType, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings);\n"
+"\n"
+"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
+"         Annotation... interceptorBindings);\n"
+"\n"
+"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
+"         Annotation... bindings);\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public interface Manager\n"
+"{\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public Set<Bean<?>> resolveByName(String name);\n"
+"\n"
+"   public Object getInstanceByName(String name);\n"
+"\n"
+"   public <T> T getInstance(Bean<T> bean);\n"
+"\n"
+"   public void fireEvent(Object event, Annotation... bindings);\n"
+"\n"
+"   public Context getContext(Class<? extends Annotation> scopeType);\n"
+"\n"
+"   public Manager addContext(Context context);\n"
+"\n"
+"   public Manager addBean(Bean<?> bean);\n"
+"\n"
+"   public Manager addInterceptor(Interceptor interceptor);\n"
+"\n"
+"   public Manager addDecorator(Decorator decorator);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer,\n"
+"         TypeLiteral<T> eventType, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings);\n"
+"\n"
+"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
+"         Annotation... interceptorBindings);\n"
+"\n"
+"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
+"         Annotation... bindings);\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: extend.xml:36
+#, no-c-format
+msgid "We can obtain an instance of <literal>Manager</literal> via injection:"
+msgstr "Possiamo ottenere un'istanza di <literal>Manager</literal> via iniezione:"
+
+#. Tag: programlisting
+#: extend.xml:38
+#, no-c-format
+msgid "@Current Manager manager"
+msgstr "@Current Manager manager"
+
+#. Tag: title
+#: extend.xml:43
+#, no-c-format
+msgid "The <literal>Bean</literal> class"
+msgstr "La classe <literal>Bean</literal>"
+
+#. Tag: para
+#: extend.xml:45
+#, no-c-format
+msgid "Instances of the abstract class <literal>Bean</literal> represent Web Beans. There is an instance of <literal>Bean</literal> registered with the <literal>Manager</literal> object for every Web Bean in the application."
+msgstr "Istanze della classe astratta <literal>Bean</literal> rappresentano i Web Beans. C'è un'istanza di <literal>Bean</literal> registrata con l'oggetto <literal>Manager</literal> per ogni Web Bean dell'applicazione."
+
+#. Tag: programlisting
+#: extend.xml:50
+#, no-c-format
+msgid ""
+"public abstract class Bean&lt;T&gt; {\n"
+"    \n"
+"    private final Manager manager;\n"
+"    \n"
+"    protected Bean(Manager manager) {\n"
+"        this.manager=manager;\n"
+"    }\n"
+"    \n"
+"    protected Manager getManager() {\n"
+"        return manager;\n"
+"    }\n"
+"    \n"
+"    public abstract Set&lt;Class&gt; getTypes();\n"
+"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
+"    public abstract String getName();\n"
+"    \n"
+"    public abstract boolean isSerializable();\n"
+"    public abstract boolean isNullable();\n"
+"\n"
+"    public abstract T create();\n"
+"    public abstract void destroy(T instance);\n"
+"    \n"
+"}"
+msgstr ""
+"public abstract class Bean&lt;T&gt; {\n"
+"    \n"
+"    private final Manager manager;\n"
+"    \n"
+"    protected Bean(Manager manager) {\n"
+"        this.manager=manager;\n"
+"    }\n"
+"    \n"
+"    protected Manager getManager() {\n"
+"        return manager;\n"
+"    }\n"
+"    \n"
+"    public abstract Set&lt;Class&gt; getTypes();\n"
+"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
+"    public abstract String getName();\n"
+"    \n"
+"    public abstract boolean isSerializable();\n"
+"    public abstract boolean isNullable();\n"
+"\n"
+"    public abstract T create();\n"
+"    public abstract void destroy(T instance);\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: extend.xml:52
+#, no-c-format
+msgid "It's possible to extend the <literal>Bean</literal> class and register instances by calling <literal>Manager.addBean()</literal> to provide support for new kinds of Web Beans, beyond those defined by the Web Beans specification (simple and enterprise Web Beans, producer methods and JMS endpoints). For example, we could use the <literal>Bean</literal> class to allow objects managed by another framework to be injected into Web Beans."
+msgstr "E' possibile estendere la classe <literal>Bean</literal> e registrare le istanze chiamando <literal>Manager.addBean()</literal> per fornire supporto a nuovi tipi di Web Beans, oltre a quelli definiti dalla specifica Web Beans (semplici ed enterprise, metodi produttori e endpoint JMS). Per esempio possiamo usare la classe <literal>Bean</literal> per consentire ad oggetti gestiti da altri framework di essere iniettati nei Web Beans."
+
+#. Tag: para
+#: extend.xml:60
+#, no-c-format
+msgid "There are two subclasses of <literal>Bean</literal> defined by the Web Beans specification: <literal>Interceptor</literal> and <literal>Decorator</literal>."
+msgstr "Ci sono due sottoclassi di <literal>Bean</literal> definite dalla specifica Web Beans: <literal>Interceptor</literal> e <literal>Decorator</literal>."
+
+#. Tag: title
+#: extend.xml:67
+#, no-c-format
+msgid "The <literal>Context</literal> interface"
+msgstr "L'interfaccia <literal>Context</literal>"
+
+#. Tag: para
+#: extend.xml:69
+#, no-c-format
+msgid "The <literal>Context</literal> interface supports addition of new scopes to Web Beans, or extension of the built-in scopes to new environments."
+msgstr "L'interfaccia <literal>Context</literal> supporta l'aggiunta di nuovi scope ai Web Beans, o l'estensione di scope esistenti a nuovi ambienti."
+
+#. Tag: programlisting
+#: extend.xml:72
+#, no-c-format
+msgid ""
+"public interface Context {\n"
+"    \n"
+"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    \n"
+"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
+"    \n"
+"    boolean isActive();\n"
+"    \n"
+"}"
+msgstr ""
+"public interface Context {\n"
+"    \n"
+"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    \n"
+"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
+"    \n"
+"    boolean isActive();\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: extend.xml:74
+#, no-c-format
+msgid "For example, we might implement <literal>Context</literal> to add a business process scope to Web Beans, or to add support for the conversation scope to an application that uses Wicket."
+msgstr "Per esempio possiamo implementare <literal>Context</literal> per aggiungere uno scope di tipo business process a Web Beans, o per aggiungere il supporto allo scope di conversazione ad un'applicazione che impiega Wicket."
+


Property changes on: doc/trunk/reference/it-IT/extend.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/injection.po (from rev 652, doc/trunk/reference/it-IT/modules/injection.po)
===================================================================
--- doc/trunk/reference/it-IT/injection.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/injection.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1128 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-21 14:06+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: injection.xml:4
+#, no-c-format
+msgid "Dependency injection"
+msgstr "Dependency injection"
+
+#. Tag: para
+#: injection.xml:6
+#, no-c-format
+msgid "Web Beans supports three primary mechanisms for dependency injection:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:8
+#, no-c-format
+msgid "Constructor parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:10
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private final ShoppingCart cart;\n"
+"    \n"
+"    @Initializer\n"
+"    public Checkout(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private final ShoppingCart cart;\n"
+"    \n"
+"    @Initializer\n"
+"    public Checkout(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:12
+#, no-c-format
+msgid "<emphasis>Initializer</emphasis> method parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:14
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private ShoppingCart cart;\n"
+"\n"
+"    @Initializer \n"
+"    void setShoppingCart(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private ShoppingCart cart;\n"
+"\n"
+"    @Initializer \n"
+"    void setShoppingCart(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:16
+#, no-c-format
+msgid "And direct field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:18
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"\n"
+"    private @Current ShoppingCart cart;\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class Checkout {\n"
+"\n"
+"    private @Current ShoppingCart cart;\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:20
+#, no-c-format
+msgid "Dependency injection always occurs when the Web Bean instance is first instantiated."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:25
+#, no-c-format
+msgid "First, the Web Bean manager calls the Web Bean constructor, to obtain an instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:29
+#, no-c-format
+msgid "Next, the Web Bean manager initializes the values of all injected fields of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:33
+#, no-c-format
+msgid "Next, the Web Bean manager calls all initializer methods of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:37
+#, no-c-format
+msgid "Finally, the <literal>@PostConstruct</literal> method of the Web Bean, if any, is called."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:42
+#, no-c-format
+msgid "Constructor parameter injection is not supported for EJB beans, since the EJB is instantiated by the EJB container, not the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:45
+#, no-c-format
+msgid "Parameters of constructors and initializer methods need not be explicitly annotated when the default binding type <literal>@Current</literal> applies. Injected fields, however, <emphasis>must</emphasis> specify a binding type, even when the default binding type applies. If the field does not specify a binding type, it will not be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:51
+#, no-c-format
+msgid "Producer methods also support parameter injection:"
+msgstr "I metodi produttori supportano anche l'iniezione dei parametri:"
+
+#. Tag: programlisting
+#: injection.xml:53
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
+"    return new Checkout(cart);\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
+"    return new Checkout(cart);\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:55
+#, no-c-format
+msgid "Finally, observer methods (which we'll meet in <xref linkend=\"events\"/>), disposal methods and destructor methods all support parameter injection."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:58
+#, no-c-format
+msgid "The Web Beans specification defines a procedure, called the <emphasis>typesafe resolution algorithm</emphasis>, that the Web Bean manager follows when identifying the Web Bean to inject to an injection point. This algorithm looks complex at first, but once you understand it, it's really quite intuitive. Typesafe resolution is performed at system initialization time, which means that the manager will inform the user immediately if a Web Bean's dependencies cannot be satisfied, by throwing a <literal>UnsatisfiedDependencyException</literal> or <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:67
+#, no-c-format
+msgid "The purpose of this algorithm is to allow multiple Web Beans to implement the same API type and either:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:72
+#, no-c-format
+msgid "allow the client to select which implementation it requires using <emphasis>binding annotations</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:77
+#, no-c-format
+msgid "allow the application deployer to select which implementation is appropriate for a particular deployment, without changes to the client, by enabling or disabling <emphasis>deployment types</emphasis>, or"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:82
+#, no-c-format
+msgid "allow one implementation of an API to override another implementation of the same API at deployment time, without changes to the client, using <emphasis>deployment type precedence</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:88
+#, no-c-format
+msgid "Let's explore how the Web Beans manager determines a Web Bean to be injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:91
+#, no-c-format
+msgid "Binding annotations"
+msgstr "Annotazioni di binding"
+
+#. Tag: para
+#: injection.xml:93
+#, no-c-format
+msgid "If we have more than one Web Bean that implements a particular API type, the injection point can specify exactly which Web Bean should be injected using a binding annotation. For example, there might be two implementations of <literal>PaymentProcessor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque\n"
+"public class ChequePaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@PayByCheque\n"
+"public class ChequePaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+
+#. Tag: programlisting
+#: injection.xml:100
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCreditCard\n"
+"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@PayByCreditCard\n"
+"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:102
+#, no-c-format
+msgid "Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</literal> are binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:105
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCheque {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCheque {}]]>"
+
+#. Tag: programlisting
+#: injection.xml:107
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCreditCard {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCreditCard {}]]>"
+
+#. Tag: para
+#: injection.xml:109
+#, no-c-format
+msgid "A client Web Bean developer uses the binding annotation to specify exactly which Web Bean should be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:112
+#, no-c-format
+msgid "Using field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:114
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
+"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
+"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
+
+#. Tag: para
+#: injection.xml:116
+#, no-c-format
+msgid "Using initializer method injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:118
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public void setPaymentProcessors(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                                 @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Initializer\n"
+"public void setPaymentProcessors(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                                 @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:120
+#, no-c-format
+msgid "Or using constructor injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:122
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Initializer\n"
+"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+
+#. Tag: title
+#: injection.xml:125
+#, no-c-format
+msgid "Binding annotations with members"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:127
+#, no-c-format
+msgid "Binding annotations may have members:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:129
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayBy {\n"
+"    PaymentType value();\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayBy {\n"
+"    PaymentType value();\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:131
+#, no-c-format
+msgid "In which case, the member value is significant:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:133
+#, no-c-format
+msgid ""
+"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
+"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
+"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
+
+#. Tag: para
+#: injection.xml:135
+#, no-c-format
+msgid "You can tell the Web Bean manager to ignore a member of a binding annotation type by annotating the member <literal>@NonBinding</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:141
+#, no-c-format
+msgid "Combinations of binding annnotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:143
+#, no-c-format
+msgid "An injection point may even specify multiple binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:145
+#, no-c-format
+msgid "<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
+msgstr "<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
+
+#. Tag: para
+#: injection.xml:147
+#, no-c-format
+msgid "In this case, only a Web Bean which has <emphasis>both</emphasis> binding annotations would be eligible for injection."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:153
+#, no-c-format
+msgid "Binding annotations and producer methods"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:155
+#, no-c-format
+msgid "Even producer methods may specify binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces \n"
+"@Asynchronous @PayByCheque \n"
+"PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor processor) {\n"
+"    return new AsynchronousPaymentProcessor(processor);\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"  @Target({TYPE, METHOD})\n"
+"  @DeploymentType\n"
+"  public @interface Mock {}]]>"
+
+#. Tag: title
+#: injection.xml:162
+#, no-c-format
+msgid "The default binding type"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:164
+#, no-c-format
+msgid "Web Beans defines a binding type <literal>@Current</literal> that is the default binding type for any injection point or Web Bean that does not explicitly specify a binding type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:168
+#, no-c-format
+msgid "There are two common circumstances in which it is necessary to explicitly specify <literal>@Current</literal>:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:173
+#, no-c-format
+msgid "on a field, in order to declare it as an injected field with the default binding type, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:177
+#, no-c-format
+msgid "on a Web Bean which has another binding type in addition to the default binding type."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:187
+#, no-c-format
+msgid "Deployment types"
+msgstr "Tipi di deploy"
+
+#. Tag: para
+#: injection.xml:189
+#, no-c-format
+msgid "All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment type identifies a set of Web Beans that should be conditionally installed in some deployments of the system."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:193
+#, no-c-format
+msgid "For example, we could define a deployment type named <literal>@Mock</literal>, which would identify Web Beans that should only be installed when the system executes inside an integration testing environment:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:197
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"  @Target({TYPE, METHOD})\n"
+"  @DeploymentType\n"
+"  public @interface Mock {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"  @Target({TYPE, METHOD})\n"
+"  @DeploymentType\n"
+"  public @interface Mock {}]]>"
+
+#. Tag: para
+#: injection.xml:199
+#, no-c-format
+msgid "Suppose we had some Web Bean that interacted with an external system to process payments:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:202
+#, no-c-format
+msgid ""
+"<![CDATA[public class ExternalPaymentProcessor {\n"
+"        \n"
+"    public void process(Payment p) {\n"
+"        ...\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class ExternalPaymentProcessor {\n"
+"        \n"
+"    public void process(Payment p) {\n"
+"        ...\n"
+"    }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:204
+#, no-c-format
+msgid "Since this Web Bean does not explicitly specify a deployment type, it has the default deployment type <literal>@Production</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:207
+#, no-c-format
+msgid "For integration or unit testing, the external system is slow or unavailable. So we would create a mock object:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:210
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock \n"
+"public class MockPaymentProcessor implements PaymentProcessor {\n"
+"\n"
+"    @Override\n"
+"    public void process(Payment p) {\n"
+"        p.setSuccessful(true);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Mock \n"
+"public class MockPaymentProcessor implements PaymentProcessor {\n"
+"\n"
+"    @Override\n"
+"    public void process(Payment p) {\n"
+"        p.setSuccessful(true);\n"
+"    }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:212
+#, no-c-format
+msgid "But how does the Web Bean manager determine which implementation to use in a particular deployment?"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:216
+#, no-c-format
+msgid "Enabling deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:218
+#, no-c-format
+msgid "Web Beans defines two built-in deployment types: <literal>@Production</literal> and <literal>@Standard</literal>. By default, only Web Beans with the built-in deployment types are enabled when the system is deployed. We can identify additional deployment types to be enabled in a particular deployment by listing them in <literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:224
+#, no-c-format
+msgid "Going back to our example, when we deploy our integration tests, we want all our <literal>@Mock</literal> objects to be installed:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:227
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans>\n"
+"    <Deploy>\n"
+"        <Standard/>\n"
+"        <Production/>\n"
+"        <test:Mock/>\n"
+"    </Deploy>\n"
+"</WebBeans>]]>"
+msgstr ""
+"<![CDATA[<WebBeans>\n"
+"    <Deploy>\n"
+"        <Standard/>\n"
+"        <Production/>\n"
+"        <test:Mock/>\n"
+"    </Deploy>\n"
+"</WebBeans>]]>"
+
+#. Tag: para
+#: injection.xml:229
+#, no-c-format
+msgid "Now the Web Bean manager will identify and install all Web Beans annotated <literal>@Production</literal>, <literal>@Standard</literal> or <literal>@Mock</literal> at deployment time."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:233
+#, no-c-format
+msgid "The deployment type <literal>@Standard</literal> is used only for certain special Web Beans defined by the Web Beans specification. We can't use it for our own Web Beans, and we can't disable it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:237
+#, no-c-format
+msgid "The deployment type <literal>@Production</literal> is the default deployment type for Web Beans which don't explicitly declare a deployment type, and may be disabled."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:244
+#, no-c-format
+msgid "Deployment type precedence"
+msgstr "Precedenza del tipo di deploy"
+
+#. Tag: para
+#: injection.xml:246
+#, no-c-format
+msgid "If you've been paying attention, you're probably wondering how the Web Bean manager decides which implementation&#151;<literal>ExternalPaymentProcessor</literal> or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider what happens when the manager encounters this injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:251
+#, no-c-format
+msgid "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
+msgstr "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
+
+#. Tag: para
+#: injection.xml:253
+#, no-c-format
+msgid "There are now two Web Beans which satisfy the <literal>PaymentProcessor</literal> contract. Of course, we can't use a binding annotation to disambiguate, since binding annotations are hard-coded into the source at the injection point, and we want the manager to be able to decide at deployment time!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:258
+#, no-c-format
+msgid "The solution to this problem is that each deployment type has a different <emphasis>precedence</emphasis>. The precedence of the deployment types is determined by the order in which they appear in <literal>web-beans.xml</literal>. In our example, <literal>@Mock</literal> appears later than <literal>@Production</literal> so it has a higher precedence."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:264
+#, no-c-format
+msgid "Whenever the manager discovers that more than one Web Bean could satisfy the contract (API type plus binding annotations) specified by an injection point, it considers the relative precedence of the Web Beans. If one has a higher precedence than the others, it chooses the higher precedence Web Bean to inject. So, in our example, the Web Bean manager will inject <literal>MockPaymentProcessor</literal> when executing in our integration testing environment (which is exactly what we want)."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:271
+#, no-c-format
+msgid "It's interesting to compare this facility to today's popular manager architectures. Various \"lightweight\" containers also allow conditional deployment of classes that exist in the classpath, but the classes that are to be deployed must be explicity, individually, listed in configuration code or in some XML configuration file. Web Beans does support Web Bean definition and configuration via XML, but in the common case where no complex configuration is required, deployment types allow a whole set of Web Beans to be enabled with a single line of XML. Meanwhile, a developer browsing the code can easily identify what deployment scenarios the Web Bean will be used in."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:284
+#, no-c-format
+msgid "Example deployment types"
+msgstr "Esempio dei tipi di deploy "
+
+#. Tag: para
+#: injection.xml:286
+#, no-c-format
+msgid "Deployment types are useful for all kinds of things, here's some examples:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:290
+#, no-c-format
+msgid "<literal>@Mock</literal> and <literal>@Staging</literal> deployment types for testing"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:294
+#, no-c-format
+msgid "<literal>@AustralianTaxLaw</literal> for site-specific Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:297
+#, no-c-format
+msgid "<literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party frameworks which build on Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:301
+#, no-c-format
+msgid "<literal>@Standard</literal> for standard Web Beans defined by the Web Beans specification"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:306
+#, no-c-format
+msgid "I'm sure you can think of more applications..."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:313
+#, no-c-format
+msgid "Fixing unsatisfied dependencies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:315
+#, no-c-format
+msgid "The typesafe resolution algorithm fails when, after considering the binding annotations and and deployment types of all Web Beans that implement the API type of an injection point, the Web Bean manager is unable to identify exactly one Web Bean to inject."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:320
+#, no-c-format
+msgid "It's usually easy to fix an <literal>UnsatisfiedDependencyException</literal> or <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:323
+#, no-c-format
+msgid "To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide a Web Bean which implements the API type and has the binding types of the injection point&#151;or enable the deployment type of a Web Bean that already implements the API type and has the binding types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:328
+#, no-c-format
+msgid "To fix an <literal>AmbiguousDependencyException</literal>, introduce a binding type to distinguish between the two implementations of the API type, or change the deployment type of one of the implementations so that the Web Bean manager can use deployment type precedence to choose between them. An <literal>AmbiguousDependencyException</literal> can only occur if two Web Beans share a binding type and have exactly the same deployment type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:335
+#, no-c-format
+msgid "There's one more issue you need to be aware of when using dependency injection in Web Beans."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:341
+#, no-c-format
+msgid "Client proxies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:343
+#, no-c-format
+msgid "Clients of an injected Web Bean do not usually hold a direct reference to a Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:346
+#, no-c-format
+msgid "Imagine that a Web Bean bound to the application scope held a direct reference to a Web Bean bound to the request scope. The application scoped Web Bean is shared between many different requests. However, each request should see a different instance of the request scoped Web bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:351
+#, no-c-format
+msgid "Now imagine that a Web Bean bound to the session scope held a direct reference to a Web Bean bound to the application scope. From time to time, the session context is serialized to disk in order to use memory more efficiently. However, the application scoped Web Bean instance should not be serialized along with the session scoped Web Bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:357
+#, no-c-format
+msgid "Therefore, unless a Web Bean has the default scope <literal>@Dependent</literal>, the Web Bean manager must indirect all injected references to the Web Bean through a proxy object. This <emphasis>client proxy</emphasis> is responsible for ensuring that the Web Bean instance that receives a method invocation is the instance that is associated with the current context. The client proxy also allows Web Beans bound to contexts such as the session context to be serialized to disk without recursively serializing other injected Web Beans."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:365
+#, no-c-format
+msgid "Unfortunately, due to limitations of the Java language, some Java types cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager throws an <literal>UnproxyableDependencyException</literal> if the type of an injection point cannot be proxied."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:370
+#, no-c-format
+msgid "The following Java types cannot be proxied by the Web Bean manager:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:374
+#, no-c-format
+msgid "classes which are declared <literal>final</literal> or have a <literal>final</literal> method,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:378
+#, no-c-format
+msgid "classes which have no non-private constructor with no parameters, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:381
+#, no-c-format
+msgid "arrays and primitive types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:385
+#, no-c-format
+msgid "It's usually very easy to fix an <literal>UnproxyableDependencyException</literal>. Simply add a constructor with no parameters to the injected class, introduce an interface, or change the scope of the injected Web Bean to <literal>@Dependent</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:392
+#, no-c-format
+msgid "Obtaining a Web Bean by programatic lookup"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:394
+#, no-c-format
+msgid "The application may obtain an instance of the interface <literal>Manager</literal> by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:397
+#, no-c-format
+msgid "<![CDATA[@Current Manager manager;]]>"
+msgstr "<![CDATA[@Current Manager manager;]]>"
+
+#. Tag: para
+#: injection.xml:399
+#, no-c-format
+msgid "The <literal>Manager</literal> object provides a set of methods for obtaining a Web Bean instance programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:402
+#, no-c-format
+msgid "<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class);]]>"
+msgstr "<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class);]]>"
+
+#. Tag: para
+#: injection.xml:404
+#, no-c-format
+msgid "Binding annotations may be specified by subclassing the helper class <literal>AnnotationLiteral</literal>, since it is otherwise difficult to instantiate an annotation type in Java."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:408
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, \n"
+"                                               new AnnotationLiteral<CreditCard>(){});]]>"
+msgstr ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, \n"
+"                                               new AnnotationLiteral<CreditCard>(){});]]>"
+
+#. Tag: para
+#: injection.xml:410
+#, no-c-format
+msgid "If the binding type has an annotation member, we can't use an anonymous subclass of <literal>AnnotationLiteral</literal>&#151;instead we'll need to create a named subclass:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:413
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class CreditCardBinding \n"
+"    extends AnnotationLiteral<CreditCard> \n"
+"    implements CreditCard {}]]>"
+msgstr ""
+"<![CDATA[abstract class CreditCardBinding \n"
+"    extends AnnotationLiteral<CreditCard> \n"
+"    implements CreditCard {}]]>"
+
+#. Tag: programlisting
+#: injection.xml:415
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, \n"
+"                                               new CreditCardBinding() { \n"
+"                                                   public void value() { return paymentType; } \n"
+"                                               } );]]>"
+msgstr ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, \n"
+"                                               new CreditCardBinding() { \n"
+"                                                   public void value() { return paymentType; } \n"
+"                                               } );]]>"
+
+#. Tag: title
+#: injection.xml:419
+#, no-c-format
+msgid "Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:422
+#, no-c-format
+msgid "Enterprise Web Beans support all the lifecycle callbacks defined by the EJB specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:426
+#, no-c-format
+msgid "Simple Web Beans support only the <literal>@PostConstruct</literal> and <literal>@PreDestroy</literal> callbacks."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:429
+#, no-c-format
+msgid "Both enterprise and simple Web Beans support the use of <literal>@Resource</literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal> for injection of Java EE resources, EJBs and JPA persistence contexts, respectively. Simple Web Beans do not support the use of <literal>@PersistenceContext(type=EXTENDED)</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:434
+#, no-c-format
+msgid "The <literal>@PostConstruct</literal> callback always occurs after all dependencies have been injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:440
+#, no-c-format
+msgid "The <literal>InjectionPoint</literal> object"
+msgstr "L'oggetto <literal>InjectionPoint</literal>"
+
+#. Tag: para
+#: injection.xml:442
+#, no-c-format
+msgid "There are certain kinds of dependent objects&#151;Web Beans with scope <literal>@Dependent</literal>&#151;that need to know something about the object or injection point into which they are injected in order to be able to do what they do. For example:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:448
+#, no-c-format
+msgid "The log category for a <literal>Logger</literal> depends upon the class of the object that owns it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:452
+#, no-c-format
+msgid "Injection of a HTTP parameter or header value depends upon what parameter or header name was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:456
+#, no-c-format
+msgid "Injection of the result of an EL expression evaluation depends upon the expression that was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:461
+#, no-c-format
+msgid "A Web Bean with scope <literal>@Dependent</literal> may inject an instance of <literal>InjectionPoint</literal> and access metadata relating to the injection point to which it belongs."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:465
+#, no-c-format
+msgid "Let's look at an example. The following code is verbose, and vulnerable to refactoring problems:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:468
+#, no-c-format
+msgid "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
+msgstr "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
+
+#. Tag: para
+#: injection.xml:470
+#, no-c-format
+msgid "This clever little producer method lets you inject a JDK <literal>Logger</literal> without explicitly specifying the log category:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:473
+#, no-c-format
+msgid ""
+"<![CDATA[class LogFactory {\n"
+"\n"
+"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
+"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName()); \n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[class LogFactory {\n"
+"\n"
+"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
+"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName()); \n"
+"   }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:475
+#, no-c-format
+msgid "We can now write:"
+msgstr "Ora è possibile scrivere:"
+
+#. Tag: programlisting
+#: injection.xml:477
+#, no-c-format
+msgid "<![CDATA[@Current Logger log;]]>"
+msgstr "<![CDATA[@Current Logger log;]]>"
+
+#. Tag: para
+#: injection.xml:479
+#, no-c-format
+msgid "Not convinced? Then here's a second example. To inject HTTP parameters, we need to define a binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:482
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"public @interface HttpParam {\n"
+"   @NonBinding public String value();\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@BindingType\n"
+"@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"public @interface HttpParam {\n"
+"   @NonBinding public String value();\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:484
+#, no-c-format
+msgid "We would use this binding type at injection points as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:486
+#, no-c-format
+msgid ""
+"<![CDATA[@HttpParam(\"username\") String username;\n"
+"@HttpParam(\"password\") String password;]]>"
+msgstr ""
+"<![CDATA[@HttpParam(\"username\") String username;\n"
+"@HttpParam(\"password\") String password;]]>"
+
+#. Tag: para
+#: injection.xml:488
+#, no-c-format
+msgid "The following producer method does the work:"
+msgstr "Il seguente metodo produttore esegue il lavoro:"
+
+#. Tag: programlisting
+#: injection.xml:490
+#, no-c-format
+msgid ""
+"<![CDATA[class HttpParams\n"
+"\n"
+"   @Produces @HttpParam(\"\")\n"
+"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
+"      return request.getParameter(ip.getAnnotation(HttpParam.class).value());\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[class HttpParams\n"
+"\n"
+"   @Produces @HttpParam(\"\")\n"
+"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
+"      return request.getParameter(ip.getAnnotation(HttpParam.class).value());\n"
+"   }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: injection.xml:492
+#, no-c-format
+msgid "(Note that the <literal>value()</literal> member of the <literal>HttpParam</literal> annotation is ignored by the Web Bean manager since it is annotated <literal>@NonBinding.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:495
+#, no-c-format
+msgid "The Web Bean manager provides a built-in Web Bean that implements the <literal>InjectionPoint</literal> interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:498
+#, no-c-format
+msgid ""
+"<![CDATA[public interface InjectionPoint { \n"
+"   public Object getInstance(); \n"
+"   public Bean<?> getBean(); \n"
+"   public Member getMember(): \n"
+"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
+"   public Set<T extends Annotation> getAnnotations(); \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public interface InjectionPoint { \n"
+"   public Object getInstance(); \n"
+"   public Bean<?> getBean(); \n"
+"   public Member getMember(): \n"
+"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
+"   public Set<T extends Annotation> getAnnotations(); \n"
+"}]]>"
+


Property changes on: doc/trunk/reference/it-IT/injection.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/it-IT/interceptors.mo
===================================================================
(Binary files differ)


Property changes on: doc/trunk/reference/it-IT/interceptors.mo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: doc/trunk/reference/it-IT/interceptors.po (from rev 752, doc/trunk/reference/it-IT/modules/interceptors.po)
===================================================================
--- doc/trunk/reference/it-IT/interceptors.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/interceptors.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,585 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-05 00:26+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: interceptors.xml:4
+#, no-c-format
+msgid "Interceptors"
+msgstr "Gli interceptor"
+
+#. Tag: para
+#: interceptors.xml:6
+#, no-c-format
+msgid "Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending the functionality in two directions:"
+msgstr "Web Beans riutilizza l'architettura base degli interceptor di EJB3.0, estendendo la funzionalità in due direzioni:"
+
+#. Tag: para
+#: interceptors.xml:11
+#, no-c-format
+msgid "Any Web Bean may have interceptors, not just session beans."
+msgstr "Qualsiasi Web Bean può avere interceptor, non solo i session bean."
+
+#. Tag: para
+#: interceptors.xml:14
+#, no-c-format
+msgid "Web Beans features a more sophisticated annotation-based approach to binding interceptors to Web Beans."
+msgstr "Web Bean fornisce un più sofisticato approccio basato su annotazioni per associare interceptor ai Web Beans."
+
+#. Tag: para
+#: interceptors.xml:22
+#, no-c-format
+msgid "The EJB specification defines two kinds of interception points:"
+msgstr "\"La specifica Web Bean definisce due tipi di punti di intercettazione:"
+
+#. Tag: para
+#: interceptors.xml:26
+#, no-c-format
+msgid "business method interception, and"
+msgstr "intercettazione del metodo di business, e"
+
+# lifecycle callback interception = ?
+#. Tag: para
+#: interceptors.xml:29
+#, no-c-format
+msgid "lifecycle callback interception."
+msgstr "intercettazione della chiamata del ciclo di vita."
+
+#. Tag: para
+#: interceptors.xml:33
+#, no-c-format
+msgid "A <emphasis>business method interceptor</emphasis> applies to invocations of methods of the Web Bean by clients of the Web Bean:"
+msgstr "Un <emphasis>interceptor di un metodo di business</emphasis> si applica alle invocazioni di metodi del Web Bean da parte di client del Web Bean:"
+
+#. Tag: programlisting
+#: interceptors.xml:36
+#, no-c-format
+msgid ""
+"<![CDATA[public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
+"}]]>"
+
+# rivedere la frase
+#. Tag: para
+#: interceptors.xml:38
+#, no-c-format
+msgid "A <emphasis>lifecycle callback interceptor</emphasis> applies to invocations of lifecycle callbacks by the container:"
+msgstr "Un <emphasis>interceptor di chiamata del ciclo di vita</emphasis> si applica alle invocazioni delle chiamate del ciclo di vita da parte del container:"
+
+#. Tag: programlisting
+#: interceptors.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[public class DependencyInjectionInterceptor {\n"
+"    @PostConstruct public void injectDependencies(InvocationContext ctx) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class DependencyInjectionInterceptor {\n"
+"    @PostConstruct public void injectDependencies(InvocationContext ctx) { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: interceptors.xml:43
+#, no-c-format
+msgid "An interceptor class may intercept both lifecycle callbacks and business methods."
+msgstr "Una classe interceptor può intercettare entrambi le chiamate del ciclo di vita ed i metodi di business."
+
+#. Tag: title
+#: interceptors.xml:49
+#, no-c-format
+msgid "Interceptor bindings"
+msgstr "Interceptor bindings"
+
+#. Tag: para
+#: interceptors.xml:51
+#, no-c-format
+msgid "Suppose we want to declare that some of our Web Beans are transactional. The first thing we need is an <emphasis>interceptor binding annotation</emphasis> to specify exactly which Web Beans we're interested in:"
+msgstr "Si supponga di voler dichiarare transazionali alcuni Web Beans. La prima cosa necessaria è un'<emphasis>annotazione di interceptor binding</emphasis> per specificare esattamente quali Web Beans sono interessati:"
+
+#. Tag: programlisting
+#: interceptors.xml:55
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {}]]>"
+msgstr ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {}]]>"
+
+#. Tag: para
+#: interceptors.xml:57
+#, no-c-format
+msgid "Now we can easily specify that our <literal>ShoppingCart</literal> is a transactional object:"
+msgstr "Ora è facilmente possibile specificare che <literal>ShoppingCart</literal> è un oggetto transazionale:"
+
+#. Tag: programlisting
+#: interceptors.xml:60
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@Transactional\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: interceptors.xml:62
+#, no-c-format
+msgid "Or, if we prefer, we can specify that just one method is transactional:"
+msgstr "O se si preferisce, si può specificare che solo un metodo sia transazionale:"
+
+#. Tag: programlisting
+#: interceptors.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+
+#. Tag: title
+#: interceptors.xml:69
+#, no-c-format
+msgid "Implementing interceptors"
+msgstr "Implementare gli interceptor"
+
+#. Tag: para
+#: interceptors.xml:71
+#, no-c-format
+msgid "That's great, but somewhere along the line we're going to have to actually implement the interceptor that provides this transaction management aspect. All we need to do is create a standard EJB interceptor, and annotate it <literal>@Interceptor</literal> and <literal>@Transactional</literal>."
+msgstr "Bene, ma da qualche parte è necessario implementare l'interceptor che fornisce l'aspect di gestione della transazione. Occore quindi creare un interceptor EJB standard e annotarlo con <literal>@Interceptor</literal> e <literal>@Transactional</literal>.\""
+
+#. Tag: programlisting
+#: interceptors.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: interceptors.xml:78
+#, no-c-format
+msgid "All Web Beans interceptors are simple Web Beans, and can take advantage of dependency injection and contextual lifecycle management."
+msgstr "Tutti gli interceptor dei Web Beans sono Web Beans semplici e possono sfruttare la dependency injection e la gestione del ciclo di vita contestuale."
+
+#. Tag: programlisting
+#: interceptors.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: interceptors.xml:83
+#, no-c-format
+msgid "Multiple interceptors may use the same interceptor binding type."
+msgstr "Diverso interceptor possono usare lo stesso tipo di interceptor binding."
+
+#. Tag: title
+#: interceptors.xml:88
+#, no-c-format
+msgid "Enabling interceptors"
+msgstr "Abilitare gli interceptor"
+
+#. Tag: para
+#: interceptors.xml:90
+#, no-c-format
+msgid "Finally, we need to <emphasis>enable</emphasis> our interceptor in <literal>web-beans.xml</literal>."
+msgstr "Infine occorre <emphasis>abilitare</emphasis> l'interceptor in <literal>web-beans.xml</literal>."
+
+#. Tag: programlisting
+#: interceptors.xml:93
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+"<![CDATA[<Interceptors>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+
+#. Tag: para
+#: interceptors.xml:95
+#, no-c-format
+msgid "Whoah! Why the angle bracket stew?"
+msgstr "Ma perché viene usato ancora XML, quando Web Beans non dovrebbe utilizzarlo?"
+
+#. Tag: para
+#: interceptors.xml:97
+#, no-c-format
+msgid "Well, the XML declaration solves two problems:"
+msgstr "La dichiarazione XML risolve due problemi:"
+
+#. Tag: para
+#: interceptors.xml:101
+#, no-c-format
+msgid "it enables us to specify a total ordering for all the interceptors in our system, ensuring deterministic behavior, and"
+msgstr "Ci consente di specificare un ordinamento totale per tutti gli interceptor del sistema, assicurando un comportamente deterministico, e"
+
+#. Tag: para
+#: interceptors.xml:105
+#, no-c-format
+msgid "it lets us enable or disable interceptor classes at deployment time."
+msgstr "consente di abilitare o disabilitare le classi di interceptor a deployment time."
+
+#. Tag: para
+#: interceptors.xml:109
+#, no-c-format
+msgid "For example, we could specify that our security interceptor runs before our <literal>TransactionInterceptor</literal>."
+msgstr "Per esempio è possibile specificare che l'interceptor di sicurezza venga eseguito prima di <literal>TransactionInterceptor</literal>.\""
+
+#. Tag: programlisting
+#: interceptors.xml:112
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <sx:SecurityInterceptor/>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+"<![CDATA[<Interceptors>\n"
+"    <sx:SecurityInterceptor/>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+
+#. Tag: para
+#: interceptors.xml:114
+#, no-c-format
+msgid "Or we could turn them both off in our test environment!"
+msgstr "Oppure si può disattivarli entrambi dal proprio ambiente di test!"
+
+#. Tag: title
+#: interceptors.xml:119
+#, no-c-format
+msgid "Interceptor bindings with members"
+msgstr "Interceptor binding con membri"
+
+#. Tag: para
+#: interceptors.xml:121
+#, no-c-format
+msgid "Suppose we want to add some extra information to our <literal>@Transactional</literal> annotation:"
+msgstr "Si supponga di voler aggiungere qualche informazione extra all'annotazione  <literal>@Transactional</literal>:"
+
+#. Tag: programlisting
+#: interceptors.xml:124
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {\n"
+"    boolean requiresNew() default false;\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {\n"
+"    boolean requiresNew() default false;\n"
+"}]]>"
+
+#. Tag: para
+#: interceptors.xml:126
+#, no-c-format
+msgid "Web Beans will use the value of <literal>requiresNew</literal> to choose between two different interceptors, <literal>TransactionInterceptor</literal> and <literal>RequiresNewTransactionInterceptor</literal>."
+msgstr "Web Beans utilizzerà il valore di <literal>requiresNew</literal> per scegliere tra due diversi interceptor, <literal>TransactionInterceptor</literal> e <literal>RequiresNewTransactionInterceptor</literal>."
+
+#. Tag: programlisting
+#: interceptors.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
+"public class RequiresNewTransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
+"public class RequiresNewTransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: interceptors.xml:132
+#, no-c-format
+msgid "Now we can use <literal>RequiresNewTransactionInterceptor</literal> like this:"
+msgstr "Ora è possibile usare <literal>RequiresNewTransactionInterceptor</literal> in questo modo:"
+
+#. Tag: programlisting
+#: interceptors.xml:134
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@Transactional(requiresNew=true)\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: interceptors.xml:136
+#, no-c-format
+msgid "But what if we only have one interceptor and we want the manager to ignore the value of <literal>requiresNew</literal> when binding interceptors? We can use the <literal>@NonBinding</literal> annotation:"
+msgstr "Ma cosa succede se si ha solo un interceptor e si vuole che il manager ignori il valore di <literal>requiresNew</literal> quando si associa l'interceptor? Si può usare l'annotazione <literal>@NonBinding</literal>:"
+
+#. Tag: programlisting
+#: interceptors.xml:140
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Secure {\n"
+"    @NonBinding String[] rolesAllowed() default {};\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Secure {\n"
+"    @NonBinding String[] rolesAllowed() default {};\n"
+"}]]>"
+
+#. Tag: title
+#: interceptors.xml:145
+#, no-c-format
+msgid "Multiple interceptor binding annotations"
+msgstr "Annotazioni per interceptor binding multipli"
+
+#. Tag: para
+#: interceptors.xml:147
+#, no-c-format
+msgid "Usually we use combinations of interceptor bindings types to bind multiple interceptors to a Web Bean. For example, the following declaration would be used to bind <literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</literal> to the same Web Bean:"
+msgstr "Solitamente si usano combinazioni di tipi di interceptor binding per associare pià interceptor ad un Web Bean. Per esempio, la seguente dichiarazione verrebbe impiegata per associare <literal>TransactionInterceptor</literal> e <literal>SecurityInterceptor</literal> allo stesso Web Bean:"
+
+#. Tag: programlisting
+#: interceptors.xml:152
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: interceptors.xml:154
+#, no-c-format
+msgid "However, in very complex cases, an interceptor itself may specify some combination of interceptor binding types:"
+msgstr "Comunque in casi molto complessi un interceptor da solo potrebbe specificare alcune combinazioni di tipi di interceptor binding:"
+
+#. Tag: programlisting
+#: interceptors.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure @Interceptor\n"
+"public class TransactionalSecureInterceptor { ... }]]>"
+msgstr ""
+"<![CDATA[@Transactional @Secure @Interceptor\n"
+"public class TransactionalSecureInterceptor { ... }]]>"
+
+#. Tag: para
+#: interceptors.xml:159
+#, no-c-format
+msgid "Then this interceptor could be bound to the <literal>checkout()</literal> method using any one of the following combinations:"
+msgstr "Allora quest'interceptor potrebbe venire associato al metodo <literal>checkout()</literal> usando una delle seguenti combinazioni:"
+
+#. Tag: programlisting
+#: interceptors.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional @Secure public void checkout() { ... }\n"
+"}]]>"
+
+#. Tag: programlisting
+#: interceptors.xml:164
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure\n"
+"public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Secure\n"
+"public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+
+#. Tag: programlisting
+#: interceptors.xml:166
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactionl\n"
+"public class ShoppingCart {\n"
+"    @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Transactionl\n"
+"public class ShoppingCart {\n"
+"    @Secure public void checkout() { ... }\n"
+"}]]>"
+
+#. Tag: programlisting
+#: interceptors.xml:168
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Transactional @Secure\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+
+#. Tag: title
+#: interceptors.xml:173
+#, no-c-format
+msgid "Interceptor binding type inheritance"
+msgstr "Ereditarietà del tipo di interceptor binding"
+
+#. Tag: para
+#: interceptors.xml:175
+#, no-c-format
+msgid "One limitation of the Java language support for annotations is the lack of annotation inheritance. Really, annotations should have reuse built in, to allow this kind of thing to work:"
+msgstr "Una limitazione del supporto del linguaggio Java per le annotazioni è la mancanza di ereditarietà delle annotazioni. In verità le annotazioni dovrebbero avere il riutilizzo predefinito per consentire che questo avvenga:"
+
+#. Tag: programlisting
+#: interceptors.xml:179
+#, no-c-format
+msgid "<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
+msgstr "<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
+
+#. Tag: para
+#: interceptors.xml:181
+#, no-c-format
+msgid "Well, fortunately, Web Beans works around this missing feature of Java. We may annotate one interceptor binding type with other interceptor binding types. The interceptor bindings are transitive&#151;any Web Bean with the first interceptor binding inherits the interceptor bindings declared as meta-annotations."
+msgstr "Fortunatamente Web Beans provvede a questa mancanza di Java. E' possibile annotare un tipo di interceptor binding con altri tipi di interceptor binding. Gli interceptor binding sono transitivi&#151;qualsiasi Web Bean con il primo interceptor binding eredita gli interceptor binding dichiarati come meta-annotazioni."
+
+#. Tag: programlisting
+#: interceptors.xml:186
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"@InterceptorBindingType\n"
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"public @interface Action { ... }]]>"
+msgstr ""
+"<![CDATA[@Transactional @Secure\n"
+"@InterceptorBindingType\n"
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"public @interface Action { ... }]]>"
+
+#. Tag: para
+#: interceptors.xml:188
+#, no-c-format
+msgid "Any Web Bean annotated <literal>@Action</literal> will be bound to both <literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</literal>. (And even <literal>TransactionalSecureInterceptor</literal>, if it exists.)"
+msgstr "Ogni Web Bean annotato con <literal>@Action</literal> verrà legato ad entrambi <literal>TransactionInterceptor</literal> e <literal>SecurityInterceptor</literal>. (E anche <literal>TransactionalSecureInterceptor</literal>, se questo esiste.)"
+
+#. Tag: title
+#: interceptors.xml:195
+#, no-c-format
+msgid "Use of <literal>@Interceptors</literal>"
+msgstr "Uso di <literal>@Interceptors</literal>"
+
+#. Tag: para
+#: interceptors.xml:197
+#, no-c-format
+msgid "The <literal>@Interceptors</literal> annotation defined by the EJB specification is supported for both enterprise and simple Web Beans, for example:"
+msgstr "L'annotazione <literal>@Interceptors</literal> definita dalla specifica EJB è supportata per entrambi i Web Bean semplici ed enterprise, per esempio:"
+
+#. Tag: programlisting
+#: interceptors.xml:200
+#, no-c-format
+msgid ""
+"<![CDATA[@Interceptors({TransactionInterceptor.class, SecurityInterceptor.class})\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Interceptors({TransactionInterceptor.class, SecurityInterceptor.class})\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: interceptors.xml:202
+#, no-c-format
+msgid "However, this approach suffers the following drawbacks:"
+msgstr "Comunque, quest'approccio soffre dei seguenti difetti:"
+
+#. Tag: para
+#: interceptors.xml:206
+#, no-c-format
+msgid "the interceptor implementation is hardcoded in business code,"
+msgstr "l'implementazione degli interceptor è codificata nel codice di business,"
+
+#. Tag: para
+#: interceptors.xml:209
+#, no-c-format
+msgid "interceptors may not be easily disabled at deployment time, and"
+msgstr "gli interceptor possono non essere facilmente disabilitati a deployment time, e"
+
+#. Tag: para
+#: interceptors.xml:212
+#, no-c-format
+msgid "the interceptor ordering is non-global&#151;it is determined by the order in which interceptors are listed at the class level."
+msgstr "l'ordinamento degli interceptor è non-globale&#151;è determinata dall'ordine in cui gli interceptor sono elencati al livello di classe."
+
+#. Tag: para
+#: interceptors.xml:217
+#, no-c-format
+msgid "Therefore, we recommend the use of Web Beans-style interceptor bindings."
+msgstr "Quindi si raccomanda l'uso di interceptor binding di stile Web Beans."
+


Property changes on: doc/trunk/reference/it-IT/interceptors.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/intro.po (from rev 725, doc/trunk/reference/it-IT/modules/intro.po)
===================================================================
--- doc/trunk/reference/it-IT/intro.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/intro.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,938 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-25 12:11+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: intro.xml:4
+#, no-c-format
+msgid "Getting started with Web Beans"
+msgstr "Iniziare con Web Beans"
+
+# Rendere la frase "wondering what kinds of hoops the Web Beans specification will make you jump through!" più italiana.
+#. Tag: para
+#: intro.xml:6
+#, no-c-format
+msgid "So you're already keen to get started writing your first Web Bean? Or perhaps you're skeptical, wondering what kinds of hoops the Web Beans specification will make you jump through! The good news is that you've probably already written and used hundreds, perhaps thousands of Web Beans. You might not even remember the first Web Bean you wrote."
+msgstr "Non vedi l'ora di iniziare a scrivere il primo Web Beans? O forse sei un pò scettico e ti domandi quali virtuosismi ti farà fare la specifica Web Beans! La buona notizia è che probabilmente hai già scritto e usato centinaia, forse migliaia di Web Beans. Potresti addirittura non ricordare il primo Web Bean scritto."
+
+#. Tag: title
+#: intro.xml:13
+#, no-c-format
+msgid "Your first Web Bean"
+msgstr "Il primo Web Bean"
+
+#. Tag: para
+#: intro.xml:15
+#, no-c-format
+msgid "With certain, very special exceptions, every Java class with a constructor that accepts no parameters is a Web Bean. That includes every JavaBean. Furthermore, every EJB 3-style session bean is a Web Bean. Sure, the JavaBeans and EJBs you've been writing every day have not been able to take advantage of the new services defined by the Web Beans specification, but you'll be able to use every one of them as Web Beans&#151;injecting them into other Web Beans, configuring them via the Web Beans XML configuration facility, even adding interceptors and decorators to them&#151;without touching your existing code."
+msgstr "Con alcune eccezioni molto particolari, ogni classe Java con un costruttore che non accetta parametri è un Web Bean. Questo include ogni JavaBean. Inoltre, ogni session bean di stile EJB3 è un Web Bean. Sicuramente i JavaBean e gli EJB3 che si sono sempre scritti non erano in grado di sfruttare i nuovi servizi definiti dalla specifica Web Beans, ma si sarà presto in grado di usare ciascuno di essi come Web Bean&#151;iniettandoli in altri Web Beans, configurandoli tramite strumenti di configurazione XML Web Bean, e perfino aggiungendo a loro interceptor e decoratori&#151;senza toccare il codice esistente."
+
+#. Tag: para
+#: intro.xml:25
+#, no-c-format
+msgid "Suppose that we have two existing Java classes, that we've been using for years in various applications. The first class parses a string into a list of sentences:"
+msgstr "Si supponga di avere due classi Java esistenti, usate da anni in varie applicazioni. La prima classe esegue il parsing di una stringa in una lista di frasi:"
+
+#. Tag: programlisting
+#: intro.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class SentenceParser {\n"
+"    public List<String> parse(String text) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class SentenceParser {\n"
+"    public List<String> parse(String text) { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:31
+#, no-c-format
+msgid "The second existing class is a stateless session bean front-end for an external system that is able to translate sentences from one language to another:"
+msgstr "La seconda classe è un session bean stateless front-end per un sistema esterno capace di tradurre le frasi da una lingua ad un altra:"
+
+#. Tag: programlisting
+#: intro.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class SentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Stateless\n"
+"public class SentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:37
+#, no-c-format
+msgid "Where <literal>Translator</literal> is the local interface:"
+msgstr "Dove <literal>Translator</literal> è l'interfaccia locale:"
+
+#. Tag: programlisting
+#: intro.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[@Local\n"
+"public interface Translator {\n"
+"    public String translate(String sentence);\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Local\n"
+"public interface Translator {\n"
+"    public String translate(String sentence);\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:41
+#, no-c-format
+msgid "Unfortunately, we don't have a preexisting class that translates whole text documents. So let's write a Web Bean that does this job:"
+msgstr "Sfortunatamente non ci sono classi preesistenti che traducano l'intero testo dei documenti. Quindi occorre scrivere un Web Bean che faccia questo lavoro:"
+
+#. Tag: programlisting
+#: intro.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator {\n"
+"    \n"
+"    private SentenceParser sentenceParser;\n"
+"    private Translator sentenceTranslator;\n"
+"    \n"
+"    @Initializer\n"
+"    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {\n"
+"        this.sentenceParser = sentenceParser;\n"
+"        this.sentenceTranslator = sentenceTranslator;\n"
+"    }\n"
+"    \n"
+"    public String translate(String text) {\n"
+"        StringBuilder sb = new StringBuilder();\n"
+"        for (String sentence: sentenceParser.parse(text)) {\n"
+"            sb.append(sentenceTranslator.translate(sentence));\n"
+"        }\n"
+"        return sb.toString();\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class TextTranslator {\n"
+"    \n"
+"    private SentenceParser sentenceParser;\n"
+"    private Translator sentenceTranslator;\n"
+"    \n"
+"    @Initializer\n"
+"    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {\n"
+"        this.sentenceParser = sentenceParser;\n"
+"        this.sentenceTranslator = sentenceTranslator;\n"
+"    }\n"
+"    \n"
+"    public String translate(String text) {\n"
+"        StringBuilder sb = new StringBuilder();\n"
+"        for (String sentence: sentenceParser.parse(text)) {\n"
+"            sb.append(sentenceTranslator.translate(sentence));\n"
+"        }\n"
+"        return sb.toString();\n"
+"    }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:46
+#, no-c-format
+msgid "We may obtain an instance of <literal>TextTranslator</literal> by injecting it into a Web Bean, Servlet or EJB:"
+msgstr "Si può ottenere un'istanza di <literal>TextTranslator</literal> iniettandolo in un Web Bean, Servlet o EJB:"
+
+#. Tag: programlisting
+#: intro.xml:49
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public setTextTranslator(TextTranslator textTranslator) {\n"
+"    this.textTranslator = textTranslator;\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Initializer\n"
+"public setTextTranslator(TextTranslator textTranslator) {\n"
+"    this.textTranslator = textTranslator;\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:51
+#, no-c-format
+msgid "Alternatively, we may obtain an instance by directly calling a method of the Web Bean manager:"
+msgstr "In alternativa si può ottenere un'istanza chiamando direttamente un metodo del manager Web Bean:"
+
+#. Tag: programlisting
+#: intro.xml:54
+#, no-c-format
+msgid "<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]>"
+msgstr "<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]>"
+
+#. Tag: para
+#: intro.xml:56
+#, no-c-format
+msgid "But wait: <literal>TextTranslator</literal> does not have a constructor with no parameters! Is it still a Web Bean? Well, a class that does not have a constructor with no parameters can still be a Web Bean if it has a constructor annotated <literal>@Initializer</literal>."
+msgstr "Ma <literal>TextTranslator</literal> non ha un costruttore con nessun parametro! E' ancora un Web Bean? Una classe che non ha un costruttore senza parametri può essere un Web Bean se il suo costruttore è annotato con <literal>@Initializer</literal>."
+
+#. Tag: para
+#: intro.xml:61
+#, no-c-format
+msgid "As you've guessed, the <literal>@Initializer</literal> annotation has something to do with dependency injection! <literal>@Initializer</literal> may be applied to a constructor or method of a Web Bean, and tells the Web Bean manager to call that constructor or method when instantiating the Web Bean. The Web Bean manager will inject other Web Beans to the parameters of the constructor or method."
+msgstr "Come hai indovinato, l'annotazione <literal>@Initializer</literal> ha qualcosa che fare con la dependency injection! <literal>@Initializer</literal> può essere applicato ad un costruttore od un metodo di un Web Bean, e dice al manager Web Bean di chiamare quel costruttore o metodo quando si istanzia il Web Bean. Il manager Web Bean inietterà altri Web Bean nei parametri del costruttore o del metodo."
+
+#. Tag: para
+#: intro.xml:68
+#, no-c-format
+msgid "At system initialization time, the Web Bean manager must validate that exactly one Web Bean exists which satisfies each injection point. In our example, if no implementation of <literal>Translator</literal> available&#151;if the <literal>SentenceTranslator</literal> EJB was not deployed&#151;the Web Bean manager would throw an <literal>UnsatisfiedDependencyException</literal>. If more than one implementation of <literal>Translator</literal> was available, the Web Bean manager would throw an <literal>AmbiguousDependencyException</literal>."
+msgstr "In fase di inizializzazione del sistema, il manager Web Bean deve convalidare che esattamente un solo Web Bean esista e soddisfi ciascun punto di iniezione. Nell'esempio, se nessuna implementazione di <literal>Translator</literal> fosse disponibile&#151;se l'EJB <literal>SentenceTranslator</literal> non venisse deployato&#151;il manager Web Bean lancerebbe una <literal>UnsatisfiedDependencyException</literal>. Se più di un'implementazione di <literal>Translator</literal> fosse disponibile, il manager Web Bean lancerebbe una <literal>AmbiguousDependencyException</literal>."
+
+#. Tag: title
+#: intro.xml:80
+#, no-c-format
+msgid "What is a Web Bean?"
+msgstr "Cosa è un Web Bean?"
+
+#. Tag: para
+#: intro.xml:82
+#, no-c-format
+msgid "So what, <emphasis>exactly</emphasis>, is a Web Bean?"
+msgstr "Ma cosa è <emphasis>esattamente</emphasis> un Web Bean?"
+
+#. Tag: para
+#: intro.xml:84
+#, no-c-format
+msgid "A Web Bean is an application class that contains business logic. A Web Bean may be called directly from Java code, or it may be invoked via Unified EL. A Web Bean may access transactional resources. Dependencies between Web Beans are managed automatically by the Web Bean manager. Most Web Beans are <emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The lifecycle of a Web Bean is always managed by the Web Bean manager."
+msgstr "Un Web Bean è una classe di un'applicazione che contiene della logica di business. Può essere chiamato direttamente da codice Java, o può essere invocato via Unified EL. Un Web Bean può accedere a risorse transazionali. Le dipendenze tra Web Beans sono gestite automaticamente dal manager Web Bean. La maggior parte dei Web Beans sono <emphasis>stateful</emphasis> e <emphasis>contestuali</emphasis>. Il ciclo di vita di un Web Bean è sempre gestito da un manager Web Bean."
+
+#. Tag: para
+#: intro.xml:91
+#, no-c-format
+msgid "Let's back up a second. What does it really mean to be \"contextual\"? Since Web Beans may be stateful, it matters <emphasis>which</emphasis> bean instance I have. Unlike a stateless component model (for example, stateless session beans) or a singleton component model (such as servlets, or singleton beans), different clients of a Web Bean see the Web Bean in different states. The client-visible state depends upon which instance of the Web Bean the client has a reference to."
+msgstr "Torniamo indietro un attimo. Cosa significa veramente essere \"contestuale\"? Poiché Web Beans può essere stateful, è importante <emphasis>quale</emphasis> istanza di bean si ha. Diversamente da un modello a componenti stateless (per esempio, i session bean stateless) o un modello a componenti singleton (come i servlet o i bean singleton) i client di un Web Bean vedono il Web Bean in stati differenti. Lo stato del client visibile dipende dall'istanza del Web Bean alla quale il client ha il riferimento."
+
+#. Tag: para
+#: intro.xml:98
+#, no-c-format
+msgid "However, like a stateless or singleton model, but <emphasis>unlike</emphasis> stateful session beans, the client does not control the lifecycle of the instance by explicitly creating and destroying it. Instead, the <emphasis>scope</emphasis> of the Web Bean determines:"
+msgstr "Comunque, in modo simile ad un modello stateless o singleton, ma <emphasis>non come</emphasis> i session bean stateful, il client non ha il controllo sul ciclo di vita dell'istanza, creandola e distruggendola esplicitamente. Invece, lo <emphasis>scope</emphasis> del Web Bean determina:"
+
+#. Tag: para
+#: intro.xml:105
+#, no-c-format
+msgid "the lifecycle of each instance of the Web Bean and"
+msgstr "il ciclo di vita di ogni istanza del Web Bean e"
+
+#. Tag: para
+#: intro.xml:108
+#, no-c-format
+msgid "which clients share a reference to a particular instance of the Web Bean."
+msgstr "quali client condividono una referenza con una particolare istanza del Web Bean."
+
+#. Tag: para
+#: intro.xml:113
+#, no-c-format
+msgid "For a given thread in a Web Beans application, there may be an <emphasis>active context</emphasis> associated with the scope of the Web Bean. This context may be unique to the thread (for example, if the Web Bean is request scoped), or it may be shared with certain other threads (for example, if the Web Bean is session scoped) or even all other threads (if it is application scoped)."
+msgstr "Per un dato thread in un'applicazione Web Beans, ci può essere un <emphasis>contesto attivo</emphasis> associato allo scope del Web Bean. Questo contesto può essere univoco nel thread (per esempio, se il Web Bean è con scope di richesta), o può essere condiviso con alcuni altri thread (per esempio, se il Web Bean è con scope di sessione) od anche tutti gli altri thread (se è scope di applicazione). "
+
+#. Tag: para
+#: intro.xml:119
+#, no-c-format
+msgid "Clients (for example, other Web Beans) executing in the same context will see the same instance of the Web Bean. But clients in a different context will see a different instance."
+msgstr "I client (per esempio, altri Web Beans) che sono in esecuzione nello stesso contesto vedranno la stessa istanza del Web Bean. Ma i client in un contesto diverso vedranno un istanza diversa."
+
+#. Tag: para
+#: intro.xml:123
+#, no-c-format
+msgid "One great advantage of the contextual model is that it allows stateful Web Beans to be treated like services! The client need not concern itself with managing the lifecycle of the Web Bean it is using, <emphasis>nor does it even need to know what that lifecyle is.</emphasis> Web Beans interact by passing messages, and the Web Bean implementations define the lifecycle of their own state. The Web Beans are loosely coupled because:"
+msgstr "Un grande vantaggio del modello contestuale è che consente ai Web Beans stateful di essere trattati come servizi! Il client non deve preoccuparsi di gestire il ciclo di vita del Web Bean che sta utilizzando, <emphasis>e neppure deve sapere quale sia il ciclo di vita.</emphasis> Web Beans interagisce passando i messaggi, e le implementazioni Web Bean definiscono il ciclo di vita del proprio stato. I Web Beans sono debolmente disaccoppiati (loosely coupled) poiché:"
+
+#. Tag: para
+#: intro.xml:132
+#, no-c-format
+msgid "they interact via well-defined public APIs"
+msgstr "interagiscono tramite delle API pubblica ben-definita"
+
+#. Tag: para
+#: intro.xml:135
+#, no-c-format
+msgid "their lifecycles are completely decoupled"
+msgstr "il loro ciclo di vita è completamente disaccoppiato"
+
+#. Tag: para
+#: intro.xml:139
+#, no-c-format
+msgid "We can replace one Web Bean with a different Web Bean that implements the same API and has a different lifecycle (a different scope) without affecting the other Web Bean implementation. In fact, Web Beans defines a sophisticated facility for overriding Web Bean implementations at deployment time, as we will see in <xref linkend=\"deploymenttypes\"/>."
+msgstr "Si può sostituire un Web Bean con un diverso Web Bean che implementa la stessa API ed ha un diverso ciclo di vita (un diverso scope) senza alterare l'implementazione dell'altro Web Bean. Infatti Web Beans definisce un meccanismo sofisticato per fare l'override delle implementazioni Web Bean al momento del deploy, come visto in <xref linkend=\"deploymenttypes\"/>."
+
+#. Tag: para
+#: intro.xml:145
+#, no-c-format
+msgid "Note that not all clients of a Web Bean are Web Beans. Other objects such as Servlets or Message-Driven Beans&#151;which are by nature not injectable, contextual objects&#151;may also obtain references to Web Beans by injection."
+msgstr "Si noti che non tutti i client dei un Web Bean sono Web Bean. Altri oggetti come Servlet o Message-Driven Beans&#151;che sono per natura non iniettabili, oggetti contestuali&#151;possono pure ottenere riferimenti a Web Bean tramite iniezione."
+
+# Tolto "Enough hand-waving."
+#. Tag: para
+#: intro.xml:149
+#, no-c-format
+msgid "Enough hand-waving. More formally, according to the spec:"
+msgstr "Più formalmente, secondo la specifica:"
+
+#. Tag: para
+#: intro.xml:153
+#, no-c-format
+msgid "A Web Bean comprises:"
+msgstr "Un Web Bean comprende:"
+
+#. Tag: para
+#: intro.xml:156
+#, no-c-format
+msgid "A (nonempty) set of API types"
+msgstr "Un set (non vuoto) di tipi di API"
+
+#. Tag: para
+#: intro.xml:157
+#, no-c-format
+msgid "A (nonempty) set of binding annotation types"
+msgstr "Un set (non vuoto) di tipi di annotazione di binding"
+
+#. Tag: para
+#: intro.xml:158
+#, no-c-format
+msgid "A scope"
+msgstr "Uno scope"
+
+#. Tag: para
+#: intro.xml:159
+#, no-c-format
+msgid "A deployment type"
+msgstr "Un tipo di deploy"
+
+#. Tag: para
+#: intro.xml:160
+#, no-c-format
+msgid "Optionally, a Web Bean name"
+msgstr "Opzionalmente un nome Web Bean"
+
+#. Tag: para
+#: intro.xml:161
+#, no-c-format
+msgid "A set of interceptor binding types"
+msgstr "Un set di tipi di interceptor binding"
+
+#. Tag: para
+#: intro.xml:162
+#, no-c-format
+msgid "A Web Bean implementation"
+msgstr "Un implementazione Web Bean"
+
+#. Tag: para
+#: intro.xml:167
+#, no-c-format
+msgid "Let's see what some of these terms mean, to the Web Bean developer."
+msgstr "Vediamo cosa significano alcuni di questi termini per lo sviluppatore Web Bean."
+
+#. Tag: title
+#: intro.xml:170
+#, no-c-format
+msgid "API types, binding types and dependency injection"
+msgstr "Tipi di API, tipi di binding e dependency injection"
+
+#. Tag: para
+#: intro.xml:172
+#, no-c-format
+msgid "Web Beans usually acquire references to other Web Beans via dependency injection. Any injected attribute specifies a \"contract\" that must be satisfied by the Web Bean to be injected. The contract is:"
+msgstr "I Web Bean solitamente acquisiscono riferimenti ad altri Web Bean tramite la dependency injection. Ogni attributo iniettato specifica un \"contratto\" che deve essere soddisfatto dal Web Bean per essere iniettato. Il contratto è:"
+
+#. Tag: para
+#: intro.xml:177
+#, no-c-format
+msgid "an API type, together with"
+msgstr "un tipo di API, assieme a"
+
+#. Tag: para
+#: intro.xml:178
+#, no-c-format
+msgid "a set of binding types."
+msgstr "un set di tipi di binding."
+
+# client-visible semantic  =?
+#. Tag: para
+#: intro.xml:181
+#, no-c-format
+msgid "An API is a user-defined class or interface. (If the Web Bean is an EJB session bean, the API type is the <literal>@Local</literal> interface or bean-class local view). A binding type represents some client-visible semantic that is satisfied by some implementations of the API and not by others."
+msgstr "Un API è una classe o interfaccia definita dall'utente. (Se il Web Bean è un session bean EJB, il tipo di API è l'interfaccia <literal>@Local</literal> o la vista locale della classe-bean). Un tipo di binding rappresenta un semantica del client che è soddisfatta da certe implementazioni dell'API e non da altre."
+
+#. Tag: para
+#: intro.xml:186
+#, no-c-format
+msgid "Binding types are represented by user-defined annotations that are themselves annotated <literal>@BindingType</literal>. For example, the following injection point has API type <literal>PaymentProcessor</literal> and binding type <literal>@CreditCard</literal>:"
+msgstr "I tipi di binding sono rappresentati da annotazioni definite dall'utente che sono loro stesse annotate con <literal>@BindingType</literal>. Per esempio, il seguente punto di iniezione ha un tipo di API <literal>PaymentProcessor</literal> ed un tipo di binding <literal>@CreditCard</literal>:"
+
+#. Tag: programlisting
+#: intro.xml:191
+#, no-c-format
+msgid "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
+msgstr "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
+
+#. Tag: para
+#: intro.xml:193
+#, no-c-format
+msgid "If no binding type is explicitly specified at an injection point, the default binding type <literal>@Current</literal> is assumed."
+msgstr "Se nessun tipo di binding viene specificato in modo esplicito ad un punto di iniezione, il tipo di binding di default si assume essere <literal>@Current</literal>."
+
+#. Tag: para
+#: intro.xml:196
+#, no-c-format
+msgid "For each injection point, the Web Bean manager searches for a Web Bean which satisfies the contract (implements the API, and has all the binding types), and injects that Web Bean."
+msgstr "Per ogni punto di iniezione, il manager Web Bean cerca un Web Bean che soddisfi il contratto (che implementi la API, e che abbia tutti i tipi di binding), ed inietta tale Web Bean."
+
+#. Tag: para
+#: intro.xml:200
+#, no-c-format
+msgid "The following Web Bean has the binding type <literal>@CreditCard</literal> and implements the API type <literal>PaymentProcessor</literal>. It could therefore be injected to the example injection point:"
+msgstr "Il seguente Web Bean ha il tipo binding <literal>@CreditCard</literal> e implementa il tipo API <literal>PaymentProcessor</literal>. Può quindi essere iniettato nel punto di iniezione d'esempio:"
+
+#. Tag: programlisting
+#: intro.xml:204
+#, no-c-format
+msgid ""
+"<![CDATA[@CreditCard\n"
+"public class CreditCardPaymentProcessor \n"
+"    implements PaymentProcessor { ... }]]>"
+msgstr ""
+"<![CDATA[@CreditCard\n"
+"public class CreditCardPaymentProcessor \n"
+"    implements PaymentProcessor { ... }]]>"
+
+#. Tag: para
+#: intro.xml:206
+#, no-c-format
+msgid "If a Web Bean does not explicitly specify a set of binding types, it has exactly one binding type: the default binding type <literal>@Current</literal>."
+msgstr "Se un Web Bean non specifica esplicitamente un set di tipi di binding, ha esattamente un solo tipo di binding: il tipo di binding di default <literal>@Current</literal>."
+
+#. Tag: para
+#: intro.xml:209
+#, no-c-format
+msgid "Web Beans defines a sophisticated but intuitive <emphasis>resolution algorithm</emphasis> that helps the container decide what to do if there is more than one Web Bean that satisfies a particular contract. We'll get into the details in <xref linkend=\"injection\"/>."
+msgstr "Web Beans definisce un <emphasis>algoritmo di risoluzione</emphasis> sofisticato ma intuitivo che aiuta il container a decidere cosa fare se più di un Web Bean soddisfa un particolare contratto. Vedremo i dettagli in <xref linkend=\"injection\"/>."
+
+#. Tag: title
+#: intro.xml:217
+#, no-c-format
+msgid "Deployment types"
+msgstr "Tipi di deploy"
+
+#. Tag: para
+#: intro.xml:219
+#, no-c-format
+msgid "<emphasis>Deployment types</emphasis> let us classify our Web Beans by deployment scenario. A deployment type is an annotation that represents a particular deployment scenario, for example <literal>@Mock</literal>, <literal>@Staging</literal> or <literal>@AustralianTaxLaw</literal>. We apply the annotation to Web Beans which should be deployed in that scenario. A deployment type allows a whole set of Web Beans to be conditionally deployed, with a just single line of configuration."
+msgstr "<emphasis>I tipi di deploy</emphasis> consentono di classificare i Web Bean secondo uno scenario di deploy. Un tipo di deploy è un'annotazione che rappresenta un particolare scenario di deploy, per esempio <literal>@Mock</literal>, <literal>@Staging</literal> oppure <literal>@AustralianTaxLaw</literal>. Si applica l'annotazione ai Web Bean che dovrebbero essere deployati in tale scenario. Un tipo di deploy consente ad un intero set di Web Bean di essere deployati in modo condizionato, con una sola linea di configurazione."
+
+#. Tag: para
+#: intro.xml:226
+#, no-c-format
+msgid "Many Web Beans just use the default deployment type <literal>@Production</literal>, in which case no deployment type need be explicitly specified. All three Web Bean in our example have the deployment type <literal>@Production</literal>."
+msgstr "Molti Web Bean usano soltanto il tipo di deploy di default <literal>@Production</literal>, ed in questo caso non occorre specificare esplicitamente nessun tipo di deploy. Tutti e tre i Web Bean d'esempio hanno ul tipo di deploy <literal>@Production</literal>. "
+
+#. Tag: para
+#: intro.xml:230
+#, no-c-format
+msgid "In a testing environment, we might want to replace the <literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
+msgstr "In un ambiente di test è possibile sostituire il Web Bean <literal>SentenceTranslator</literal> con un \"oggetto mock\":"
+
+#. Tag: programlisting
+#: intro.xml:233
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock\n"
+"public class MockSentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) {\n"
+"        return \"Lorem ipsum dolor sit amet\";\n"
+"    }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Mock\n"
+"public class MockSentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) {\n"
+"        return \"Lorem ipsum dolor sit amet\";\n"
+"    }\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:236
+#, no-c-format
+msgid "We would enable the deployment type <literal>@Mock</literal> in our testing environment, to indicate that <literal>MockSentenceTranslator</literal> and any other Web Bean annotated <literal>@Mock</literal> should be used."
+msgstr "In ambiente di test si dovrebbe abilitare il tipo di deploy <literal>@Mock</literal> per indicare che l'uso di <literal>MockSentenceTranslator</literal> ed ogni altro Web Bean annotato con <literal>@Mock</literal>."
+
+#. Tag: para
+#: intro.xml:240
+#, no-c-format
+msgid "We'll talk more about this unique and powerful feature in <xref linkend=\"deploymenttypes\"/>."
+msgstr "Si discuterà questa potente funzionalità con maggior dettaglio in <xref linkend=\"deploymenttypes\"/>.\" "
+
+#. Tag: title
+#: intro.xml:246
+#, no-c-format
+msgid "Scope"
+msgstr "Scope"
+
+# arbitrary scope è corretto "scope arbitrari" ?
+#. Tag: para
+#: intro.xml:248
+#, no-c-format
+msgid "The <emphasis>scope</emphasis> defines the lifecycle and visibility of instances of the Web Bean. The Web Beans context model is extensible, accommodating arbitrary scopes. However, certain important scopes are built-in to the specification, and provided by the Web Bean manager. A scope is represented by an annotation type."
+msgstr "Lo <emphasis>scope</emphasis> definisce il ciclo di vita e la visibilità delle istanze di Web Bean. Il modello di contesto Web Bean è estensibile e facilita gli scope arbitrari. Comunque alcuni importanti scope sono predefiniti all'internodella specifica e vengono forniti dal manager Web Bean. Uno scope è rapresentato da un tipo di annotazione."
+
+#. Tag: para
+#: intro.xml:254
+#, no-c-format
+msgid "For example, any web application may have <emphasis>session scoped</emphasis> Web Beans:"
+msgstr "Per esempio un'applicazione web può avere Web Bean con <emphasis>scope di sessione</emphasis>"
+
+#. Tag: programlisting
+#: intro.xml:257
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:259
+#, no-c-format
+msgid "An instance of a session scoped Web Bean is bound to a user session and is shared by all requests that execute in the context of that session."
+msgstr "Un'istanza di un Web Bean con scope sessione è legato ad una sessione utente ed è condivisa da tutte le richieste che si eseguono nel contesto di tale sessione."
+
+#. Tag: para
+#: intro.xml:262
+#, no-c-format
+msgid "By default, Web Beans belong to a special scope called the <emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are pure dependent objects of the object into which they are injected, and their lifecycle is bound to the lifecycle of that object."
+msgstr "Di default i Web Bean appartengono ad uno speciale scope chiamato <emphasis>pseudo-scope dipendente</emphasis>. Web Bean con questo scope sono oggetti puri dipendenti dall'oggetto nel quale vengono iniettati ed il loro ciclo di vita è legato al ciclo di vita di tale oggetto."
+
+#. Tag: para
+#: intro.xml:267
+#, no-c-format
+msgid "We'll talk more about scopes in <xref linkend=\"scopescontexts\"/>."
+msgstr "Approfondiremo gli scope in <xref linkend=\"scopescontexts\"/>."
+
+#. Tag: title
+#: intro.xml:272
+#, no-c-format
+msgid "Web Bean names and Unified EL"
+msgstr "Nomi Web Bean e Unified EL"
+
+#. Tag: para
+#: intro.xml:274
+#, no-c-format
+msgid "A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in Unified EL expressions. It's easy to specify the name of a Web Bean:"
+msgstr "Un Web Bean può avere un <emphasis>nome</emphasis> che gli consente di essere usato in un'espressione Unified EL. E' facile specificare il nome del Web Bean:"
+
+#. Tag: programlisting
+#: intro.xml:278
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named(\"cart\")\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped @Named(\"cart\")\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:280
+#, no-c-format
+msgid "Now we can easily use the Web Bean in any JSF or JSP page:"
+msgstr "Ora si può facilmente utilizzare il Web Bean in ogni pagina JSF o JSP:"
+
+#. Tag: programlisting
+#: intro.xml:282
+#, no-c-format
+msgid ""
+"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
+"    ....\n"
+"</h:dataTable>]]>"
+msgstr ""
+"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
+"    ....\n"
+"</h:dataTable>]]>"
+
+#. Tag: para
+#: intro.xml:284
+#, no-c-format
+msgid "It's even easier to just let the name be defaulted by the Web Bean manager:"
+msgstr "Si può anche lasciare assegnare al manager Web Bean il nome di default:"
+
+#. Tag: programlisting
+#: intro.xml:287
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:289
+#, no-c-format
+msgid "In this case, the name defaults to <literal>shoppingCart</literal>&#151;the unqualified class name, with the first character changed to lowercase."
+msgstr "In questo caso il nome di default è <literal>shoppingCart</literal>&#151;il nome della classe non qualificata, con il primo carattere messo in minuscolo."
+
+#. Tag: title
+#: intro.xml:295
+#, no-c-format
+msgid "Interceptor binding types"
+msgstr "Tipi di interceptor binding"
+
+#. Tag: para
+#: intro.xml:297
+#, no-c-format
+msgid "Web Beans supports the interceptor functionality defined by EJB 3, not only for EJB beans, but also for plain Java classes. In addition, Web Beans provides a new approach to binding interceptors to EJB beans and other Web Beans."
+msgstr "Web Beans supporta la funzionalità di interceptor definita da EJB 3, non solo per i bean EJB, ma anche per classi Java semplici (plain). In aggiunta, Web Beans fornisce un nuovo approccio al binding di interceptor nei confronti di bean EJB e di altri Web Beans."
+
+#. Tag: para
+#: intro.xml:302
+#, no-c-format
+msgid "It remains possible to directly specify the interceptor class via use of the <literal>@Interceptors</literal> annotation:"
+msgstr "Rimane la possibilità di specificare direttamente la classe interceptor tramite l'uso dell'annotazione <literal>@Interceptors</literal>."
+
+#. Tag: programlisting
+#: intro.xml:305
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped \n"
+"@Interceptors(TransactionInterceptor.class)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped \n"
+"@Interceptors(TransactionInterceptor.class)\n"
+"public class ShoppingCart { ... }]]>"
+
+# indirect = ?
+#. Tag: para
+#: intro.xml:307
+#, no-c-format
+msgid "However, it is more elegant, and better practice, to indirect the interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
+msgstr "Comunque è più elegante ed è considerata una pratica migliore quella di giungere indirettamente ad un interceptor binding tramite un <emphasis>tipo di interceptor binding</emphasis>:"
+
+#. Tag: programlisting
+#: intro.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:313
+#, no-c-format
+msgid "We'll discuss Web Beans interceptors and decorators in <xref linkend=\"interceptors\"/> and <xref linkend=\"decorators\"/>."
+msgstr "Si discuteranno gli interceptor e i decoratori di Web BEans in <xref linkend=\"interceptors\"/> e <xref linkend=\"decorators\"/>."
+
+#. Tag: title
+#: intro.xml:321
+#, no-c-format
+msgid "What kinds of objects can be Web Beans?"
+msgstr "Quali tipi di oggetti possono essere Web Beans?"
+
+#. Tag: para
+#: intro.xml:323
+#, no-c-format
+msgid "We've already seen that JavaBeans, EJBs and some other Java classes can be Web Beans. But exactly what kinds of objects are Web Beans?"
+msgstr "Si è già visto che JavaBeans, EJB ed altri tipi di classi Java possono essere Web Bean. Ma esattamente quali tipi di oggetti sono Web Beans?"
+
+#. Tag: title
+#: intro.xml:327
+#, no-c-format
+msgid "Simple Web Beans"
+msgstr "Web Beans Semplici"
+
+#. Tag: para
+#: intro.xml:329
+#, no-c-format
+msgid "The Web Beans specification says that a concrete Java class is a <emphasis>simple</emphasis> Web Bean if:"
+msgstr "La specifica Web Beans dice che una classe concreta Java è un Web Bean <emphasis>semplice</emphasis> se:"
+
+#. Tag: para
+#: intro.xml:334
+#, no-c-format
+msgid "it is not an EE container-managed component, like an EJB, a Servlet or a JPA entity,"
+msgstr "Non è un componente gestito da un container EE, come EJB, un Servlet o un entity JPA,"
+
+#. Tag: para
+#: intro.xml:338
+#, no-c-format
+msgid "it is not a non-static static inner class,"
+msgstr "non è una classe interna statica/non statica,"
+
+#. Tag: para
+#: intro.xml:341
+#, no-c-format
+msgid "it is not a parameterized type, and"
+msgstr "non è un tipo parametrizzato, e"
+
+#. Tag: para
+#: intro.xml:344
+#, no-c-format
+msgid "it has a constructor with no parameters, or a constructor annotated <literal>@Initializer</literal>."
+msgstr "ha un costruttore senza parametro, o un costruttore annotato con <literal>@Initializer</literal>."
+
+#. Tag: para
+#: intro.xml:349
+#, no-c-format
+msgid "Thus, almost every JavaBean is a simple Web Bean."
+msgstr "Quindi quasi ogni JavaBean è un Web Bean semplice."
+
+#. Tag: para
+#: intro.xml:351
+#, no-c-format
+msgid "Every interface implemented directly or indirectly by a simple Web Bean is an API type of the simple Web Bean. The class and its superclasses are also API types."
+msgstr "Ogni interfaccia implementata direttamente o indirettamente da un Web Bean semplice è un tipo di API di un Web Bean semplice. La classe e le sue superclassi sono anch'essere tipi di API."
+
+#. Tag: title
+#: intro.xml:358
+#, no-c-format
+msgid "Enterprise Web Beans"
+msgstr "Web Bean Enterprise"
+
+#. Tag: para
+#: intro.xml:360
+#, no-c-format
+msgid "The specification says that all EJB 3-style session and singleton beans are <emphasis>enterprise</emphasis> Web Beans. Message driven beans are not Web Beans&#151;since they are not intended to be injected into other objects&#151;but they can take advantage of most of the functionality of Web Beans, including dependency injection and interceptors."
+msgstr "La specifica dice che tutti i bean di sessione stile EJB3 e quelli singleton sono Web Bean <emphasis>enterprise</emphasis>. I bean message driven non sono Web Bean&#151;poiché non sono intesi per essere iniettati in altri oggetti&#151;ma possono sfruttare la maggior parte della funzionalità dei Web Bean, inclusi dependency injection e interceptor."
+
+# bean class local view = ?
+#. Tag: para
+#: intro.xml:366
+#, no-c-format
+msgid "Every local interface of an enterprise Web Bean that does not have a wildcard type parameter or type variable, and every one of its superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean has a bean class local view, the bean class, and every one of its superclasses, is also an API type."
+msgstr "Ogni interfaccia locale di un Web Bean enterprise che non ha un parametro tipo wildcard o variabile tipo, e ciascuna delle sue superinterfacce, è un tipo di API del Web Bean enterprise. Se il bean EJB ha una vista locale di classe bean, la classe bean e ogni sua superclasse è anch'essa un tipo di API."
+
+#. Tag: para
+#: intro.xml:372
+#, no-c-format
+msgid "Stateful session beans should declare a remove method with no parameters or a remove method annotated <literal>@Destructor</literal>. The Web Bean manager calls this method to destroy the stateful session bean instance at the end of its lifecycle. This method is called the <emphasis>destructor</emphasis> method of the enterprise Web Bean."
+msgstr "I session bean stateful dovrebbero dichiarare un metodo remoto senza parametri od un metodo annotato con <literal>@Destructor</literal>. Il manager Web Bean chiama questo metodo per distruggere l'istanza del session bean statefull alla fine del suo ciclo di vita. Questo metodo è chiamato metodo <emphasis>distruttore</emphasis> del Web Bean enterprise."
+
+#. Tag: programlisting
+#: intro.xml:378
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful @SessionScoped\n"
+"public class ShoppingCart {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Stateful @SessionScoped\n"
+"public class ShoppingCart {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:380
+#, no-c-format
+msgid "So when should we use an enterprise Web Bean instead of a simple Web Bean? Well, whenever we need the advanced enterprise services offered by EJB, such as:"
+msgstr "Ma allora quando occorre usare un Web Bean enterprise invece di un Web Bean semplice? Quando occorrono servizi enterprise avanzati offerti da EJB, quali:"
+
+#. Tag: para
+#: intro.xml:387
+#, no-c-format
+msgid "method-level transaction management and security,"
+msgstr "gestione delle transazioni a livello di metodo e sicurezza,"
+
+#. Tag: para
+#: intro.xml:390
+#, no-c-format
+msgid "concurrency management,"
+msgstr "gestione della concorrenza,"
+
+#. Tag: para
+#: intro.xml:393
+#, no-c-format
+msgid "instance-level passivation for stateful session beans and instance-pooling for stateless session beans,"
+msgstr "passivazione a livello di istanza per session bean stateful e pooling di istanze per session bean stateless,"
+
+#. Tag: para
+#: intro.xml:397
+#, no-c-format
+msgid "remote and web service invocation, and"
+msgstr "invocazione remota e web service, e"
+
+#. Tag: para
+#: intro.xml:400
+#, no-c-format
+msgid "timers and asynchronous methods,"
+msgstr "timer e metodi asincroni,"
+
+#. Tag: para
+#: intro.xml:404
+#, no-c-format
+msgid "we should use an enterprise Web Bean. When we don't need any of these things, a simple Web Bean will serve just fine."
+msgstr "si dovrebbe usare un Web Bean enterprise. Quando non occorrono queste cose, va bene utilizzare un Web Bean semplice."
+
+#. Tag: para
+#: intro.xml:407
+#, no-c-format
+msgid "Many Web Beans (including any session or application scoped Web Bean) are available for concurrent access. Therefore, the concurrency management provided by EJB 3.1 is especially useful. Most session and application scoped Web Beans should be EJBs."
+msgstr "Molti Web Bean (inclusi Web Bean con scope di sessione o applicazione) sono disponibili per accessi concorrenti. Quindi la gestione della concorrenza fornita da EJB3.1 è molto utile. La maggior parte dei Web Bean con scope sessione e applicazione dovrebbero essere EJB."
+
+# internal state benefit =?
+#. Tag: para
+#: intro.xml:412
+#, no-c-format
+msgid "Web Beans which hold references to heavy-weight resources, or hold a lot of internal state benefit from the advanced container-managed lifecycle defined by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal> model, with its support for passivation and instance pooling."
+msgstr "Web Bean che mantengono riferimenti alle risorse pesanti o mantengono molti benefici dello stato interno dal ciclo di vita avanzato, gestito dal container, definito dal modello EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal>\", con supporto alla passivazione e pooling delle istanze."
+
+#. Tag: para
+#: intro.xml:417
+#, no-c-format
+msgid "Finally, it's usually obvious when method-level transaction management, method-level security, timers, remote methods or asynchronous methods are needed."
+msgstr "Infine è ovvio quando occorre usare la gestione delle transazioni a livello di metodo, la sicurezza a livello di metoto, i timer, i metodi remoti o i metodi asincroni."
+
+#. Tag: para
+#: intro.xml:420
+#, no-c-format
+msgid "It's usually easy to start with simple Web Bean, and then turn it into an EJB, just by adding an annotation: <literal>@Stateless</literal>, <literal>@Stateful</literal> or <literal>@Singleton</literal>."
+msgstr "E' facile iniziare con un Web Bean semplice e poi volgere a EJB semplicemente aggiungendo l'annotazione: <literal>@Stateless</literal>, <literal>@Stateful</literal> o <literal>@Singleton</literal>."
+
+#. Tag: title
+#: intro.xml:427
+#, no-c-format
+msgid "Producer methods"
+msgstr "Metodi produttori"
+
+#. Tag: para
+#: intro.xml:429
+#, no-c-format
+msgid "A <emphasis>producer method</emphasis> is a method that is called by the Web Bean manager to obtain an instance of the Web Bean when no instance exists in the current context. A producer method lets the application take full control of the instantiation process, instead of leaving instantiation to the Web Bean manager. For example:"
+msgstr "Un <emphasis>metodo produttore</emphasis> è un metodo che viene chiamato dal manager Web Bean per ottenere un'istanza di un Web Bean quando non esiste alcuna istanza nel contesto corrente. Un metodo produttore lascia all'applicazione il pieno controllo del processo di istanziamento, invece di lasciare l'istanziamento al manager Web Bean. Per esempio:"
+
+#. Tag: programlisting
+#: intro.xml:435
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"\n"
+"    private Random random = new Random( System.currentTimeMillis() );\n"
+"    \n"
+"    @Produces @Random int next() {\n"
+"        return random.nextInt(100);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"\n"
+"    private Random random = new Random( System.currentTimeMillis() );\n"
+"    \n"
+"    @Produces @Random int next() {\n"
+"        return random.nextInt(100);\n"
+"    }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:437
+#, no-c-format
+msgid "The result of a producer method is injected just like any other Web Bean."
+msgstr "Il risultato del metodo produttore è iniettato come qualsiasi altro Web Bean."
+
+#. Tag: programlisting
+#: intro.xml:439
+#, no-c-format
+msgid "<![CDATA[@Random int randomNumber]]>"
+msgstr "<![CDATA[@Random int randomNumber]]>"
+
+#. Tag: para
+#: intro.xml:441
+#, no-c-format
+msgid "The method return type and all interfaces it extends/implements directly or indirectly are API types of the producer method. If the return type is a class, all superclasses are also API types."
+msgstr "Il tipo di ritorno del metodo e tutte le interfacce che estende/implementa direttamente o indirettamente sono tipi di API del metodo produttore. Se il tipo di ritorno è una classe, tutte le superclassi sono anch'esse tipi di API."
+
+#. Tag: para
+#: intro.xml:445
+#, no-c-format
+msgid "Some producer methods return objects that require explicit destruction:"
+msgstr "Alcuni metodi produttori restituiscono oggetti che richiedono una distruzione esplicita:"
+
+#. Tag: programlisting
+#: intro.xml:447
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
+"    return createConnection( user.getId(), user.getPassword() );\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
+"    return createConnection( user.getId(), user.getPassword() );\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:449
+#, no-c-format
+msgid "These producer methods may define matching <emphasis>disposal methods</emphasis>:"
+msgstr "Questi metodi produttori possono definire corrispondenti <emphasis>metodi distruttori</emphasis>:\""
+
+#. Tag: programlisting
+#: intro.xml:451
+#, no-c-format
+msgid ""
+"<![CDATA[void close(@Disposes Connection connection) {\n"
+"    connection.close();\n"
+"}]]>"
+msgstr ""
+"<![CDATA[void close(@Disposes Connection connection) {\n"
+"    connection.close();\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:453
+#, no-c-format
+msgid "This disposal method is called automatically by the Web Bean manager at the end of the request."
+msgstr "Il metodo distruttore è chiamato direttamente dal manager Web Bean alla fine della richiesta."
+
+#. Tag: para
+#: intro.xml:456
+#, no-c-format
+msgid "We'll talk much more about producer methods in <xref linkend=\"producermethods\"/>."
+msgstr "Si parlerà in maggior dettaglio dei metodi produttori in <xref linkend=\"producermethods\"/>."
+
+#. Tag: title
+#: intro.xml:461
+#, no-c-format
+msgid "JMS endpoints"
+msgstr "Endpoint JMS"
+
+#. Tag: para
+#: intro.xml:463
+#, no-c-format
+msgid "Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the developer from the tedium of managing the lifecycles of all the various JMS objects required to send messages to queues and topics. We'll discuss JMS endpoints in <xref linkend=\"jms\"/>."
+msgstr "Infine una coda od un topic JMS possono essere Web Bean. Web Beans solleva lo sviluppatore dalla noia della gestione dei cicli di vita di tutti i vari oggetti JMS richiesto per inviare messaggi a code o topic. Si discuteranno gli endpoint JMS in <xref linkend=\"jms\"/>."
+


Property changes on: doc/trunk/reference/it-IT/intro.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Deleted: doc/trunk/reference/it-IT/modules/Book_Info.po
===================================================================
--- doc/trunk/reference/it-IT/modules/Book_Info.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/Book_Info.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,51 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:29+0000\n"
-"PO-Revision-Date: 2008-12-20 00:05+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: Book_Info.xml:6
-#, no-c-format
-msgid "Introduction to Web Beans"
-msgstr "Introduzione a Web Beans"
-
-#. Tag: subtitle
-#: Book_Info.xml:7
-#, no-c-format
-msgid "The new Java standard for dependency injection and contextual state management"
-msgstr "Il nuovo standard Java per la dependency injection e la gestione contestuale dello stato"
-
-#. Tag: author
-#: Book_Info.xml:10
-#, no-c-format
-msgid "<firstname>Gavin</firstname> <surname>King</surname>"
-msgstr "<firstname>Gavin</firstname> <surname>King</surname>"
-
-#. Tag: affiliation
-#: Book_Info.xml:13
-#, no-c-format
-msgid "<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red Hat Middleware LLC</orgname>"
-msgstr "<jobtitle>Responsabile della specifica di Web Beans (JSR-299)</jobtitle> <orgname>Red Hat Middleware LLC</orgname>"
-
-#. Tag: author
-#: Book_Info.xml:19
-#, no-c-format
-msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
-msgstr "<firstname>Pete</firstname> <surname>Muir</surname>"
-
-#. Tag: affiliation
-#: Book_Info.xml:22
-#, no-c-format
-msgid "<jobtitle>Web Beans (JSR-299) Reference Implementation lead</jobtitle> <orgname>Red Hat Middleware LLC</orgname>"
-msgstr "<jobtitle>Responsabile per l'implementazione della documentazione Web Beans (JSR-299)</jobtitle> <orgname>Red Hat Middleware LLC</orgname>"
-

Deleted: doc/trunk/reference/it-IT/modules/decorators.po
===================================================================
--- doc/trunk/reference/it-IT/modules/decorators.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/decorators.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,239 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-20 13:48+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: decorators.xml:4
-#, no-c-format
-msgid "Decorators"
-msgstr "Decoratori"
-
-#. Tag: para
-#: decorators.xml:6
-#, no-c-format
-msgid "Interceptors are a powerful way to capture and separate concerns which are <emphasis>orthogonal</emphasis> to the type system. Any interceptor is able to intercept invocations of any Java type. This makes them perfect for solving technical concerns such as transaction management and security. However, by nature, interceptors are unaware of the actual semantics of the events they intercept. Thus, interceptors aren't an appropriate tool for separating business-related concerns."
-msgstr "Gli interceptor sono un potente modo per catturare e separare i concern (N.d.T. un concern è un particulare concetto o area di interesse) che sono <emphasis>orthogonal</emphasis> al sistema tipo. Qualsiasi interceptor è capace di intercettare le invocazioni di qualsiasi tipo Java. Questo li rende perfetti per risolvere concern tecnici quali gestione delle transazioni e la sicurezza. Comunque, per natura, gli interceptor non sono consapevoli dell'attuale semantica degli eventi che intercettano. Quindi gli interceptor non sono il giusto strumento per separare i concern di tipo business."
-
-# ...concerns that cut across many disparate types = ?
-#. Tag: para
-#: decorators.xml:14
-#, no-c-format
-msgid "The reverse is true of <emphasis>decorators</emphasis>. A decorator intercepts invocations only for a certain Java interface, and is therefore aware of all the semantics attached to that interface. This makes decorators a perfect tool for modeling some kinds of business concerns. It also means that a decorator doesn't have the generality of an interceptor. Decorators aren't able to solve technical concerns that cut across many disparate types."
-msgstr "Il contrario è vero per i <emphasis>decoratori</emphasis>. Un decoratore intercetta le invocazioni solamente per una certa interfaccia Java, e quindi è consapevole della semantica legata a questa. Ciò rende i decoratori uno strumento perfetto per modellare alcuni tipi di concern di business. E significa pure che un decoratore non ha la generalità di un interceptor. I decoratori non sono capaci di risolvere i concern tecnici che agiscono per diversi tipi."
-
-#. Tag: para
-#: decorators.xml:22
-#, no-c-format
-msgid "Suppose we have an interface that represents accounts:"
-msgstr "Supponiamo di avere un'interfaccia che rappresenti degli account:"
-
-#. Tag: programlisting
-#: decorators.xml:24
-#, no-c-format
-msgid ""
-"<![CDATA[public interface Account {\n"
-"    public BigDecimal getBalance();\n"
-"    public User getOwner();\n"
-"    public void withdraw(BigDecimal amount);\n"
-"    public void deposit(BigDecimal amount);\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public interface Account {\n"
-"    public BigDecimal getBalance();\n"
-"    public User getOwner();\n"
-"    public void withdraw(BigDecimal amount);\n"
-"    public void deposit(BigDecimal amount);\n"
-"}]]>"
-
-#. Tag: para
-#: decorators.xml:26
-#, no-c-format
-msgid "Several different Web Beans in our system implement the <literal>Account</literal> interface. However, we have a common legal requirement that, for any kind of account, large transactions must be recorded by the system in a special log. This is a perfect job for a decorator."
-msgstr "Parecchi Web Beans del nostro sistema implementano l'interfaccia <literal>Account</literal>. Abbiamo come comune requisito legale, per ogni tipo di account, che le transazioni lunghe vengano registrate dal sistema in uno speciale log. Questo è un lavoro perfetto per un decoratore."
-
-#. Tag: para
-#: decorators.xml:32
-#, no-c-format
-msgid "A decorator is a simple Web Bean that implements the type it decorates and is annotated <literal>@Decorator</literal>."
-msgstr "Un decorator è un semplice Web Beans che implementa il tipo che decora ed è annotato con <literal>@Decorator</literal>.\""
-
-#. Tag: programlisting
-#: decorators.xml:35
-#, no-c-format
-msgid ""
-"<![CDATA[@Decorator\n"
-"public abstract class LargeTransactionDecorator \n"
-"        implements Account {\n"
-"    \n"
-"    @Decorates Account account;\n"
-"    \n"
-"    @PersistenceContext EntityManager em;\n"
-"    \n"
-"    public void withdraw(BigDecimal amount) {\n"
-"        account.withdraw(amount);\n"
-"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
-"            em.persist( new LoggedWithdrawl(amount) );\n"
-"        }\n"
-"    }\n"
-"    \n"
-"    public void deposit(BigDecimal amount);\n"
-"        account.deposit(amount);\n"
-"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
-"            em.persist( new LoggedDeposit(amount) );\n"
-"        }\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Decorator\n"
-"public abstract class LargeTransactionDecorator \n"
-"        implements Account {\n"
-"    \n"
-"    @Decorates Account account;\n"
-"    \n"
-"    @PersistenceContext EntityManager em;\n"
-"    \n"
-"    public void withdraw(BigDecimal amount) {\n"
-"        account.withdraw(amount);\n"
-"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
-"            em.persist( new LoggedWithdrawl(amount) );\n"
-"        }\n"
-"    }\n"
-"    \n"
-"    public void deposit(BigDecimal amount);\n"
-"        account.deposit(amount);\n"
-"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
-"            em.persist( new LoggedDeposit(amount) );\n"
-"        }\n"
-"    }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: decorators.xml:37
-#, no-c-format
-msgid "Unlike other simple Web Beans, a decorator may be an abstract class. If there's nothing special the decorator needs to do for a particular method of the decorated interface, you don't need to implement that method."
-msgstr "Diversamente dai semplici Web Beans, un decoratore può essere una classe astratta. Se un decoratore non ha niente da fare per un particolare metodo, allora non occorre implementare quel metodo."
-
-#. Tag: title
-#: decorators.xml:43
-#, no-c-format
-msgid "Delegate attributes"
-msgstr "Attributi delegate"
-
-#. Tag: para
-#: decorators.xml:45
-#, no-c-format
-msgid "All decorators have a <emphasis>delegate attribute</emphasis>. The type and binding types of the delegate attribute determine which Web Beans the decorator is bound to. The delegate attribute type must implement or extend all interfaces implemented by the decorator."
-msgstr "Tutti i decoratori hanno un <emphasis>attributo delegato</emphasis>. Il tipo ed i tipi di binding dell'attributo delegato determinano a quali Web Beans è legato il decoratore. Il tipo di attributo delegato deve implementare o estendere tutte le interfacce implementate dal decoratore."
-
-#. Tag: para
-#: decorators.xml:50
-#, no-c-format
-msgid "This delegate attribute specifies that the decorator is bound to all Web Beans that implement <literal>Account</literal>:"
-msgstr "Quest'attributo delegate specifica che ildecorator è legao a tutti i Web Beans che implementano <literal>Account</literal>:"
-
-#. Tag: programlisting
-#: decorators.xml:53
-#, no-c-format
-msgid "<![CDATA[@Decorates Account account;]]>"
-msgstr "<![CDATA[@Decorates Account account;]]>"
-
-# E' corretto tradurre BOUND con LEGATO in questo particolare contesto?
-# ....rivedere alcune frasi sopra.
-#. Tag: para
-#: decorators.xml:55
-#, no-c-format
-msgid "A delegate attribute may specify a binding annotation. Then the decorator will only be bound to Web Beans with the same binding."
-msgstr "Un attributo delegato può specificare un'annotazione di binding. E quindi il decoratore verrà associato a Web Beans con lo stesso binding."
-
-#. Tag: programlisting
-#: decorators.xml:58
-#, no-c-format
-msgid "<![CDATA[@Decorates @Foreign Account account;]]>"
-msgstr "<![CDATA[@Decorates @Foreign Account account;]]>"
-
-#. Tag: para
-#: decorators.xml:60
-#, no-c-format
-msgid "A decorator is bound to any Web Bean which:"
-msgstr "Un decorator è legato ad un qualsiasi Web Bean che:"
-
-#. Tag: para
-#: decorators.xml:64
-#, no-c-format
-msgid "has the type of the delegate attribute as an API type, and"
-msgstr "ha il tipo di attributo delegate come un tipo API, e"
-
-#. Tag: para
-#: decorators.xml:67
-#, no-c-format
-msgid "has all binding types that are declared by the delegate attribute."
-msgstr "ha tutti i tipi di binding che sono dichiarati dall'attributo delegate."
-
-#. Tag: para
-#: decorators.xml:71
-#, no-c-format
-msgid "The decorator may invoke the delegate attribute, which has much the same effect as calling <literal>InvocationContext.proceed()</literal> from an interceptor."
-msgstr "Il decoratore può invocare l'attributo delegate, il ché ha lo stesso effetto come chiamare <literal>InvocationContext.proceed()</literal> da un interceptor."
-
-#. Tag: title
-#: decorators.xml:78
-#, no-c-format
-msgid "Enabling decorators"
-msgstr "Abilitare i decoratori"
-
-#. Tag: para
-#: decorators.xml:80
-#, no-c-format
-msgid "We need to <emphasis>enable</emphasis> our decorator in <literal>web-beans.xml</literal>."
-msgstr "Occorre <emphasis>abilitare</emphasis> il decoratore in <literal>web-beans.xml</literal>."
-
-#. Tag: programlisting
-#: decorators.xml:83
-#, no-c-format
-msgid ""
-"<![CDATA[<Decorators>\n"
-"    <myapp:LargeTransactionDecorator/>\n"
-"</Decorators>]]>"
-msgstr ""
-"<![CDATA[<Decorators>\n"
-"    <myapp:LargeTransactionDecorator/>\n"
-"</Decorators>]]>"
-
-# Rivedere la frase?
-#. Tag: para
-#: decorators.xml:85
-#, no-c-format
-msgid "This declaration serves the same purpose for decorators that the <literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:"
-msgstr "Per i decoratori questa dichiarazione provvede alle stesse finalità di quanto la dichiarazione <literal>&lt;Interceptors&gt;</literal> fa per gli interceptor."
-
-#. Tag: para
-#: decorators.xml:90
-#, no-c-format
-msgid "it enables us to specify a total ordering for all decorators in our system, ensuring deterministic behavior, and"
-msgstr "Consente di specificare un ordinamento totale per tutti i decoratori del sistema, assicurando un comportamento deterministico, e"
-
-#. Tag: para
-#: decorators.xml:94
-#, no-c-format
-msgid "it lets us enable or disable decorator classes at deployment time."
-msgstr "consente di abilitare o disabilitare le classi decorato durante la fase di deploy."
-
-#. Tag: para
-#: decorators.xml:98
-#, no-c-format
-msgid "Interceptors for a method are called before decorators that apply to that method."
-msgstr "Gli interceptor per un metodo sono chiamati prima dei decoratori che vengono applicati a tali metodo."
-

Deleted: doc/trunk/reference/it-IT/modules/ee.po
===================================================================
--- doc/trunk/reference/it-IT/modules/ee.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/ee.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,473 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:08+0000\n"
-"PO-Revision-Date: 2008-12-20 13:47+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: ee.xml:4
-#, no-c-format
-msgid "Java EE integration"
-msgstr "Integrazione Java EE"
-
-#. Tag: para
-#: ee.xml:6
-#, no-c-format
-msgid ""
-"Web Beans is fully integrated into the Java EE environment. Web Beans have "
-"access to Java EE resources and JPA persistence contexts. They may be used "
-"in Unified EL expressions in JSF and JSP pages. They may even be injected "
-"into some objects, such as Servlets and Message-Driven Beans, which are not "
-"Web Beans."
-msgstr ""
-"Web Beans è pienamente integrata nell'ambiente Java EE. Web Beans ha accesso "
-"alle risorse Java EE ed ai contesti di persistenza JPA. I Web Beans possono "
-"essere usati in espressioni Unified EL dentro pagine JSF e JSP. Possono "
-"anche essere iniettati negli oggetti, come Servlet e Message-Driven Beans, "
-"che non sono Web Beans."
-
-#. Tag: title
-#: ee.xml:12
-#, no-c-format
-msgid "Injecting Java EE resources into a Web Bean"
-msgstr "Iniettare risorse Java EE in un Web Bean"
-
-#. Tag: para
-#: ee.xml:14
-#, no-c-format
-msgid ""
-"All simple and enterprise Web Beans may take advantage of Java EE dependency "
-"injection using <literal>@Resource</literal>, <literal>@EJB</literal> and "
-"<literal>@PersistenceContext</literal>. We've already seen a couple of "
-"examples of this, though we didn't pay much attention at the time:"
-msgstr ""
-"Tutti i Web Beans sia semplici che enterprise si avvantaggiano della "
-"dependency injection di Java EE usando <literal>@Resource</literal>, "
-"<literal>@EJB</literal> e <literal>@PersistenceContext</literal>. Abbiamo "
-"già visto un paio di esempi a riguardo, sebbene non ci siamo soffermati "
-"molto a suo tempo."
-
-#. Tag: programlisting
-#: ee.xml:19
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"\n"
-"    @Resource Transaction transaction;\n"
-"\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
-"{ ... }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"\n"
-"    @Resource Transaction transaction;\n"
-"\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
-"{ ... }\n"
-"    \n"
-"}]]>"
-
-#. Tag: programlisting
-#: ee.xml:21
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped\n"
-"public class Login {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @PersistenceContext EntityManager userDatabase;\n"
-"    \n"
-"    ...\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@SessionScoped\n"
-"public class Login {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @PersistenceContext EntityManager userDatabase;\n"
-"    \n"
-"    ...\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: ee.xml:23
-#, no-c-format
-msgid ""
-"The Java EE <literal>@PostConstruct</literal> and <literal>@PreDestroy</"
-"literal> callbacks are also supported for all simple and enterprise Web "
-"Beans. The <literal>@PostConstruct</literal> method is called after "
-"<emphasis>all</emphasis> injection has been performed."
-msgstr ""
-"Le chiamate Java EE <literal>@PostConstruct</literal> e "
-"<literal>@PreDestroy</literal> vengono anche supportate per tutti i Web "
-"Beans (semplici e enterprise). Il metodo <literal>@PostConstruct</literal> "
-"viene chiamato dopo che <emphasis>tutta</emphasis> l'injection è stata "
-"eseguita."
-
-#. Tag: para
-#: ee.xml:28
-#, no-c-format
-msgid ""
-"There is one restriction to be aware of here: <literal>@PersistenceContext"
-"(type=EXTENDED)</literal> is not supported for simple Web Beans."
-msgstr ""
-"C'è una restrizione di cui essere informati: <literal>@PersistenceContext"
-"(type=EXTENDED)</literal> non è supportato per i Web Beans semplici."
-
-#. Tag: title
-#: ee.xml:35
-#, no-c-format
-msgid "Calling a Web Bean from a Servlet"
-msgstr "Chiamare un Web Bean da un servlet"
-
-#. Tag: para
-#: ee.xml:37
-#, no-c-format
-msgid ""
-"It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject the "
-"Web Bean using Web Beans field or initializer method injection."
-msgstr ""
-"E' facile utilizzare i Web Beans da un Servlet in Java EE 6. Semplicemente "
-"si inietti il Web Bean utilizzando l'injection del campo Web Bean o del "
-"metodo inizializzatore."
-
-#. Tag: programlisting
-#: ee.xml:40
-#, no-c-format
-msgid ""
-"public class Login extends HttpServlet {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @Current Login login;\n"
-"\n"
-"    @Override\n"
-"    public void service(HttpServletRequest request, HttpServletResponse "
-"response)\n"
-"        throws ServletException, IOException {\n"
-"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
-"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
-"        login.login();\n"
-"        if ( login.isLoggedIn() ) {\n"
-"            response.sendRedirect(\"/home.jsp\");\n"
-"        }\n"
-"        else {\n"
-"            response.sendRedirect(\"/loginError.jsp\");\n"
-"        }\n"
-"    }\n"
-"            \n"
-"}"
-msgstr ""
-"public class Login extends HttpServlet {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @Current Login login;\n"
-"\n"
-"    @Override\n"
-"    public void service(HttpServletRequest request, HttpServletResponse "
-"response)\n"
-"        throws ServletException, IOException {\n"
-"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
-"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
-"        login.login();\n"
-"        if ( login.isLoggedIn() ) {\n"
-"            response.sendRedirect(\"/home.jsp\");\n"
-"        }\n"
-"        else {\n"
-"            response.sendRedirect(\"/loginError.jsp\");\n"
-"        }\n"
-"    }\n"
-"            \n"
-"}"
-
-#. Tag: para
-#: ee.xml:42
-#, no-c-format
-msgid ""
-"The Web Beans client proxy takes care of routing method invocations from the "
-"Servlet to the correct instances of <literal>Credentials</literal> and "
-"<literal>Login</literal> for the current request and HTTP session."
-msgstr ""
-"Il client proxy Web Beans si occupa di instradare le invocazioni dei metodi "
-"da un Servlet alle corrette istanze di <literal>Credentials</literal> e "
-"<literal>Login</literal> per la richiesta corrente e la sessione HTTP."
-
-#. Tag: title
-#: ee.xml:49
-#, no-c-format
-msgid "Calling a Web Bean from a Message-Driven Bean"
-msgstr "Chiamare un Web Bean da un Message-Driven Bean"
-
-#. Tag: para
-#: ee.xml:51
-#, no-c-format
-msgid ""
-"Web Beans injection applies to all EJBs, even when they aren't under the "
-"control of the Web Bean manager (if they were obtained by direct JNDI "
-"lookup, or injection using <literal>@EJB</literal>, for example. In "
-"particular, you can use Web Beans injection in Message-Driven Beans, which "
-"are not considered Web Beans because you can't inject them."
-msgstr ""
-"L'injection dei Web Beans si applica a tutti gli EJB3, perfino quando non "
-"sono sotto il controllo del manager Web Bean (per esempio se sono stati "
-"ottenuti da ricerca JNDI diretta, o injection usando <literal>@EJB</"
-"literal>) In particolaresi può usare l'injection di Web Beans nei Message-"
-"Driven Beans, che non sono considerati Web Beans poiché non possono essere "
-"iniettati."
-
-# Web Beans interceptor bindings =?
-#. Tag: para
-#: ee.xml:57
-#, no-c-format
-msgid ""
-"You can even use Web Beans interceptor bindings for Message-Driven Beans."
-msgstr ""
-"Si possono perfino associare degli interceptor Web Beans ai Message-Driven "
-"Beans."
-
-#. Tag: programlisting
-#: ee.xml:59
-#, no-c-format
-msgid ""
-"@Transactional @MessageDriven\n"
-"public class ProcessOrder implements MessageListener {\n"
-"\n"
-"    @Current Inventory inventory;\n"
-"    @PersistenceContext EntityManager em;\n"
-"\n"
-"    public void onMessage(Message message) {\n"
-"        ...\n"
-"    }\n"
-"            \n"
-"}"
-msgstr ""
-"@Transactional @MessageDriven\n"
-"public class ProcessOrder implements MessageListener {\n"
-"\n"
-"    @Current Inventory inventory;\n"
-"    @PersistenceContext EntityManager em;\n"
-"\n"
-"    public void onMessage(Message message) {\n"
-"        ...\n"
-"    }\n"
-"            \n"
-"}"
-
-#. Tag: para
-#: ee.xml:61
-#, no-c-format
-msgid ""
-"Thus, receiving messages is super-easy in a Web Beans environment. But "
-"beware that there is no session or conversation context available when a "
-"message is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</"
-"literal> and <literal>@ApplicationScoped</literal> Web Beans are available."
-msgstr ""
-"Quindi ricevere i messaggi è veramente facile in ambiente Web Beans. Ma "
-"attenzione che non è disponibile alcun contesto di sessione o conversazione "
-"quando il messaggio viene consegnato al Message-Driven Bean. Solamente i Web "
-"Beans <literal>@RequestScoped</literal> and <literal>@ApplicationScoped</"
-"literal> sono disponibili."
-
-#. Tag: para
-#: ee.xml:66
-#, no-c-format
-msgid "It's also easy to send messages using Web Beans."
-msgstr "E' anche molto facile spedire messaggi usando Web Beans."
-
-#. Tag: title
-#: ee.xml:71
-#, no-c-format
-msgid "JMS endpoints"
-msgstr "Endpoint JMS"
-
-#. Tag: para
-#: ee.xml:73
-#, no-c-format
-msgid ""
-"Sending messages using JMS can be quite complex, because of the number of "
-"different objects you need to deal with. For queues we have <literal>Queue</"
-"literal>, <literal>QueueConnectionFactory</literal>, "
-"<literal>QueueConnection</literal>, <literal>QueueSession</literal> and "
-"<literal>QueueSender</literal>. For topics we have <literal>Topic</literal>, "
-"<literal>TopicConnectionFactory</literal>, <literal>TopicConnection</"
-"literal>, <literal>TopicSession</literal> and <literal>TopicPublisher</"
-"literal>. Each of these objects has its own lifecycle and threading model "
-"that we need to worry about."
-msgstr ""
-"La spedizione dei messaggi usando JMS può essere abbastanza complessa, a "
-"causa del numero di oggetti differenti da trattare. Per le code si hanno "
-"<literal>Queue</literal>, <literal>QueueConnectionFactory</literal>, "
-"<literal>QueueConnection</literal>, <literal>QueueSession</literal> e "
-"<literal>QueueSender</literal>. Per i topic si hanno <literal>Topic</"
-"literal>, <literal>TopicConnectionFactory</literal>, "
-"<literal>TopicConnection</literal>, <literal>TopicSession</literal> e "
-"<literal>TopicPublisher</literal>. Ciascuno di questi oggetti ha il proprio "
-"ciclo di vita e modello di thread di cui bisogna (pre)occuparsi."
-
-#. Tag: para
-#: ee.xml:82
-#, no-c-format
-msgid ""
-"Web Beans takes care of all this for us. All we need to do is declare the "
-"queue or topic in <literal>web-beans.xml</literal>, specifying an associated "
-"binding type and connection factory."
-msgstr ""
-"I Web Beans si prendono cura di tutto questo per noi. Tutto ciò che occorre "
-"fare è dichiarare la coda od il topic in <literal>web-beans.xml</literal>, "
-"specificando un "
-
-#. Tag: programlisting
-#: ee.xml:86
-#, no-c-format
-msgid ""
-"<![CDATA[<Queue>\n"
-"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
-"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
-"connectionFactory>\n"
-"    <myapp:OrderProcessor/>    \n"
-"</Queue>]]>"
-msgstr ""
-"<![CDATA[<Queue>\n"
-"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
-"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
-"connectionFactory>\n"
-"    <myapp:OrderProcessor/>    \n"
-"</Queue>]]>"
-
-#. Tag: programlisting
-#: ee.xml:88
-#, no-c-format
-msgid ""
-"<![CDATA[<Topic>\n"
-"    <destination>java:comp/env/jms/StockPrices</destination>\n"
-"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
-"connectionFactory>\n"
-"    <myapp:StockPrices/>    \n"
-"</Topic>]]>"
-msgstr ""
-"<![CDATA[<Topic>\n"
-"    <destination>java:comp/env/jms/StockPrices</destination>\n"
-"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
-"connectionFactory>\n"
-"    <myapp:StockPrices/>    \n"
-"</Topic>]]>"
-
-#. Tag: para
-#: ee.xml:90
-#, no-c-format
-msgid ""
-"Now we can just inject the <literal>Queue</literal>, "
-"<literal>QueueConnection</literal>, <literal>QueueSession</literal> or "
-"<literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, "
-"<literal>TopicConnection</literal>, <literal>TopicSession</literal> or "
-"<literal>TopicPublisher</literal> for a topic."
-msgstr ""
-"Ora è possibile iniettare <literal>Queue</literal>, "
-"<literal>QueueConnection</literal>, <literal>QueueSession</literal> o "
-"<literal>QueueSender</literal> per una coda, oppure <literal>Topic</"
-"literal>, <literal>TopicConnection</literal>, <literal>TopicSession</"
-"literal> o <literal>TopicPublisher</literal> per un topic."
-
-#. Tag: programlisting
-#: ee.xml:96
-#, no-c-format
-msgid ""
-"@OrderProcessor QueueSender orderSender;\n"
-"@OrderProcessor QueueSession orderSession;\n"
-"\n"
-"public void sendMessage() {\n"
-"    MapMessage msg = orderSession.createMapMessage();\n"
-"    ...\n"
-"    orderSender.send(msg);\n"
-"}"
-msgstr ""
-"@OrderProcessor QueueSender orderSender;\n"
-"@OrderProcessor QueueSession orderSession;\n"
-"\n"
-"public void sendMessage() {\n"
-"    MapMessage msg = orderSession.createMapMessage();\n"
-"    ...\n"
-"    orderSender.send(msg);\n"
-"}"
-
-#. Tag: programlisting
-#: ee.xml:98
-#, no-c-format
-msgid ""
-"@StockPrices TopicPublisher pricePublisher;\n"
-"@StockPrices TopicSession priceSession;\n"
-"\n"
-"public void sendMessage(String price) {\n"
-"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
-"}"
-msgstr ""
-"@StockPrices TopicPublisher pricePublisher;\n"
-"@StockPrices TopicSession priceSession;\n"
-"\n"
-"public void sendMessage(String price) {\n"
-"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
-"}"
-
-#. Tag: para
-#: ee.xml:100
-#, fuzzy, no-c-format
-msgid ""
-"The lifecycle of the injected JMS objects is completely controlled by the "
-"Web Bean manager."
-msgstr ""
-"Il ciclo di vita degli oggetti JMS iniettati è interamente controllato dal "
-"manager Web Bean."
-
-#. Tag: title
-#: ee.xml:106
-#, no-c-format
-msgid "Packaging and deployment"
-msgstr "Packaging and deployment"
-
-#. Tag: para
-#: ee.xml:108
-#, no-c-format
-msgid ""
-"Web Beans doesn't define any special deployment archive. You can package Web "
-"Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the "
-"application classpath. However, each archive that contains Web Beans must "
-"include a file named <literal>web-beans.xml</literal> in the <literal>META-"
-"INF</literal> or <literal>WEB-INF</literal> directory. The file may be "
-"empty. Web Beans deployed in archives that do not have a <literal>web-beans."
-"xml</literal> file will not be available for use in the application."
-msgstr ""
-"Web Beans non definisce nessuno archivio speciale per il deploy. Si può "
-"impacchettare i Web Beans in JAR, EJB-JAR o WAR&#151;qualsiasi locazione di "
-"deploy nel classpath dell'applicazione. Comunque ciascun archivio che "
-"contiene Web Beans devi includere un file chiamato <literal>web-beans.xml</"
-"literal> nella directory <literal>META-INF</literal> o <literal>WEB-INF</"
-"literal>. Il file può essere vuoto. I Web Beans collocati negli archivi che "
-"non hanno un file <literal>web-beans.xml</literal> non saranno disponibili "
-"per l'uso nell'applicazione."
-
-#. Tag: para
-#: ee.xml:116
-#, no-c-format
-msgid ""
-"For Java SE execution, Web Beans may be deployed in any location in which "
-"EJBs may be deployed for execution by the embeddable EJB Lite container. "
-"Again, each location must contain a <literal>web-beans.xml</literal> file."
-msgstr ""
-"Per l'esecuzione in Java SE, Web Beans può essere deployato in un qualsiasi "
-"posto nel quale gli EJB siano stati messi per essere eseguito da un "
-"embeddable EJB Lite container.  Di nuovo ogni locazioni deve contenere un "
-"file <literal>web-beans.xml</literal>."

Deleted: doc/trunk/reference/it-IT/modules/events.po
===================================================================
--- doc/trunk/reference/it-IT/modules/events.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/events.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,593 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-25 13:41+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: events.xml:4
-#, no-c-format
-msgid "Events"
-msgstr "Eventi"
-
-#. Tag: para
-#: events.xml:6
-#, no-c-format
-msgid "The Web Beans event notification facility allows Web Beans to interact in a totally decoupled manner. Event <emphasis>producers</emphasis> raise events that are then delivered to event <emphasis>observers</emphasis> by the Web Bean manager. This basic schema might sound like the familiar observer/observable pattern, but there are a couple of twists:"
-msgstr "Il sistema di notifica a eventi di Web Beans consente a Web Beans di interagire in maniera totalmente disaccoppiata. I <emphasis>produttori</emphasis> di eventi sollevano eventi che vengono consegnati agli <emphasis>osservatori</emphasis> di eventi tramite il manager Web Bean. Lo schema base può suonare simile al familiare pattern observer/observable, ma ci sono un paio di differenze:"
-
-#. Tag: para
-#: events.xml:14
-#, no-c-format
-msgid "not only are event producers decoupled from observers; observers are completely decoupled from producers,"
-msgstr "non solo i produttori di eventi sono disaccoppiati dagli osservatori; gli osservatori sono completamente disaccoppiati dai produttori,"
-
-#. Tag: para
-#: events.xml:18
-#, no-c-format
-msgid "observers can specify a combination of \"selectors\" to narrow the set of event notifications they will receive, and"
-msgstr "gli osservatori possono specificare una combinazione di \"selettori\" per restringere il set di notifiche di eventi da ricevere, e"
-
-#. Tag: para
-#: events.xml:22
-#, no-c-format
-msgid "observers can be notified immediately, or can specify that delivery of the event should be delayed until the end of the current transaction"
-msgstr "gli osservatori possono essere notificati immediatamente, o possono specificare che la consegna degli eventi venga ritardata fino alla fine della transazione conrrente"
-
-#. Tag: title
-#: events.xml:28
-#, no-c-format
-msgid "Event observers"
-msgstr "Osservatori di eventi"
-
-#. Tag: para
-#: events.xml:30
-#, no-c-format
-msgid "An <emphasis>observer method</emphasis> is a method of a Web Bean with a parameter annotated <literal>@Observes</literal>."
-msgstr "Un <emphasis>metodo osservatore</emphasis> è un metodo di un Web Bean con un parametro annotato <literal>@Observes</literal>."
-
-#. Tag: programlisting
-#: events.xml:33
-#, no-c-format
-msgid "<![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }]]>"
-msgstr "<![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }]]>"
-
-#. Tag: para
-#: events.xml:35
-#, no-c-format
-msgid "The annotated parameter is called the <emphasis>event parameter</emphasis>. The type of the event parameter is the observed <emphasis>event type</emphasis>. Observer methods may also specify \"selectors\", which are just instances of Web Beans binding types. When a binding type is used as an event selector, it is called an <emphasis>event binding type</emphasis>."
-msgstr "Il parametro annotato viene chiamato <emphasis>parametro evento</emphasis>. Il tipo di parametro evento è il <emphasis>tipo evento</emphasis> osservato. I metodi osservatori possono anche specificare dei \"selettori\", che sono solo istanze di tipi di binding di Web Beans. Quando un tipo di binding viene usato come selettore di eventi viene chiamato <emphasis>tipo binding di evento</emphasis>. "
-
-#. Tag: programlisting
-#: events.xml:41
-#, no-c-format
-msgid ""
-"<![CDATA[@BindingType\n"
-"@Target({PARAMETER, FIELD})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Updated { ... }]]>"
-msgstr ""
-"<![CDATA[@BindingType\n"
-"@Target({PARAMETER, FIELD})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Updated { ... }]]>"
-
-#. Tag: para
-#: events.xml:43
-#, no-c-format
-msgid "We specify the event bindings of the observer method by annotating the event parameter:"
-msgstr "Specifichiamo i binding di evento del metodo osservatore annotando il parametro evento:"
-
-#. Tag: programlisting
-#: events.xml:46
-#: events.xml:190
-#, no-c-format
-msgid "<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document) { ... }]]>"
-msgstr "<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document) { ... }]]>"
-
-#. Tag: para
-#: events.xml:48
-#, no-c-format
-msgid "An observer method need not specify any event bindings&#151;in this case it is interested in <emphasis>all</emphasis> events of a particular type. If it does specify event bindings, it is only interested in events which also have those event bindings."
-msgstr "Un metodo osservatore non ha bisogno di specificare alcun binding di evento&#151;in questo caso è interessato a <emphasis>tutti</emphasis> gli eventi di un particolare tipo. Se specifica dei binding di evento, è solamente interessato agli eventi che hanno anche gli stessi binding di evento."
-
-#. Tag: para
-#: events.xml:53
-#, no-c-format
-msgid "The observer method may have additional parameters, which are injected according to the usual Web Beans method parameter injection semantics:"
-msgstr "Il metodo osservatore può avere parametri addizionali che vengono iniettati secondo la solita semantica di iniezione del parametro del metodo Web Beans."
-
-#. Tag: programlisting
-#: events.xml:56
-#, no-c-format
-msgid "<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document, User user) { ... }]]>"
-msgstr "<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document document, User user) { ... }]]>"
-
-#. Tag: title
-#: events.xml:61
-#, no-c-format
-msgid "Event producers"
-msgstr "Produttori di eventi"
-
-#. Tag: para
-#: events.xml:63
-#, no-c-format
-msgid "The event producer may obtain an <emphasis>event notifier</emphasis> object by injection:"
-msgstr "Il produttore dell'evento può ottenere tramite iniezione un oggetto <emphasis>notificatore d'evento</emphasis>:"
-
-#. Tag: programlisting
-#: events.xml:66
-#, no-c-format
-msgid "<![CDATA[@Observable Event<Document> documentEvent]]>"
-msgstr "<![CDATA[@Observable Event<Document> documentEvent]]>"
-
-#. Tag: para
-#: events.xml:68
-#, no-c-format
-msgid "The <literal>@Observable</literal> annotation implicitly defines a Web Bean with scope <literal>@Dependent</literal> and deployment type <literal>@Standard</literal>, with an implementation provided by the Web Bean manager."
-msgstr "L'annotazione <literal>@Observable</literal> definisce implicitamente un Web Bean con scope <literal>@Dependent</literal> e tipo di deploy <literal>@Standard</literal>, con un'implementazione fornita dal manager Web Bean."
-
-#. Tag: para
-#: events.xml:72
-#, no-c-format
-msgid "A producer raises events by calling the <literal>fire()</literal> method of the <literal>Event</literal> interface, passing an <emphasis>event object</emphasis>:"
-msgstr "Un produttore solleva eventi chiamando il metodo <literal>fire()</literal> dell'intefaccia <literal>Event</literal>, passando un <emphasis>oggetto evento</emphasis>:"
-
-#. Tag: programlisting
-#: events.xml:75
-#, no-c-format
-msgid "<![CDATA[documentEvent.fire(document);]]>"
-msgstr "<![CDATA[documentEvent.fire(document);]]>"
-
-#. Tag: para
-#: events.xml:77
-#, no-c-format
-msgid "An event object may be an instance of any Java class that has no type variables or wildcard type parameters. The event will be delivered to every observer method that:"
-msgstr "Un oggetto evento può essere un'istanza di una classe Java che non ha variabili tipo o parametri tipo wildcard. L'evento verrà consegnato ad ogni metodo osservatore che:"
-
-#. Tag: para
-#: events.xml:83
-#: events.xml:107
-#: events.xml:126
-#, no-c-format
-msgid "has an event parameter to which the event object is assignable, and"
-msgstr "ha un parametro evento a cui l'oggetto evento è assegnabile, e"
-
-#. Tag: para
-#: events.xml:86
-#, no-c-format
-msgid "specifies no event bindings."
-msgstr "non specifica binding d'evento."
-
-#. Tag: para
-#: events.xml:90
-#, no-c-format
-msgid "The Web Bean manager simply calls all the observer methods, passing the event object as the value of the event parameter. If any observer method throws an exception, the Web Bean manager stops calling observer methods, and the exception is rethrown by the <literal>fire()</literal> method."
-msgstr "Il manager Web Bean chiama semplicemente tutti i metodi osservatori, passando l'oggento evento come valore del parametro evento. Se il metodo osservatore lancia un'eccezione, il manager Web Bean smette di chiamare i metodi osservatori, e l'eccezione viene rilanciata dal metodo <literal>fire()</literal>."
-
-#. Tag: para
-#: events.xml:95
-#, no-c-format
-msgid "To specify a \"selector\", the event producer may pass an instance of the event binding type to the <literal>fire()</literal> method:"
-msgstr "Per specificare un \"selettore\" il produttore d'evento può passare un'istanza del tipo di binding d'evento al metodo <literal>fire()</literal>:"
-
-#. Tag: programlisting
-#: events.xml:98
-#, no-c-format
-msgid "<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>(){} );]]>"
-msgstr "<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>(){} );]]>"
-
-#. Tag: para
-#: events.xml:100
-#, no-c-format
-msgid "The helper class <literal>AnnotationLiteral</literal> makes it possible to instantiate binding types inline, since this is otherwise difficult to do in Java."
-msgstr "La classe helper <literal>AnnotationLiteral</literal> rende possibile istanziare inline i tipi di binding, dato che questo risulta difficile da fare in Java."
-
-#. Tag: para
-#: events.xml:103
-#, no-c-format
-msgid "The event will be delivered to every observer method that:"
-msgstr "L'evento verrà consegnato ad ogni metodo osservatore che:"
-
-#. Tag: para
-#: events.xml:110
-#, no-c-format
-msgid "does not specify any event binding <emphasis>except</emphasis> for the event bindings passed to <literal>fire()</literal>."
-msgstr "non specifica alcun event binding <emphasis>tranne</emphasis> per gli event binding passati a <literal>fire()</literal>."
-
-#. Tag: para
-#: events.xml:115
-#, no-c-format
-msgid "Alternatively, event bindings may be specified by annotating the event notifier injection point:"
-msgstr "In alternativa gli event binding possono essere specificati annotando il punto di iniezione del notificato d'evento:"
-
-#. Tag: programlisting
-#: events.xml:118
-#, no-c-format
-msgid "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
-msgstr "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
-
-#. Tag: para
-#: events.xml:120
-#, no-c-format
-msgid "Then every event fired via this instance of <literal>Event</literal> has the annotated event binding. The event will be delivered to every observer method that:"
-msgstr "Quindi ciascun evento sollevato tramite quest'istanza di <literal>Event</literal> ha annotato l'event binding. L'evento verrà consegnato ad ogni metodo osservatore che:"
-
-# la frase è ambigua...."or the annotated..."  si lega a "to" o a "except" ??
-#. Tag: para
-#: events.xml:129
-#, no-c-format
-msgid "does not specify any event binding <emphasis>except</emphasis> for the event bindings passed to <literal>fire()</literal> or the annotated event bindings of the event notifier injection point."
-msgstr "non specifica alcun event binding <emphasis>tranne</emphasis> per gli event binding passati a <literal>fire()</literal> o per gli event binding annotati del punto di iniezione del notificatore eventi."
-
-#. Tag: title
-#: events.xml:138
-#, no-c-format
-msgid "Registering observers dynamically"
-msgstr "Registrare dinamicamente gli osservatori"
-
-#. Tag: para
-#: events.xml:140
-#, no-c-format
-msgid "It's often useful to register an event observer dynamically. The application may implement the <literal>Observer</literal> interface and register an instance with an event notifier by calling the <literal>observe()</literal> method."
-msgstr "E' spesso utile registrare un osservatore d'evento in modo dinamico. L'applicazione può implementare l'interfaccia <literal>Observer</literal> e registrare un'istanza con un notificatore d'evento chiamando il metodo <literal>observe()</literal>."
-
-#. Tag: programlisting
-#: events.xml:144
-#, no-c-format
-msgid "<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } } );]]>"
-msgstr "<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } } );]]>"
-
-#. Tag: para
-#: events.xml:146
-#, no-c-format
-msgid "Event binding types may be specified by the event notifier injection point or by passing event binding type instances to the <literal>observe()</literal> method:"
-msgstr "I tipi di event binding possono essere specificati dal punto di iniezione del notificatore d'eventi o passando istance del tipo di event binding al metodo <literal>observe()</literal>:"
-
-#. Tag: programlisting
-#: events.xml:149
-#, no-c-format
-msgid ""
-"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } }, \n"
-"                                                new AnnotationLiteral<Updated>(){} );]]>"
-msgstr ""
-"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify(Document doc) { ... } }, \n"
-"                                                new AnnotationLiteral<Updated>(){} );]]>"
-
-#. Tag: title
-#: events.xml:154
-#, no-c-format
-msgid "Event bindings with members"
-msgstr "Event binding con membri"
-
-#. Tag: para
-#: events.xml:156
-#, no-c-format
-msgid "An event binding type may have annotation members:"
-msgstr "Un tipo di event binding può avere membri annotati:"
-
-#. Tag: programlisting
-#: events.xml:158
-#, no-c-format
-msgid ""
-"<![CDATA[@BindingType\n"
-"@Target({PARAMETER, FIELD})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Role {\n"
-"    RoleType value();\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@BindingType\n"
-"@Target({PARAMETER, FIELD})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Role {\n"
-"    RoleType value();\n"
-"}]]>"
-
-#. Tag: para
-#: events.xml:160
-#, no-c-format
-msgid "The member value is used to narrow the messages delivered to the observer:"
-msgstr "Il valore del membro è usato per restringere i messaggi consegnati all'osservatore:"
-
-#. Tag: programlisting
-#: events.xml:162
-#, no-c-format
-msgid "<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) { ... }]]>"
-msgstr "<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) { ... }]]>"
-
-#. Tag: para
-#: events.xml:164
-#, no-c-format
-msgid "Event binding type members may be specified statically by the event producer, via annotations at the event notifier injection point:"
-msgstr "I membri del tipo di eventbinding possono essere specificati staticamente dal produttore di eventi tramite annotazioni nel punto di iniezione del notificatore d'evento:"
-
-#. Tag: programlisting
-#: events.xml:167
-#, no-c-format
-msgid "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
-msgstr "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
-
-#. Tag: para
-#: events.xml:169
-#, no-c-format
-msgid "Alternatively, the value of the event binding type member may be determined dynamically by the event producer. We start by writing an abstract subclass of <literal>AnnotationLiteral</literal>:"
-msgstr "Alternativamente il valore del membro del tipo di event binding può esserre dinamicamente determinato dal produttore di eventi. Iniziamo scrivendo una sottoclasse astratta di <literal>AnnotationLiteral</literal>:"
-
-#. Tag: programlisting
-#: events.xml:172
-#, no-c-format
-msgid ""
-"<![CDATA[abstract class RoleBinding \n"
-"    extends AnnotationLiteral<Role> \n"
-"    implements Role {}]]>"
-msgstr ""
-"<![CDATA[abstract class RoleBinding \n"
-"    extends AnnotationLiteral<Role> \n"
-"    implements Role {}]]>"
-
-#. Tag: para
-#: events.xml:174
-#, no-c-format
-msgid "The event producer passes an instance of this class to <literal>fire()</literal>:"
-msgstr "Il produttore di eventi passa un'istanza di questa classe a <literal>fire()</literal>:"
-
-#. Tag: programlisting
-#: events.xml:176
-#, no-c-format
-msgid "<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value() { return user.getRole(); } } );]]>"
-msgstr "<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value() { return user.getRole(); } } );]]>"
-
-#. Tag: title
-#: events.xml:181
-#, no-c-format
-msgid "Multiple event bindings"
-msgstr "Event binding multipli"
-
-#. Tag: para
-#: events.xml:183
-#, no-c-format
-msgid "Event binding types may be combined, for example:"
-msgstr "I tipi di event binding possono essere combinati, per esempio:"
-
-#. Tag: programlisting
-#: events.xml:185
-#, no-c-format
-msgid ""
-"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
-"...\n"
-"if (document.isBlog()) blogEvent.fire(document, new AnnotationLiteral<Updated>(){});]]>"
-msgstr ""
-"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
-"...\n"
-"if (document.isBlog()) blogEvent.fire(document, new AnnotationLiteral<Updated>(){});]]>"
-
-#. Tag: para
-#: events.xml:187
-#, no-c-format
-msgid "When this event occurs, all of the following observer methods will be notified:"
-msgstr "Quando si genera un evento, tutti i seguenti metodi osservatori verranno notificati:"
-
-#. Tag: programlisting
-#: events.xml:189
-#, no-c-format
-msgid "<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document document) { ... }]]>"
-msgstr "<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document document) { ... }]]>"
-
-#. Tag: programlisting
-#: events.xml:191
-#, no-c-format
-msgid "<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) { ... }]]>"
-msgstr "<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) { ... }]]>"
-
-#. Tag: programlisting
-#: events.xml:192
-#, no-c-format
-msgid "<![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }}}]]>"
-msgstr "<![CDATA[public void onAnyDocumentEvent(@Observes Document document) { ... }}}]]>"
-
-#. Tag: title
-#: events.xml:197
-#, no-c-format
-msgid "Transactional observers"
-msgstr "Osservatori transazionali"
-
-#. Tag: para
-#: events.xml:199
-#, no-c-format
-msgid "Transactional observers receive their event notifications during the before or after completion phase of the transaction in which the event was raised. For example, the following observer method needs to refresh a query result set that is cached in the application context, but only when transactions that update the <literal>Category</literal> tree succeed:"
-msgstr "Gli osservatori transazionali ricevono notifiche d'evento prima o dopo la fase di completamento della transazione, nella quale l'evento viene sollevato. Per esempio, il seguente metodo osservatore ha bisogno di aggiornare il set di risultati della query memorizzato nel contesto dell'applicazione, ma solo quando hanno successo le transazioni che aggiornano l'albero <literal>Category</literal>."
-
-#. Tag: programlisting
-#: events.xml:205
-#, no-c-format
-msgid "<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes CategoryUpdateEvent event) { ... }]]>"
-msgstr "<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes CategoryUpdateEvent event) { ... }]]>"
-
-#. Tag: para
-#: events.xml:207
-#, no-c-format
-msgid "There are three kinds of transactional observers:"
-msgstr "Ci sono tre tipi di osservatori transazionali:"
-
-#. Tag: para
-#: events.xml:211
-#, no-c-format
-msgid "<literal>@AfterTransactionSuccess</literal> observers are called during the after completion phase of the transaction, but only if the transaction completes successfully"
-msgstr "gli osservatori <literal>@AfterTransactionSuccess</literal> vengono chiamati dopo la fase di completamento della transazione, ma solo se questa si completa con successo"
-
-#. Tag: para
-#: events.xml:216
-#, no-c-format
-msgid "<literal>@AfterTransactionFailure</literal> observers are called during the after completion phase of the transaction, but only if the transaction fails to complete successfully"
-msgstr "gli osservatori <literal>@AfterTransactionFailure</literal> vengono chiamati dopo la fase di completamento della transazione, ma solo se questa fallisce e quindi non completa con successo"
-
-#. Tag: para
-#: events.xml:221
-#, no-c-format
-msgid "<literal>@AfterTransactionCompletion</literal> observers are called during the after completion phase of the transaction"
-msgstr "gli osservatori <literal>@AfterTransactionCompletion</literal> vengono chiamati dopo la fase di completamento della transazione"
-
-#. Tag: para
-#: events.xml:225
-#, no-c-format
-msgid "<literal>@BeforeTransactionCompletion</literal> observers are called during the before completion phase of the transaction"
-msgstr "gli osservatori <literal>@BeforeTransactionCompletion</literal> vengono chiamati prima della fase di completamento della transazione"
-
-#. Tag: para
-#: events.xml:230
-#, no-c-format
-msgid "Transactional observers are very important in a stateful object model like Web Beans, because state is often held for longer than a single atomic transaction."
-msgstr "Gli osservatori transazionali sono molto importanti in un modello ad oggetto stateful come Web Beans, poiché lo stato è spesso mantenuto per un tempo più lungo di una singola transazione atomica."
-
-#. Tag: para
-#: events.xml:233
-#, no-c-format
-msgid "Imagine that we have cached a JPA query result set in the application scope:"
-msgstr "Si immagini di avere cachato un risultato di query JPA nello scope di applicazione:"
-
-#. Tag: programlisting
-#: events.xml:235
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped @Singleton\n"
-"public class Catalog {\n"
-"\n"
-"    @PersistenceContext EntityManager em;\n"
-"    \n"
-"    List<Product> products;\n"
-"\n"
-"    @Produces @Catalog \n"
-"    List<Product> getCatalog() {\n"
-"        if (products==null) {\n"
-"            products = em.createQuery(\"select p from Product p where p.deleted = false\")\n"
-"                .getResultList();\n"
-"        }\n"
-"        return products;\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@ApplicationScoped @Singleton\n"
-"public class Catalog {\n"
-"\n"
-"    @PersistenceContext EntityManager em;\n"
-"    \n"
-"    List<Product> products;\n"
-"\n"
-"    @Produces @Catalog \n"
-"    List<Product> getCatalog() {\n"
-"        if (products==null) {\n"
-"            products = em.createQuery(\"select p from Product p where p.deleted = false\")\n"
-"                .getResultList();\n"
-"        }\n"
-"        return products;\n"
-"    }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: events.xml:237
-#, no-c-format
-msgid "From time to time, a <literal>Product</literal> is created or deleted. When this occurs, we need to refresh the <literal>Product</literal> catalog. But we should wait until <emphasis>after</emphasis> the transaction completes successfully before performing this refresh!"
-msgstr "Di tanto in tanto un <literal>Product</literal> viene creato o cancellato. Quando questo avviene occorre aggiornare il catalogo del <literal>Product</literal>. Ma si dovrebbe aspettare che la transazione  <emphasis>abbia completato</emphasis> con successo prima di eseguire l'aggiornamento!"
-
-#. Tag: para
-#: events.xml:242
-#, no-c-format
-msgid "The Web Bean that creates and deletes <literal>Product</literal>s could raise events, for example:"
-msgstr "Il Web Bean che crea o cancella <literal>Product</literal> può sollevare eventi, per esempio:"
-
-#. Tag: programlisting
-#: events.xml:245
-#, no-c-format
-msgid ""
-"<![CDATA[@Stateless\n"
-"public class ProductManager {\n"
-"\n"
-"    @PersistenceContext EntityManager em;\n"
-"    @Observable Event<Product> productEvent;\n"
-"\n"
-"    public void delete(Product product) {\n"
-"        em.delete(product);\n"
-"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
-"    }\n"
-"    \n"
-"    public void persist(Product product) {\n"
-"        em.persist(product);\n"
-"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
-"    }\n"
-"    \n"
-"    ...\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Stateless\n"
-"public class ProductManager {\n"
-"\n"
-"    @PersistenceContext EntityManager em;\n"
-"    @Observable Event<Product> productEvent;\n"
-"\n"
-"    public void delete(Product product) {\n"
-"        em.delete(product);\n"
-"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
-"    }\n"
-"    \n"
-"    public void persist(Product product) {\n"
-"        em.persist(product);\n"
-"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
-"    }\n"
-"    \n"
-"    ...\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: events.xml:247
-#, no-c-format
-msgid "And now <literal>Catalog</literal> can observe the events after successful completion of the transaction:"
-msgstr "E ora <literal>Catalog</literal> può osservare gli eventi dopo il completamento (con successo) della transazione:"
-
-#. Tag: programlisting
-#: events.xml:250
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped @Singleton\n"
-"public class Catalog {\n"
-"\n"
-"    ...\n"
-"    \n"
-"    void addProduct(@AfterTransactionSuccess @Observes @Created Product product) {\n"
-"        products.add(product);\n"
-"    }\n"
-"    \n"
-"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product product) {\n"
-"        products.remove(product);\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@ApplicationScoped @Singleton\n"
-"public class Catalog {\n"
-"\n"
-"    ...\n"
-"    \n"
-"    void addProduct(@AfterTransactionSuccess @Observes @Created Product product) {\n"
-"        products.add(product);\n"
-"    }\n"
-"    \n"
-"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product product) {\n"
-"        products.remove(product);\n"
-"    }\n"
-"    \n"
-"}]]>"
-

Deleted: doc/trunk/reference/it-IT/modules/example.po
===================================================================
--- doc/trunk/reference/it-IT/modules/example.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/example.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,235 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-20 13:55+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: example.xml:4
-#, no-c-format
-msgid "JSF web application example"
-msgstr "Esempio di applicazione web JSF"
-
-#. Tag: para
-#: example.xml:6
-#, no-c-format
-msgid "Let's illustrate these ideas with a full example. We're going to implement user login/logout for an application that uses JSF. First, we'll define a Web Bean to hold the username and password entered during login:"
-msgstr "Illustriamo queste idee con un esempio completo. Implementiamo il login/logout dell'utente per un'applicazione che utilizza JSF. Innanzitutto definiamo un Web Bean che mantenga username e password digitati durante il login:"
-
-#. Tag: programlisting
-#: example.xml:11
-#, no-c-format
-msgid ""
-"<![CDATA[@Named\n"
-"public class Credentials {\n"
-"        \n"
-"    private String username;\n"
-"    private String password;\n"
-"    \n"
-"    public String getUsername() { return username; }\n"
-"    public void setUsername(String username) { this.username = username; }\n"
-"    \n"
-"    public String getPassword() { return password; }\n"
-"    public void setPassword(String password) { this.password = password; }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Named\n"
-"public class Credentials {\n"
-"        \n"
-"    private String username;\n"
-"    private String password;\n"
-"    \n"
-"    public String getUsername() { return username; }\n"
-"    public void setUsername(String username) { this.username = username; }\n"
-"    \n"
-"    public String getPassword() { return password; }\n"
-"    public void setPassword(String password) { this.password = password; }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: example.xml:13
-#, no-c-format
-msgid "This Web Bean is bound to the login prompt in the following JSF form:"
-msgstr "Questo Web Bean è associato al login all'interno della seguente form JSF:"
-
-#. Tag: programlisting
-#: example.xml:15
-#, no-c-format
-msgid ""
-"<![CDATA[<f:form>\n"
-"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
-"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
-"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
-"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
-"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
-"    </h:panelGrid>\n"
-"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!login.loggedIn}\"/>\n"
-"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#{login.loggedIn}\"/>\n"
-"</f:form]]>"
-msgstr ""
-"<![CDATA[<f:form>\n"
-"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
-"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
-"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
-"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
-"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
-"    </h:panelGrid>\n"
-"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!login.loggedIn}\"/>\n"
-"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#{login.loggedIn}\"/>\n"
-"</f:form]]>"
-
-#. Tag: para
-#: example.xml:17
-#, no-c-format
-msgid "The actual work is done by a session scoped Web Bean that maintains information about the currently logged-in user and exposes the <literal>User</literal> entity to other Web Beans:"
-msgstr "Il vero lavoro è fatto da un Web Bean con scope di sessione che mantiene le informazioni sull'utente correntemente loggato ed espone l'entity <literal>User</literal> agli altri Web Beans:"
-
-#. Tag: programlisting
-#: example.xml:21
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped @Named\n"
-"public class Login {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @PersistenceContext EntityManager userDatabase;\n"
-"\n"
-"    private User user;\n"
-"    \n"
-"    public void login() {\n"
-"            \n"
-"        List<User> results = userDatabase.createQuery(\n"
-"           \"select u from User u where u.username=:username and u.password=:password\")\n"
-"           .setParameter(\"username\", credentials.getUsername())\n"
-"           .setParameter(\"password\", credentials.getPassword())\n"
-"           .getResultList();\n"
-"        \n"
-"        if ( !results.isEmpty() ) {\n"
-"           user = results.get(0);\n"
-"        }\n"
-"        \n"
-"    }\n"
-"    \n"
-"    public void logout() {\n"
-"        user = null;\n"
-"    }\n"
-"    \n"
-"    public boolean isLoggedIn() {\n"
-"       return user!=null;\n"
-"    }\n"
-"    \n"
-"    @Produces @LoggedIn User getCurrentUser() {\n"
-"        return user;\n"
-"    }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@SessionScoped @Named\n"
-"public class Login {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @PersistenceContext EntityManager userDatabase;\n"
-"\n"
-"    private User user;\n"
-"    \n"
-"    public void login() {\n"
-"            \n"
-"        List<User> results = userDatabase.createQuery(\n"
-"           \"select u from User u where u.username=:username and u.password=:password\")\n"
-"           .setParameter(\"username\", credentials.getUsername())\n"
-"           .setParameter(\"password\", credentials.getPassword())\n"
-"           .getResultList();\n"
-"        \n"
-"        if ( !results.isEmpty() ) {\n"
-"           user = results.get(0);\n"
-"        }\n"
-"        \n"
-"    }\n"
-"    \n"
-"    public void logout() {\n"
-"        user = null;\n"
-"    }\n"
-"    \n"
-"    public boolean isLoggedIn() {\n"
-"       return user!=null;\n"
-"    }\n"
-"    \n"
-"    @Produces @LoggedIn User getCurrentUser() {\n"
-"        return user;\n"
-"    }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: example.xml:23
-#, no-c-format
-msgid "Of course, <literal>@LoggedIn</literal> is a binding annotation:"
-msgstr "<literal>@LoggedIn</literal> è un'annotazione di binding:"
-
-#. Tag: programlisting
-#: example.xml:25
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD})\n"
-"@BindingType\n"
-"public @interface LoggedIn {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD})\n"
-"@BindingType\n"
-"public @interface LoggedIn {}]]>"
-
-#. Tag: para
-#: example.xml:27
-#, no-c-format
-msgid "Now, any other Web Bean can easily inject the current user:"
-msgstr "Ora qualsiasi altro Web Bean può facilmente iniettare l'utente corrente:"
-
-#. Tag: programlisting
-#: example.xml:29
-#, no-c-format
-msgid ""
-"<![CDATA[public class DocumentEditor {\n"
-"\n"
-"    @Current Document document;\n"
-"    @LoggedIn User currentUser;\n"
-"    @PersistenceContext EntityManager docDatabase;\n"
-"    \n"
-"    public void save() {\n"
-"        document.setCreatedBy(currentUser);\n"
-"        docDatabase.persist(document);\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class DocumentEditor {\n"
-"\n"
-"    @Current Document document;\n"
-"    @LoggedIn User currentUser;\n"
-"    @PersistenceContext EntityManager docDatabase;\n"
-"    \n"
-"    public void save() {\n"
-"        document.setCreatedBy(currentUser);\n"
-"        docDatabase.persist(document);\n"
-"    }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: example.xml:31
-#, no-c-format
-msgid "Hopefully, this example gives a flavor of the Web Bean programming model. In the next chapter, we'll explore Web Beans dependency injection in greater depth."
-msgstr "Quest'esempio è un assaggio del modello di programmazione con Web Bean. Nel prossimo capitolo esploreremo la dependency injection dei Web Bean con maggior profondità."
-

Deleted: doc/trunk/reference/it-IT/modules/extend.po
===================================================================
--- doc/trunk/reference/it-IT/modules/extend.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/extend.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,307 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-20 16:41+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: extend.xml:4
-#, no-c-format
-msgid "Extending Web Beans"
-msgstr "Estendere i Web Beans"
-
-#. Tag: para
-#: extend.xml:6
-#, no-c-format
-msgid "Web Beans is intended to be a platform for frameworks, extensions and integration with other technologies. Therefore, Web Beans exposes a set of SPIs for the use of developers of portable extensions to Web Beans. For example, the following kinds of extensions were envisaged by the designers of Web Beans:"
-msgstr "Web Beans è inteso essere una piattaforma per framework, estensioni e integrazione con altre tecnologie. Quindi Web Beans espone un set di SPI (Service Provider Interface) per l'uso da parte degli sviluppatori di estensioni portabili a Web Beans. Per esempio, i seguentitipi di estensione sono state prese in considerazione dai progettisti di Web Beans:"
-
-#. Tag: para
-#: extend.xml:14
-#, no-c-format
-msgid "integration with Business Process Management engines,"
-msgstr "Integrazione con i motori di Gestione dei Processi di Business,"
-
-#. Tag: para
-#: extend.xml:17
-#, no-c-format
-msgid "integration with third-party frameworks such as Spring, Seam, GWT or Wicket, and"
-msgstr "integrazione con framework di terze-parti quali Spring, Seam, GWT o Wicket, e"
-
-#. Tag: para
-#: extend.xml:21
-#, no-c-format
-msgid "new technology based upon the Web Beans programming model."
-msgstr "nuova tecnologia basata sul modello di programmazione di Web Beans."
-
-#. Tag: para
-#: extend.xml:25
-#, no-c-format
-msgid "The nerve center for extending Web Beans is the <literal>Manager</literal> object."
-msgstr "Il nervo centrale per l'estensione di Web Beans è l'oggetto <literal>Manager</literal>."
-
-#. Tag: title
-#: extend.xml:29
-#, no-c-format
-msgid "The <literal>Manager</literal> object"
-msgstr "L'oggetto <literal>Manager</literal>"
-
-#. Tag: para
-#: extend.xml:31
-#, no-c-format
-msgid "The <literal>Manager</literal> interface lets us register and obtain Web Beans, interceptors, decorators, observers and contexts programatically."
-msgstr "L'interfaccia <literal>Manager</literal> consente di registrare ed ottenere programmaticamente interceptor, decoratori, osservatori e contesti di Web Beans."
-
-#. Tag: programlisting
-#: extend.xml:34
-#, no-c-format
-msgid ""
-"<![CDATA[public interface Manager\n"
-"{\n"
-"\n"
-"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... bindings);\n"
-"\n"
-"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
-"\n"
-"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public Set<Bean<?>> resolveByName(String name);\n"
-"\n"
-"   public Object getInstanceByName(String name);\n"
-"\n"
-"   public <T> T getInstance(Bean<T> bean);\n"
-"\n"
-"   public void fireEvent(Object event, Annotation... bindings);\n"
-"\n"
-"   public Context getContext(Class<? extends Annotation> scopeType);\n"
-"\n"
-"   public Manager addContext(Context context);\n"
-"\n"
-"   public Manager addBean(Bean<?> bean);\n"
-"\n"
-"   public Manager addInterceptor(Interceptor interceptor);\n"
-"\n"
-"   public Manager addDecorator(Decorator decorator);\n"
-"\n"
-"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager removeObserver(Observer<T> observer, Class<T> eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager removeObserver(Observer<T> observer,\n"
-"         TypeLiteral<T> eventType, Annotation... bindings);\n"
-"\n"
-"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings);\n"
-"\n"
-"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
-"         Annotation... interceptorBindings);\n"
-"\n"
-"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
-"         Annotation... bindings);\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public interface Manager\n"
-"{\n"
-"\n"
-"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... bindings);\n"
-"\n"
-"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
-"\n"
-"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public Set<Bean<?>> resolveByName(String name);\n"
-"\n"
-"   public Object getInstanceByName(String name);\n"
-"\n"
-"   public <T> T getInstance(Bean<T> bean);\n"
-"\n"
-"   public void fireEvent(Object event, Annotation... bindings);\n"
-"\n"
-"   public Context getContext(Class<? extends Annotation> scopeType);\n"
-"\n"
-"   public Manager addContext(Context context);\n"
-"\n"
-"   public Manager addBean(Bean<?> bean);\n"
-"\n"
-"   public Manager addInterceptor(Interceptor interceptor);\n"
-"\n"
-"   public Manager addDecorator(Decorator decorator);\n"
-"\n"
-"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager removeObserver(Observer<T> observer, Class<T> eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager removeObserver(Observer<T> observer,\n"
-"         TypeLiteral<T> eventType, Annotation... bindings);\n"
-"\n"
-"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings);\n"
-"\n"
-"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
-"         Annotation... interceptorBindings);\n"
-"\n"
-"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
-"         Annotation... bindings);\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: extend.xml:36
-#, no-c-format
-msgid "We can obtain an instance of <literal>Manager</literal> via injection:"
-msgstr "Possiamo ottenere un'istanza di <literal>Manager</literal> via iniezione:"
-
-#. Tag: programlisting
-#: extend.xml:38
-#, no-c-format
-msgid "@Current Manager manager"
-msgstr "@Current Manager manager"
-
-#. Tag: title
-#: extend.xml:43
-#, no-c-format
-msgid "The <literal>Bean</literal> class"
-msgstr "La classe <literal>Bean</literal>"
-
-#. Tag: para
-#: extend.xml:45
-#, no-c-format
-msgid "Instances of the abstract class <literal>Bean</literal> represent Web Beans. There is an instance of <literal>Bean</literal> registered with the <literal>Manager</literal> object for every Web Bean in the application."
-msgstr "Istanze della classe astratta <literal>Bean</literal> rappresentano i Web Beans. C'è un'istanza di <literal>Bean</literal> registrata con l'oggetto <literal>Manager</literal> per ogni Web Bean dell'applicazione."
-
-#. Tag: programlisting
-#: extend.xml:50
-#, no-c-format
-msgid ""
-"public abstract class Bean&lt;T&gt; {\n"
-"    \n"
-"    private final Manager manager;\n"
-"    \n"
-"    protected Bean(Manager manager) {\n"
-"        this.manager=manager;\n"
-"    }\n"
-"    \n"
-"    protected Manager getManager() {\n"
-"        return manager;\n"
-"    }\n"
-"    \n"
-"    public abstract Set&lt;Class&gt; getTypes();\n"
-"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
-"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
-"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
-"    public abstract String getName();\n"
-"    \n"
-"    public abstract boolean isSerializable();\n"
-"    public abstract boolean isNullable();\n"
-"\n"
-"    public abstract T create();\n"
-"    public abstract void destroy(T instance);\n"
-"    \n"
-"}"
-msgstr ""
-"public abstract class Bean&lt;T&gt; {\n"
-"    \n"
-"    private final Manager manager;\n"
-"    \n"
-"    protected Bean(Manager manager) {\n"
-"        this.manager=manager;\n"
-"    }\n"
-"    \n"
-"    protected Manager getManager() {\n"
-"        return manager;\n"
-"    }\n"
-"    \n"
-"    public abstract Set&lt;Class&gt; getTypes();\n"
-"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
-"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
-"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
-"    public abstract String getName();\n"
-"    \n"
-"    public abstract boolean isSerializable();\n"
-"    public abstract boolean isNullable();\n"
-"\n"
-"    public abstract T create();\n"
-"    public abstract void destroy(T instance);\n"
-"    \n"
-"}"
-
-#. Tag: para
-#: extend.xml:52
-#, no-c-format
-msgid "It's possible to extend the <literal>Bean</literal> class and register instances by calling <literal>Manager.addBean()</literal> to provide support for new kinds of Web Beans, beyond those defined by the Web Beans specification (simple and enterprise Web Beans, producer methods and JMS endpoints). For example, we could use the <literal>Bean</literal> class to allow objects managed by another framework to be injected into Web Beans."
-msgstr "E' possibile estendere la classe <literal>Bean</literal> e registrare le istanze chiamando <literal>Manager.addBean()</literal> per fornire supporto a nuovi tipi di Web Beans, oltre a quelli definiti dalla specifica Web Beans (semplici ed enterprise, metodi produttori e endpoint JMS). Per esempio possiamo usare la classe <literal>Bean</literal> per consentire ad oggetti gestiti da altri framework di essere iniettati nei Web Beans."
-
-#. Tag: para
-#: extend.xml:60
-#, no-c-format
-msgid "There are two subclasses of <literal>Bean</literal> defined by the Web Beans specification: <literal>Interceptor</literal> and <literal>Decorator</literal>."
-msgstr "Ci sono due sottoclassi di <literal>Bean</literal> definite dalla specifica Web Beans: <literal>Interceptor</literal> e <literal>Decorator</literal>."
-
-#. Tag: title
-#: extend.xml:67
-#, no-c-format
-msgid "The <literal>Context</literal> interface"
-msgstr "L'interfaccia <literal>Context</literal>"
-
-#. Tag: para
-#: extend.xml:69
-#, no-c-format
-msgid "The <literal>Context</literal> interface supports addition of new scopes to Web Beans, or extension of the built-in scopes to new environments."
-msgstr "L'interfaccia <literal>Context</literal> supporta l'aggiunta di nuovi scope ai Web Beans, o l'estensione di scope esistenti a nuovi ambienti."
-
-#. Tag: programlisting
-#: extend.xml:72
-#, no-c-format
-msgid ""
-"public interface Context {\n"
-"    \n"
-"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
-"    \n"
-"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
-"    \n"
-"    boolean isActive();\n"
-"    \n"
-"}"
-msgstr ""
-"public interface Context {\n"
-"    \n"
-"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
-"    \n"
-"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
-"    \n"
-"    boolean isActive();\n"
-"    \n"
-"}"
-
-#. Tag: para
-#: extend.xml:74
-#, no-c-format
-msgid "For example, we might implement <literal>Context</literal> to add a business process scope to Web Beans, or to add support for the conversation scope to an application that uses Wicket."
-msgstr "Per esempio possiamo implementare <literal>Context</literal> per aggiungere uno scope di tipo business process a Web Beans, o per aggiungere il supporto allo scope di conversazione ad un'applicazione che impiega Wicket."
-

Deleted: doc/trunk/reference/it-IT/modules/injection.po
===================================================================
--- doc/trunk/reference/it-IT/modules/injection.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/injection.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,1128 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-21 14:06+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: injection.xml:4
-#, no-c-format
-msgid "Dependency injection"
-msgstr "Dependency injection"
-
-#. Tag: para
-#: injection.xml:6
-#, no-c-format
-msgid "Web Beans supports three primary mechanisms for dependency injection:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:8
-#, no-c-format
-msgid "Constructor parameter injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:10
-#, no-c-format
-msgid ""
-"<![CDATA[public class Checkout {\n"
-"        \n"
-"    private final ShoppingCart cart;\n"
-"    \n"
-"    @Initializer\n"
-"    public Checkout(ShoppingCart cart) {\n"
-"        this.cart = cart;\n"
-"    }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class Checkout {\n"
-"        \n"
-"    private final ShoppingCart cart;\n"
-"    \n"
-"    @Initializer\n"
-"    public Checkout(ShoppingCart cart) {\n"
-"        this.cart = cart;\n"
-"    }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:12
-#, no-c-format
-msgid "<emphasis>Initializer</emphasis> method parameter injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:14
-#, no-c-format
-msgid ""
-"<![CDATA[public class Checkout {\n"
-"        \n"
-"    private ShoppingCart cart;\n"
-"\n"
-"    @Initializer \n"
-"    void setShoppingCart(ShoppingCart cart) {\n"
-"        this.cart = cart;\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class Checkout {\n"
-"        \n"
-"    private ShoppingCart cart;\n"
-"\n"
-"    @Initializer \n"
-"    void setShoppingCart(ShoppingCart cart) {\n"
-"        this.cart = cart;\n"
-"    }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:16
-#, no-c-format
-msgid "And direct field injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:18
-#, no-c-format
-msgid ""
-"<![CDATA[public class Checkout {\n"
-"\n"
-"    private @Current ShoppingCart cart;\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class Checkout {\n"
-"\n"
-"    private @Current ShoppingCart cart;\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:20
-#, no-c-format
-msgid "Dependency injection always occurs when the Web Bean instance is first instantiated."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:25
-#, no-c-format
-msgid "First, the Web Bean manager calls the Web Bean constructor, to obtain an instance of the Web Bean."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:29
-#, no-c-format
-msgid "Next, the Web Bean manager initializes the values of all injected fields of the Web Bean."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:33
-#, no-c-format
-msgid "Next, the Web Bean manager calls all initializer methods of Web Bean."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:37
-#, no-c-format
-msgid "Finally, the <literal>@PostConstruct</literal> method of the Web Bean, if any, is called."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:42
-#, no-c-format
-msgid "Constructor parameter injection is not supported for EJB beans, since the EJB is instantiated by the EJB container, not the Web Bean manager."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:45
-#, no-c-format
-msgid "Parameters of constructors and initializer methods need not be explicitly annotated when the default binding type <literal>@Current</literal> applies. Injected fields, however, <emphasis>must</emphasis> specify a binding type, even when the default binding type applies. If the field does not specify a binding type, it will not be injected."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:51
-#, no-c-format
-msgid "Producer methods also support parameter injection:"
-msgstr "I metodi produttori supportano anche l'iniezione dei parametri:"
-
-#. Tag: programlisting
-#: injection.xml:53
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
-"    return new Checkout(cart);\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
-"    return new Checkout(cart);\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:55
-#, no-c-format
-msgid "Finally, observer methods (which we'll meet in <xref linkend=\"events\"/>), disposal methods and destructor methods all support parameter injection."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:58
-#, no-c-format
-msgid "The Web Beans specification defines a procedure, called the <emphasis>typesafe resolution algorithm</emphasis>, that the Web Bean manager follows when identifying the Web Bean to inject to an injection point. This algorithm looks complex at first, but once you understand it, it's really quite intuitive. Typesafe resolution is performed at system initialization time, which means that the manager will inform the user immediately if a Web Bean's dependencies cannot be satisfied, by throwing a <literal>UnsatisfiedDependencyException</literal> or <literal>AmbiguousDependencyException</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:67
-#, no-c-format
-msgid "The purpose of this algorithm is to allow multiple Web Beans to implement the same API type and either:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:72
-#, no-c-format
-msgid "allow the client to select which implementation it requires using <emphasis>binding annotations</emphasis>,"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:77
-#, no-c-format
-msgid "allow the application deployer to select which implementation is appropriate for a particular deployment, without changes to the client, by enabling or disabling <emphasis>deployment types</emphasis>, or"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:82
-#, no-c-format
-msgid "allow one implementation of an API to override another implementation of the same API at deployment time, without changes to the client, using <emphasis>deployment type precedence</emphasis>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:88
-#, no-c-format
-msgid "Let's explore how the Web Beans manager determines a Web Bean to be injected."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:91
-#, no-c-format
-msgid "Binding annotations"
-msgstr "Annotazioni di binding"
-
-#. Tag: para
-#: injection.xml:93
-#, no-c-format
-msgid "If we have more than one Web Bean that implements a particular API type, the injection point can specify exactly which Web Bean should be injected using a binding annotation. For example, there might be two implementations of <literal>PaymentProcessor</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:98
-#, no-c-format
-msgid ""
-"<![CDATA[@PayByCheque\n"
-"public class ChequePaymentProcessor implements PaymentProcessor {\n"
-"    public void process(Payment payment) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@PayByCheque\n"
-"public class ChequePaymentProcessor implements PaymentProcessor {\n"
-"    public void process(Payment payment) { ... }\n"
-"}]]>"
-
-#. Tag: programlisting
-#: injection.xml:100
-#, no-c-format
-msgid ""
-"<![CDATA[@PayByCreditCard\n"
-"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
-"    public void process(Payment payment) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@PayByCreditCard\n"
-"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
-"    public void process(Payment payment) { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:102
-#, no-c-format
-msgid "Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</literal> are binding annotations:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:105
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayByCheque {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayByCheque {}]]>"
-
-#. Tag: programlisting
-#: injection.xml:107
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayByCreditCard {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayByCreditCard {}]]>"
-
-#. Tag: para
-#: injection.xml:109
-#, no-c-format
-msgid "A client Web Bean developer uses the binding annotation to specify exactly which Web Bean should be injected."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:112
-#, no-c-format
-msgid "Using field injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:114
-#, no-c-format
-msgid ""
-"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
-"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
-msgstr ""
-"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
-"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
-
-#. Tag: para
-#: injection.xml:116
-#, no-c-format
-msgid "Using initializer method injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:118
-#, no-c-format
-msgid ""
-"<![CDATA[@Initializer\n"
-"public void setPaymentProcessors(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
-"                                 @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {\n"
-"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
-"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Initializer\n"
-"public void setPaymentProcessors(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
-"                                 @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {\n"
-"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
-"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:120
-#, no-c-format
-msgid "Or using constructor injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:122
-#, no-c-format
-msgid ""
-"<![CDATA[@Initializer\n"
-"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
-"                @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {\n"
-"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
-"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Initializer\n"
-"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
-"                @PayByCreditCard PaymentProcessor creditCardPaymentProcessor) {\n"
-"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
-"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
-"}]]>"
-
-#. Tag: title
-#: injection.xml:125
-#, no-c-format
-msgid "Binding annotations with members"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:127
-#, no-c-format
-msgid "Binding annotations may have members:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:129
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayBy {\n"
-"    PaymentType value();\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayBy {\n"
-"    PaymentType value();\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:131
-#, no-c-format
-msgid "In which case, the member value is significant:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:133
-#, no-c-format
-msgid ""
-"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
-"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
-msgstr ""
-"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
-"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
-
-#. Tag: para
-#: injection.xml:135
-#, no-c-format
-msgid "You can tell the Web Bean manager to ignore a member of a binding annotation type by annotating the member <literal>@NonBinding</literal>."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:141
-#, no-c-format
-msgid "Combinations of binding annnotations"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:143
-#, no-c-format
-msgid "An injection point may even specify multiple binding annotations:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:145
-#, no-c-format
-msgid "<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
-msgstr "<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
-
-#. Tag: para
-#: injection.xml:147
-#, no-c-format
-msgid "In this case, only a Web Bean which has <emphasis>both</emphasis> binding annotations would be eligible for injection."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:153
-#, no-c-format
-msgid "Binding annotations and producer methods"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:155
-#, no-c-format
-msgid "Even producer methods may specify binding annotations:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:157
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces \n"
-"@Asynchronous @PayByCheque \n"
-"PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor processor) {\n"
-"    return new AsynchronousPaymentProcessor(processor);\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"  @Target({TYPE, METHOD})\n"
-"  @DeploymentType\n"
-"  public @interface Mock {}]]>"
-
-#. Tag: title
-#: injection.xml:162
-#, no-c-format
-msgid "The default binding type"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:164
-#, no-c-format
-msgid "Web Beans defines a binding type <literal>@Current</literal> that is the default binding type for any injection point or Web Bean that does not explicitly specify a binding type."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:168
-#, no-c-format
-msgid "There are two common circumstances in which it is necessary to explicitly specify <literal>@Current</literal>:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:173
-#, no-c-format
-msgid "on a field, in order to declare it as an injected field with the default binding type, and"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:177
-#, no-c-format
-msgid "on a Web Bean which has another binding type in addition to the default binding type."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:187
-#, no-c-format
-msgid "Deployment types"
-msgstr "Tipi di deploy"
-
-#. Tag: para
-#: injection.xml:189
-#, no-c-format
-msgid "All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment type identifies a set of Web Beans that should be conditionally installed in some deployments of the system."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:193
-#, no-c-format
-msgid "For example, we could define a deployment type named <literal>@Mock</literal>, which would identify Web Beans that should only be installed when the system executes inside an integration testing environment:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:197
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"  @Target({TYPE, METHOD})\n"
-"  @DeploymentType\n"
-"  public @interface Mock {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"  @Target({TYPE, METHOD})\n"
-"  @DeploymentType\n"
-"  public @interface Mock {}]]>"
-
-#. Tag: para
-#: injection.xml:199
-#, no-c-format
-msgid "Suppose we had some Web Bean that interacted with an external system to process payments:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:202
-#, no-c-format
-msgid ""
-"<![CDATA[public class ExternalPaymentProcessor {\n"
-"        \n"
-"    public void process(Payment p) {\n"
-"        ...\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class ExternalPaymentProcessor {\n"
-"        \n"
-"    public void process(Payment p) {\n"
-"        ...\n"
-"    }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:204
-#, no-c-format
-msgid "Since this Web Bean does not explicitly specify a deployment type, it has the default deployment type <literal>@Production</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:207
-#, no-c-format
-msgid "For integration or unit testing, the external system is slow or unavailable. So we would create a mock object:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:210
-#, no-c-format
-msgid ""
-"<![CDATA[@Mock \n"
-"public class MockPaymentProcessor implements PaymentProcessor {\n"
-"\n"
-"    @Override\n"
-"    public void process(Payment p) {\n"
-"        p.setSuccessful(true);\n"
-"    }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Mock \n"
-"public class MockPaymentProcessor implements PaymentProcessor {\n"
-"\n"
-"    @Override\n"
-"    public void process(Payment p) {\n"
-"        p.setSuccessful(true);\n"
-"    }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:212
-#, no-c-format
-msgid "But how does the Web Bean manager determine which implementation to use in a particular deployment?"
-msgstr ""
-
-#. Tag: title
-#: injection.xml:216
-#, no-c-format
-msgid "Enabling deployment types"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:218
-#, no-c-format
-msgid "Web Beans defines two built-in deployment types: <literal>@Production</literal> and <literal>@Standard</literal>. By default, only Web Beans with the built-in deployment types are enabled when the system is deployed. We can identify additional deployment types to be enabled in a particular deployment by listing them in <literal>web-beans.xml</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:224
-#, no-c-format
-msgid "Going back to our example, when we deploy our integration tests, we want all our <literal>@Mock</literal> objects to be installed:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:227
-#, no-c-format
-msgid ""
-"<![CDATA[<WebBeans>\n"
-"    <Deploy>\n"
-"        <Standard/>\n"
-"        <Production/>\n"
-"        <test:Mock/>\n"
-"    </Deploy>\n"
-"</WebBeans>]]>"
-msgstr ""
-"<![CDATA[<WebBeans>\n"
-"    <Deploy>\n"
-"        <Standard/>\n"
-"        <Production/>\n"
-"        <test:Mock/>\n"
-"    </Deploy>\n"
-"</WebBeans>]]>"
-
-#. Tag: para
-#: injection.xml:229
-#, no-c-format
-msgid "Now the Web Bean manager will identify and install all Web Beans annotated <literal>@Production</literal>, <literal>@Standard</literal> or <literal>@Mock</literal> at deployment time."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:233
-#, no-c-format
-msgid "The deployment type <literal>@Standard</literal> is used only for certain special Web Beans defined by the Web Beans specification. We can't use it for our own Web Beans, and we can't disable it."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:237
-#, no-c-format
-msgid "The deployment type <literal>@Production</literal> is the default deployment type for Web Beans which don't explicitly declare a deployment type, and may be disabled."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:244
-#, no-c-format
-msgid "Deployment type precedence"
-msgstr "Precedenza del tipo di deploy"
-
-#. Tag: para
-#: injection.xml:246
-#, no-c-format
-msgid "If you've been paying attention, you're probably wondering how the Web Bean manager decides which implementation&#151;<literal>ExternalPaymentProcessor</literal> or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider what happens when the manager encounters this injection point:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:251
-#, no-c-format
-msgid "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
-msgstr "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
-
-#. Tag: para
-#: injection.xml:253
-#, no-c-format
-msgid "There are now two Web Beans which satisfy the <literal>PaymentProcessor</literal> contract. Of course, we can't use a binding annotation to disambiguate, since binding annotations are hard-coded into the source at the injection point, and we want the manager to be able to decide at deployment time!"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:258
-#, no-c-format
-msgid "The solution to this problem is that each deployment type has a different <emphasis>precedence</emphasis>. The precedence of the deployment types is determined by the order in which they appear in <literal>web-beans.xml</literal>. In our example, <literal>@Mock</literal> appears later than <literal>@Production</literal> so it has a higher precedence."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:264
-#, no-c-format
-msgid "Whenever the manager discovers that more than one Web Bean could satisfy the contract (API type plus binding annotations) specified by an injection point, it considers the relative precedence of the Web Beans. If one has a higher precedence than the others, it chooses the higher precedence Web Bean to inject. So, in our example, the Web Bean manager will inject <literal>MockPaymentProcessor</literal> when executing in our integration testing environment (which is exactly what we want)."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:271
-#, no-c-format
-msgid "It's interesting to compare this facility to today's popular manager architectures. Various \"lightweight\" containers also allow conditional deployment of classes that exist in the classpath, but the classes that are to be deployed must be explicity, individually, listed in configuration code or in some XML configuration file. Web Beans does support Web Bean definition and configuration via XML, but in the common case where no complex configuration is required, deployment types allow a whole set of Web Beans to be enabled with a single line of XML. Meanwhile, a developer browsing the code can easily identify what deployment scenarios the Web Bean will be used in."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:284
-#, no-c-format
-msgid "Example deployment types"
-msgstr "Esempio dei tipi di deploy "
-
-#. Tag: para
-#: injection.xml:286
-#, no-c-format
-msgid "Deployment types are useful for all kinds of things, here's some examples:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:290
-#, no-c-format
-msgid "<literal>@Mock</literal> and <literal>@Staging</literal> deployment types for testing"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:294
-#, no-c-format
-msgid "<literal>@AustralianTaxLaw</literal> for site-specific Web Beans"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:297
-#, no-c-format
-msgid "<literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party frameworks which build on Web Beans"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:301
-#, no-c-format
-msgid "<literal>@Standard</literal> for standard Web Beans defined by the Web Beans specification"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:306
-#, no-c-format
-msgid "I'm sure you can think of more applications..."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:313
-#, no-c-format
-msgid "Fixing unsatisfied dependencies"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:315
-#, no-c-format
-msgid "The typesafe resolution algorithm fails when, after considering the binding annotations and and deployment types of all Web Beans that implement the API type of an injection point, the Web Bean manager is unable to identify exactly one Web Bean to inject."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:320
-#, no-c-format
-msgid "It's usually easy to fix an <literal>UnsatisfiedDependencyException</literal> or <literal>AmbiguousDependencyException</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:323
-#, no-c-format
-msgid "To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide a Web Bean which implements the API type and has the binding types of the injection point&#151;or enable the deployment type of a Web Bean that already implements the API type and has the binding types."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:328
-#, no-c-format
-msgid "To fix an <literal>AmbiguousDependencyException</literal>, introduce a binding type to distinguish between the two implementations of the API type, or change the deployment type of one of the implementations so that the Web Bean manager can use deployment type precedence to choose between them. An <literal>AmbiguousDependencyException</literal> can only occur if two Web Beans share a binding type and have exactly the same deployment type."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:335
-#, no-c-format
-msgid "There's one more issue you need to be aware of when using dependency injection in Web Beans."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:341
-#, no-c-format
-msgid "Client proxies"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:343
-#, no-c-format
-msgid "Clients of an injected Web Bean do not usually hold a direct reference to a Web Bean instance."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:346
-#, no-c-format
-msgid "Imagine that a Web Bean bound to the application scope held a direct reference to a Web Bean bound to the request scope. The application scoped Web Bean is shared between many different requests. However, each request should see a different instance of the request scoped Web bean!"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:351
-#, no-c-format
-msgid "Now imagine that a Web Bean bound to the session scope held a direct reference to a Web Bean bound to the application scope. From time to time, the session context is serialized to disk in order to use memory more efficiently. However, the application scoped Web Bean instance should not be serialized along with the session scoped Web Bean!"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:357
-#, no-c-format
-msgid "Therefore, unless a Web Bean has the default scope <literal>@Dependent</literal>, the Web Bean manager must indirect all injected references to the Web Bean through a proxy object. This <emphasis>client proxy</emphasis> is responsible for ensuring that the Web Bean instance that receives a method invocation is the instance that is associated with the current context. The client proxy also allows Web Beans bound to contexts such as the session context to be serialized to disk without recursively serializing other injected Web Beans."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:365
-#, no-c-format
-msgid "Unfortunately, due to limitations of the Java language, some Java types cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager throws an <literal>UnproxyableDependencyException</literal> if the type of an injection point cannot be proxied."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:370
-#, no-c-format
-msgid "The following Java types cannot be proxied by the Web Bean manager:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:374
-#, no-c-format
-msgid "classes which are declared <literal>final</literal> or have a <literal>final</literal> method,"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:378
-#, no-c-format
-msgid "classes which have no non-private constructor with no parameters, and"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:381
-#, no-c-format
-msgid "arrays and primitive types."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:385
-#, no-c-format
-msgid "It's usually very easy to fix an <literal>UnproxyableDependencyException</literal>. Simply add a constructor with no parameters to the injected class, introduce an interface, or change the scope of the injected Web Bean to <literal>@Dependent</literal>."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:392
-#, no-c-format
-msgid "Obtaining a Web Bean by programatic lookup"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:394
-#, no-c-format
-msgid "The application may obtain an instance of the interface <literal>Manager</literal> by injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:397
-#, no-c-format
-msgid "<![CDATA[@Current Manager manager;]]>"
-msgstr "<![CDATA[@Current Manager manager;]]>"
-
-#. Tag: para
-#: injection.xml:399
-#, no-c-format
-msgid "The <literal>Manager</literal> object provides a set of methods for obtaining a Web Bean instance programatically."
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:402
-#, no-c-format
-msgid "<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class);]]>"
-msgstr "<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class);]]>"
-
-#. Tag: para
-#: injection.xml:404
-#, no-c-format
-msgid "Binding annotations may be specified by subclassing the helper class <literal>AnnotationLiteral</literal>, since it is otherwise difficult to instantiate an annotation type in Java."
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:408
-#, no-c-format
-msgid ""
-"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, \n"
-"                                               new AnnotationLiteral<CreditCard>(){});]]>"
-msgstr ""
-"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, \n"
-"                                               new AnnotationLiteral<CreditCard>(){});]]>"
-
-#. Tag: para
-#: injection.xml:410
-#, no-c-format
-msgid "If the binding type has an annotation member, we can't use an anonymous subclass of <literal>AnnotationLiteral</literal>&#151;instead we'll need to create a named subclass:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:413
-#, no-c-format
-msgid ""
-"<![CDATA[abstract class CreditCardBinding \n"
-"    extends AnnotationLiteral<CreditCard> \n"
-"    implements CreditCard {}]]>"
-msgstr ""
-"<![CDATA[abstract class CreditCardBinding \n"
-"    extends AnnotationLiteral<CreditCard> \n"
-"    implements CreditCard {}]]>"
-
-#. Tag: programlisting
-#: injection.xml:415
-#, no-c-format
-msgid ""
-"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, \n"
-"                                               new CreditCardBinding() { \n"
-"                                                   public void value() { return paymentType; } \n"
-"                                               } );]]>"
-msgstr ""
-"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor.class, \n"
-"                                               new CreditCardBinding() { \n"
-"                                                   public void value() { return paymentType; } \n"
-"                                               } );]]>"
-
-#. Tag: title
-#: injection.xml:419
-#, no-c-format
-msgid "Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:422
-#, no-c-format
-msgid "Enterprise Web Beans support all the lifecycle callbacks defined by the EJB specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:426
-#, no-c-format
-msgid "Simple Web Beans support only the <literal>@PostConstruct</literal> and <literal>@PreDestroy</literal> callbacks."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:429
-#, no-c-format
-msgid "Both enterprise and simple Web Beans support the use of <literal>@Resource</literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal> for injection of Java EE resources, EJBs and JPA persistence contexts, respectively. Simple Web Beans do not support the use of <literal>@PersistenceContext(type=EXTENDED)</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:434
-#, no-c-format
-msgid "The <literal>@PostConstruct</literal> callback always occurs after all dependencies have been injected."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:440
-#, no-c-format
-msgid "The <literal>InjectionPoint</literal> object"
-msgstr "L'oggetto <literal>InjectionPoint</literal>"
-
-#. Tag: para
-#: injection.xml:442
-#, no-c-format
-msgid "There are certain kinds of dependent objects&#151;Web Beans with scope <literal>@Dependent</literal>&#151;that need to know something about the object or injection point into which they are injected in order to be able to do what they do. For example:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:448
-#, no-c-format
-msgid "The log category for a <literal>Logger</literal> depends upon the class of the object that owns it."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:452
-#, no-c-format
-msgid "Injection of a HTTP parameter or header value depends upon what parameter or header name was specified at the injection point."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:456
-#, no-c-format
-msgid "Injection of the result of an EL expression evaluation depends upon the expression that was specified at the injection point."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:461
-#, no-c-format
-msgid "A Web Bean with scope <literal>@Dependent</literal> may inject an instance of <literal>InjectionPoint</literal> and access metadata relating to the injection point to which it belongs."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:465
-#, no-c-format
-msgid "Let's look at an example. The following code is verbose, and vulnerable to refactoring problems:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:468
-#, no-c-format
-msgid "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
-msgstr "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
-
-#. Tag: para
-#: injection.xml:470
-#, no-c-format
-msgid "This clever little producer method lets you inject a JDK <literal>Logger</literal> without explicitly specifying the log category:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:473
-#, no-c-format
-msgid ""
-"<![CDATA[class LogFactory {\n"
-"\n"
-"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
-"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName()); \n"
-"   }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[class LogFactory {\n"
-"\n"
-"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
-"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName()); \n"
-"   }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:475
-#, no-c-format
-msgid "We can now write:"
-msgstr "Ora è possibile scrivere:"
-
-#. Tag: programlisting
-#: injection.xml:477
-#, no-c-format
-msgid "<![CDATA[@Current Logger log;]]>"
-msgstr "<![CDATA[@Current Logger log;]]>"
-
-#. Tag: para
-#: injection.xml:479
-#, no-c-format
-msgid "Not convinced? Then here's a second example. To inject HTTP parameters, we need to define a binding type:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:482
-#, no-c-format
-msgid ""
-"<![CDATA[@BindingType\n"
-"@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"public @interface HttpParam {\n"
-"   @NonBinding public String value();\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@BindingType\n"
-"@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"public @interface HttpParam {\n"
-"   @NonBinding public String value();\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:484
-#, no-c-format
-msgid "We would use this binding type at injection points as follows:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:486
-#, no-c-format
-msgid ""
-"<![CDATA[@HttpParam(\"username\") String username;\n"
-"@HttpParam(\"password\") String password;]]>"
-msgstr ""
-"<![CDATA[@HttpParam(\"username\") String username;\n"
-"@HttpParam(\"password\") String password;]]>"
-
-#. Tag: para
-#: injection.xml:488
-#, no-c-format
-msgid "The following producer method does the work:"
-msgstr "Il seguente metodo produttore esegue il lavoro:"
-
-#. Tag: programlisting
-#: injection.xml:490
-#, no-c-format
-msgid ""
-"<![CDATA[class HttpParams\n"
-"\n"
-"   @Produces @HttpParam(\"\")\n"
-"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
-"      return request.getParameter(ip.getAnnotation(HttpParam.class).value());\n"
-"   }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[class HttpParams\n"
-"\n"
-"   @Produces @HttpParam(\"\")\n"
-"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
-"      return request.getParameter(ip.getAnnotation(HttpParam.class).value());\n"
-"   }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: injection.xml:492
-#, no-c-format
-msgid "(Note that the <literal>value()</literal> member of the <literal>HttpParam</literal> annotation is ignored by the Web Bean manager since it is annotated <literal>@NonBinding.</literal>)"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:495
-#, no-c-format
-msgid "The Web Bean manager provides a built-in Web Bean that implements the <literal>InjectionPoint</literal> interface:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:498
-#, no-c-format
-msgid ""
-"<![CDATA[public interface InjectionPoint { \n"
-"   public Object getInstance(); \n"
-"   public Bean<?> getBean(); \n"
-"   public Member getMember(): \n"
-"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
-"   public Set<T extends Annotation> getAnnotations(); \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public interface InjectionPoint { \n"
-"   public Object getInstance(); \n"
-"   public Bean<?> getBean(); \n"
-"   public Member getMember(): \n"
-"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
-"   public Set<T extends Annotation> getAnnotations(); \n"
-"}]]>"
-

Deleted: doc/trunk/reference/it-IT/modules/interceptors.po
===================================================================
--- doc/trunk/reference/it-IT/modules/interceptors.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/interceptors.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,585 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2009-01-02 19:56+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: interceptors.xml:4
-#, no-c-format
-msgid "Interceptors"
-msgstr "Gli interceptor"
-
-#. Tag: para
-#: interceptors.xml:6
-#, no-c-format
-msgid "Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending the functionality in two directions:"
-msgstr "Web Beans riutilizza l'architettura base degli interceptor di EJB3.0, estendendo la funzionalità in due direzioni:"
-
-#. Tag: para
-#: interceptors.xml:11
-#, no-c-format
-msgid "Any Web Bean may have interceptors, not just session beans."
-msgstr "Qualsiasi Web Bean può avere interceptor, non solo i session bean."
-
-#. Tag: para
-#: interceptors.xml:14
-#, no-c-format
-msgid "Web Beans features a more sophisticated annotation-based approach to binding interceptors to Web Beans."
-msgstr "Web Bean fornisce un più sofisticato approccio basato su annotazioni per associare interceptor ai Web Beans."
-
-#. Tag: para
-#: interceptors.xml:22
-#, no-c-format
-msgid "The EJB specification defines two kinds of interception points:"
-msgstr "\"La specifica Web Bean definisce due tipi di punti di intercettazione:"
-
-#. Tag: para
-#: interceptors.xml:26
-#, no-c-format
-msgid "business method interception, and"
-msgstr "intercettazione del metodo di business, e"
-
-# lifecycle callback interception = ?
-#. Tag: para
-#: interceptors.xml:29
-#, no-c-format
-msgid "lifecycle callback interception."
-msgstr "intercettazione della chiamata del ciclo di vita."
-
-#. Tag: para
-#: interceptors.xml:33
-#, no-c-format
-msgid "A <emphasis>business method interceptor</emphasis> applies to invocations of methods of the Web Bean by clients of the Web Bean:"
-msgstr "Un <emphasis>interceptor di un metodo di business</emphasis> si applica alle invocazioni di metodi del Web Bean da parte di client del Web Bean:"
-
-#. Tag: programlisting
-#: interceptors.xml:36
-#, no-c-format
-msgid ""
-"<![CDATA[public class TransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class TransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
-"}]]>"
-
-# rivedere la frase
-#. Tag: para
-#: interceptors.xml:38
-#, no-c-format
-msgid "A <emphasis>lifecycle callback interceptor</emphasis> applies to invocations of lifecycle callbacks by the container:"
-msgstr "Un <emphasis>interceptor di chiamata del ciclo di vita</emphasis> si applica alle invocazioni delle chiamate del ciclo di vita da parte del container:"
-
-#. Tag: programlisting
-#: interceptors.xml:41
-#, no-c-format
-msgid ""
-"<![CDATA[public class DependencyInjectionInterceptor {\n"
-"    @PostConstruct public void injectDependencies(InvocationContext ctx) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class DependencyInjectionInterceptor {\n"
-"    @PostConstruct public void injectDependencies(InvocationContext ctx) { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: interceptors.xml:43
-#, no-c-format
-msgid "An interceptor class may intercept both lifecycle callbacks and business methods."
-msgstr "Una classe interceptor può intercettare entrambi le chiamate del ciclo di vita ed i metodi di business."
-
-#. Tag: title
-#: interceptors.xml:49
-#, no-c-format
-msgid "Interceptor bindings"
-msgstr "Interceptor bindings"
-
-#. Tag: para
-#: interceptors.xml:51
-#, no-c-format
-msgid "Suppose we want to declare that some of our Web Beans are transactional. The first thing we need is an <emphasis>interceptor binding annotation</emphasis> to specify exactly which Web Beans we're interested in:"
-msgstr "Si supponga di voler dichiarare transazionali alcuni Web Beans. La prima cosa necessaria è un'<emphasis>annotazione di interceptor binding</emphasis> per specificare esattamente quali Web Beans sono interessati:"
-
-#. Tag: programlisting
-#: interceptors.xml:55
-#, no-c-format
-msgid ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Transactional {}]]>"
-msgstr ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Transactional {}]]>"
-
-#. Tag: para
-#: interceptors.xml:57
-#, no-c-format
-msgid "Now we can easily specify that our <literal>ShoppingCart</literal> is a transactional object:"
-msgstr "Ora è facilmente possibile specificare che <literal>ShoppingCart</literal> è un oggetto transazionale:"
-
-#. Tag: programlisting
-#: interceptors.xml:60
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@Transactional\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: interceptors.xml:62
-#, no-c-format
-msgid "Or, if we prefer, we can specify that just one method is transactional:"
-msgstr "O se si preferisce, si può specificare che solo un metodo sia transazionale:"
-
-#. Tag: programlisting
-#: interceptors.xml:64
-#, no-c-format
-msgid ""
-"<![CDATA[public class ShoppingCart {\n"
-"    @Transactional public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class ShoppingCart {\n"
-"    @Transactional public void checkout() { ... }\n"
-"}]]>"
-
-#. Tag: title
-#: interceptors.xml:69
-#, no-c-format
-msgid "Implementing interceptors"
-msgstr "Implementare gli interceptor"
-
-#. Tag: para
-#: interceptors.xml:71
-#, no-c-format
-msgid "That's great, but somewhere along the line we're going to have to actually implement the interceptor that provides this transaction management aspect. All we need to do is create a standard EJB interceptor, and annotate it <literal>@Interceptor</literal> and <literal>@Transactional</literal>."
-msgstr "Bene, ma da qualche parte è necessario implementare l'interceptor che fornisce l'aspect di gestione della transazione. Occore quindi creare un interceptor EJB standard e annotarlo con <literal>@Interceptor</literal> e <literal>@Transactional</literal>.\""
-
-#. Tag: programlisting
-#: interceptors.xml:76
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: interceptors.xml:78
-#, no-c-format
-msgid "All Web Beans interceptors are simple Web Beans, and can take advantage of dependency injection and contextual lifecycle management."
-msgstr "Tutti gli interceptor dei Web Beans sono Web Beans semplici e possono sfruttare la dependency injection e la gestione del ciclo di vita contestuale."
-
-#. Tag: programlisting
-#: interceptors.xml:81
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"\n"
-"    @Resource Transaction transaction;\n"
-"\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"\n"
-"    @Resource Transaction transaction;\n"
-"\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: interceptors.xml:83
-#, no-c-format
-msgid "Multiple interceptors may use the same interceptor binding type."
-msgstr "Diverso interceptor possono usare lo stesso tipo di interceptor binding."
-
-#. Tag: title
-#: interceptors.xml:88
-#, no-c-format
-msgid "Enabling interceptors"
-msgstr "Abilitare gli interceptor"
-
-#. Tag: para
-#: interceptors.xml:90
-#, no-c-format
-msgid "Finally, we need to <emphasis>enable</emphasis> our interceptor in <literal>web-beans.xml</literal>."
-msgstr "Infine occorre <emphasis>abilitare</emphasis> l'interceptor in <literal>web-beans.xml</literal>."
-
-#. Tag: programlisting
-#: interceptors.xml:93
-#, no-c-format
-msgid ""
-"<![CDATA[<Interceptors>\n"
-"    <tx:TransactionInterceptor/>\n"
-"</Interceptors>]]>"
-msgstr ""
-"<![CDATA[<Interceptors>\n"
-"    <tx:TransactionInterceptor/>\n"
-"</Interceptors>]]>"
-
-#. Tag: para
-#: interceptors.xml:95
-#, no-c-format
-msgid "Whoah! Why the angle bracket stew?"
-msgstr "Ma perché viene usato ancora XML, quando Web Beans non dovrebbe utilizzarlo?"
-
-#. Tag: para
-#: interceptors.xml:97
-#, no-c-format
-msgid "Well, the XML declaration solves two problems:"
-msgstr "La dichiarazione XML risolve due problemi:"
-
-#. Tag: para
-#: interceptors.xml:101
-#, no-c-format
-msgid "it enables us to specify a total ordering for all the interceptors in our system, ensuring deterministic behavior, and"
-msgstr "Ci consente di specificare un ordinamento totale per tutti gli interceptor del sistema, assicurando un comportamente deterministico, e"
-
-#. Tag: para
-#: interceptors.xml:105
-#, no-c-format
-msgid "it lets us enable or disable interceptor classes at deployment time."
-msgstr "consente di abilitare o disabilitare le classi di interceptor a deployment time."
-
-#. Tag: para
-#: interceptors.xml:109
-#, no-c-format
-msgid "For example, we could specify that our security interceptor runs before our <literal>TransactionInterceptor</literal>."
-msgstr "Per esempio è possibile specificare che l'interceptor di sicurezza venga eseguito prima di <literal>TransactionInterceptor</literal>.\""
-
-#. Tag: programlisting
-#: interceptors.xml:112
-#, no-c-format
-msgid ""
-"<![CDATA[<Interceptors>\n"
-"    <sx:SecurityInterceptor/>\n"
-"    <tx:TransactionInterceptor/>\n"
-"</Interceptors>]]>"
-msgstr ""
-"<![CDATA[<Interceptors>\n"
-"    <sx:SecurityInterceptor/>\n"
-"    <tx:TransactionInterceptor/>\n"
-"</Interceptors>]]>"
-
-#. Tag: para
-#: interceptors.xml:114
-#, no-c-format
-msgid "Or we could turn them both off in our test environment!"
-msgstr "Oppure si può disattivarli entrambi dal proprio ambiente di test!"
-
-#. Tag: title
-#: interceptors.xml:119
-#, no-c-format
-msgid "Interceptor bindings with members"
-msgstr "Interceptor binding con membri"
-
-#. Tag: para
-#: interceptors.xml:121
-#, no-c-format
-msgid "Suppose we want to add some extra information to our <literal>@Transactional</literal> annotation:"
-msgstr "Si supponga di voler aggiungere qualche informazione extra all'annotazione  <literal>@Transactional</literal>:"
-
-#. Tag: programlisting
-#: interceptors.xml:124
-#, no-c-format
-msgid ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Transactional {\n"
-"    boolean requiresNew() default false;\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Transactional {\n"
-"    boolean requiresNew() default false;\n"
-"}]]>"
-
-#. Tag: para
-#: interceptors.xml:126
-#, no-c-format
-msgid "Web Beans will use the value of <literal>requiresNew</literal> to choose between two different interceptors, <literal>TransactionInterceptor</literal> and <literal>RequiresNewTransactionInterceptor</literal>."
-msgstr "Web Beans utilizzerà il valore di <literal>requiresNew</literal> per scegliere tra due diversi interceptor, <literal>TransactionInterceptor</literal> e <literal>RequiresNewTransactionInterceptor</literal>."
-
-#. Tag: programlisting
-#: interceptors.xml:130
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
-"public class RequiresNewTransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
-"public class RequiresNewTransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: interceptors.xml:132
-#, no-c-format
-msgid "Now we can use <literal>RequiresNewTransactionInterceptor</literal> like this:"
-msgstr "Ora è possibile usare <literal>RequiresNewTransactionInterceptor</literal> in questo modo:"
-
-#. Tag: programlisting
-#: interceptors.xml:134
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional(requiresNew=true)\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@Transactional(requiresNew=true)\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: interceptors.xml:136
-#, no-c-format
-msgid "But what if we only have one interceptor and we want the manager to ignore the value of <literal>requiresNew</literal> when binding interceptors? We can use the <literal>@NonBinding</literal> annotation:"
-msgstr "Ma cosa succede se si ha solo un interceptor e si vuole che il manager ignori il valore di <literal>requiresNew</literal> quando si associa l'interceptor? Si può usare l'annotazione <literal>@NonBinding</literal>:"
-
-#. Tag: programlisting
-#: interceptors.xml:140
-#, no-c-format
-msgid ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Secure {\n"
-"    @NonBinding String[] rolesAllowed() default {};\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Secure {\n"
-"    @NonBinding String[] rolesAllowed() default {};\n"
-"}]]>"
-
-#. Tag: title
-#: interceptors.xml:145
-#, no-c-format
-msgid "Multiple interceptor binding annotations"
-msgstr "Annotazioni per interceptor binding multipli"
-
-#. Tag: para
-#: interceptors.xml:147
-#, no-c-format
-msgid "Usually we use combinations of interceptor bindings types to bind multiple interceptors to a Web Bean. For example, the following declaration would be used to bind <literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</literal> to the same Web Bean:"
-msgstr "Solitamente si usano combinazioni di tipi di interceptor binding per associare pià interceptor ad un Web Bean. Per esempio, la seguente dichiarazione verrebbe impiegata per associare <literal>TransactionInterceptor</literal> e <literal>SecurityInterceptor</literal> allo stesso Web Bean:"
-
-#. Tag: programlisting
-#: interceptors.xml:152
-#, no-c-format
-msgid ""
-"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: interceptors.xml:154
-#, no-c-format
-msgid "However, in very complex cases, an interceptor itself may specify some combination of interceptor binding types:"
-msgstr "Comunque in casi molto complessi un interceptor da solo potrebbe specificare alcune combinazioni di tipi di interceptor binding:"
-
-#. Tag: programlisting
-#: interceptors.xml:157
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Secure @Interceptor\n"
-"public class TransactionalSecureInterceptor { ... }]]>"
-msgstr ""
-"<![CDATA[@Transactional @Secure @Interceptor\n"
-"public class TransactionalSecureInterceptor { ... }]]>"
-
-#. Tag: para
-#: interceptors.xml:159
-#, no-c-format
-msgid "Then this interceptor could be bound to the <literal>checkout()</literal> method using any one of the following combinations:"
-msgstr "Allora quest'interceptor potrebbe venire associato al metodo <literal>checkout()</literal> usando una delle seguenti combinazioni:"
-
-#. Tag: programlisting
-#: interceptors.xml:162
-#, no-c-format
-msgid ""
-"<![CDATA[public class ShoppingCart {\n"
-"    @Transactional @Secure public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class ShoppingCart {\n"
-"    @Transactional @Secure public void checkout() { ... }\n"
-"}]]>"
-
-#. Tag: programlisting
-#: interceptors.xml:164
-#, no-c-format
-msgid ""
-"<![CDATA[@Secure\n"
-"public class ShoppingCart {\n"
-"    @Transactional public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Secure\n"
-"public class ShoppingCart {\n"
-"    @Transactional public void checkout() { ... }\n"
-"}]]>"
-
-#. Tag: programlisting
-#: interceptors.xml:166
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactionl\n"
-"public class ShoppingCart {\n"
-"    @Secure public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Transactionl\n"
-"public class ShoppingCart {\n"
-"    @Secure public void checkout() { ... }\n"
-"}]]>"
-
-#. Tag: programlisting
-#: interceptors.xml:168
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Secure\n"
-"public class ShoppingCart {\n"
-"    public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Transactional @Secure\n"
-"public class ShoppingCart {\n"
-"    public void checkout() { ... }\n"
-"}]]>"
-
-#. Tag: title
-#: interceptors.xml:173
-#, no-c-format
-msgid "Interceptor binding type inheritance"
-msgstr "Ereditarietà del tipo di interceptor binding"
-
-#. Tag: para
-#: interceptors.xml:175
-#, no-c-format
-msgid "One limitation of the Java language support for annotations is the lack of annotation inheritance. Really, annotations should have reuse built in, to allow this kind of thing to work:"
-msgstr "Una limitazione del supporto del linguaggio Java per le annotazioni è la mancanza di ereditarietà delle annotazioni. In verità le annotazioni dovrebbero avere il riutilizzo predefinito per consentire che questo avvenga:"
-
-#. Tag: programlisting
-#: interceptors.xml:179
-#, no-c-format
-msgid "<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
-msgstr "<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
-
-#. Tag: para
-#: interceptors.xml:181
-#, no-c-format
-msgid "Well, fortunately, Web Beans works around this missing feature of Java. We may annotate one interceptor binding type with other interceptor binding types. The interceptor bindings are transitive&#151;any Web Bean with the first interceptor binding inherits the interceptor bindings declared as meta-annotations."
-msgstr "Fortunatamente Web Beans provvede a questa mancanza di Java. E' possibile annotare un tipo di interceptor binding con altri tipi di interceptor binding. Gli interceptor binding sono transitivi&#151;qualsiasi Web Bean con il primo interceptor binding eredita gli interceptor binding dichiarati come meta-annotazioni."
-
-#. Tag: programlisting
-#: interceptors.xml:186
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Secure\n"
-"@InterceptorBindingType\n"
-"@Target(TYPE)\n"
-"@Retention(RUNTIME)\n"
-"public @interface Action { ... }]]>"
-msgstr ""
-"<![CDATA[@Transactional @Secure\n"
-"@InterceptorBindingType\n"
-"@Target(TYPE)\n"
-"@Retention(RUNTIME)\n"
-"public @interface Action { ... }]]>"
-
-#. Tag: para
-#: interceptors.xml:188
-#, no-c-format
-msgid "Any Web Bean annotated <literal>@Action</literal> will be bound to both <literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</literal>. (And even <literal>TransactionalSecureInterceptor</literal>, if it exists.)"
-msgstr "Ogni Web Bean annotato con <literal>@Action</literal> verrà legato ad entrambi <literal>TransactionInterceptor</literal> e <literal>SecurityInterceptor</literal>. (E anche <literal>TransactionalSecureInterceptor</literal>, se questo esiste.)"
-
-#. Tag: title
-#: interceptors.xml:195
-#, no-c-format
-msgid "Use of <literal>@Interceptors</literal>"
-msgstr "Uso di <literal>@Interceptors</literal>"
-
-#. Tag: para
-#: interceptors.xml:197
-#, no-c-format
-msgid "The <literal>@Interceptors</literal> annotation defined by the EJB specification is supported for both enterprise and simple Web Beans, for example:"
-msgstr "L'annotazione <literal>@Interceptors</literal> definita dalla specifica EJB è supportata per entrambi i Web Bean semplici ed enterprise, per esempio:"
-
-#. Tag: programlisting
-#: interceptors.xml:200
-#, no-c-format
-msgid ""
-"<![CDATA[@Interceptors({TransactionInterceptor.class, @SecurityInterceptor.class})\n"
-"public class ShoppingCart {\n"
-"    public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Interceptors({TransactionInterceptor.class, @SecurityInterceptor.class})\n"
-"public class ShoppingCart {\n"
-"    public void checkout() { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: interceptors.xml:202
-#, no-c-format
-msgid "However, this approach suffers the following drawbacks:"
-msgstr "Comunque, quest'approccio soffre dei seguenti difetti:"
-
-#. Tag: para
-#: interceptors.xml:206
-#, no-c-format
-msgid "the interceptor implementation is hardcoded in business code,"
-msgstr "l'implementazione degli interceptor è codificata nel codice di business,"
-
-#. Tag: para
-#: interceptors.xml:209
-#, no-c-format
-msgid "interceptors may not be easily disabled at deployment time, and"
-msgstr "gli interceptor possono non essere facilmente disabilitati a deployment time, e"
-
-#. Tag: para
-#: interceptors.xml:212
-#, no-c-format
-msgid "the interceptor ordering is non-global&#151;it is determined by the order in which interceptors are listed at the class level."
-msgstr "l'ordinamento degli interceptor è non-globale&#151;è determinata dall'ordine in cui gli interceptor sono elencati al livello di classe."
-
-#. Tag: para
-#: interceptors.xml:217
-#, no-c-format
-msgid "Therefore, we recommend the use of Web Beans-style interceptor bindings."
-msgstr "Quindi si raccomanda l'uso di interceptor binding di stile Web Beans."
-

Deleted: doc/trunk/reference/it-IT/modules/intro.po
===================================================================
--- doc/trunk/reference/it-IT/modules/intro.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/intro.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,938 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-25 12:11+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: intro.xml:4
-#, no-c-format
-msgid "Getting started with Web Beans"
-msgstr "Iniziare con Web Beans"
-
-# Rendere la frase "wondering what kinds of hoops the Web Beans specification will make you jump through!" più italiana.
-#. Tag: para
-#: intro.xml:6
-#, no-c-format
-msgid "So you're already keen to get started writing your first Web Bean? Or perhaps you're skeptical, wondering what kinds of hoops the Web Beans specification will make you jump through! The good news is that you've probably already written and used hundreds, perhaps thousands of Web Beans. You might not even remember the first Web Bean you wrote."
-msgstr "Non vedi l'ora di iniziare a scrivere il primo Web Beans? O forse sei un pò scettico e ti domandi quali virtuosismi ti farà fare la specifica Web Beans! La buona notizia è che probabilmente hai già scritto e usato centinaia, forse migliaia di Web Beans. Potresti addirittura non ricordare il primo Web Bean scritto."
-
-#. Tag: title
-#: intro.xml:13
-#, no-c-format
-msgid "Your first Web Bean"
-msgstr "Il primo Web Bean"
-
-#. Tag: para
-#: intro.xml:15
-#, no-c-format
-msgid "With certain, very special exceptions, every Java class with a constructor that accepts no parameters is a Web Bean. That includes every JavaBean. Furthermore, every EJB 3-style session bean is a Web Bean. Sure, the JavaBeans and EJBs you've been writing every day have not been able to take advantage of the new services defined by the Web Beans specification, but you'll be able to use every one of them as Web Beans&#151;injecting them into other Web Beans, configuring them via the Web Beans XML configuration facility, even adding interceptors and decorators to them&#151;without touching your existing code."
-msgstr "Con alcune eccezioni molto particolari, ogni classe Java con un costruttore che non accetta parametri è un Web Bean. Questo include ogni JavaBean. Inoltre, ogni session bean di stile EJB3 è un Web Bean. Sicuramente i JavaBean e gli EJB3 che si sono sempre scritti non erano in grado di sfruttare i nuovi servizi definiti dalla specifica Web Beans, ma si sarà presto in grado di usare ciascuno di essi come Web Bean&#151;iniettandoli in altri Web Beans, configurandoli tramite strumenti di configurazione XML Web Bean, e perfino aggiungendo a loro interceptor e decoratori&#151;senza toccare il codice esistente."
-
-#. Tag: para
-#: intro.xml:25
-#, no-c-format
-msgid "Suppose that we have two existing Java classes, that we've been using for years in various applications. The first class parses a string into a list of sentences:"
-msgstr "Si supponga di avere due classi Java esistenti, usate da anni in varie applicazioni. La prima classe esegue il parsing di una stringa in una lista di frasi:"
-
-#. Tag: programlisting
-#: intro.xml:29
-#, no-c-format
-msgid ""
-"<![CDATA[public class SentenceParser {\n"
-"    public List<String> parse(String text) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class SentenceParser {\n"
-"    public List<String> parse(String text) { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:31
-#, no-c-format
-msgid "The second existing class is a stateless session bean front-end for an external system that is able to translate sentences from one language to another:"
-msgstr "La seconda classe è un session bean stateless front-end per un sistema esterno capace di tradurre le frasi da una lingua ad un altra:"
-
-#. Tag: programlisting
-#: intro.xml:35
-#, no-c-format
-msgid ""
-"<![CDATA[@Stateless\n"
-"public class SentenceTranslator implements Translator {\n"
-"    public String translate(String sentence) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Stateless\n"
-"public class SentenceTranslator implements Translator {\n"
-"    public String translate(String sentence) { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:37
-#, no-c-format
-msgid "Where <literal>Translator</literal> is the local interface:"
-msgstr "Dove <literal>Translator</literal> è l'interfaccia locale:"
-
-#. Tag: programlisting
-#: intro.xml:39
-#, no-c-format
-msgid ""
-"<![CDATA[@Local\n"
-"public interface Translator {\n"
-"    public String translate(String sentence);\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Local\n"
-"public interface Translator {\n"
-"    public String translate(String sentence);\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:41
-#, no-c-format
-msgid "Unfortunately, we don't have a preexisting class that translates whole text documents. So let's write a Web Bean that does this job:"
-msgstr "Sfortunatamente non ci sono classi preesistenti che traducano l'intero testo dei documenti. Quindi occorre scrivere un Web Bean che faccia questo lavoro:"
-
-#. Tag: programlisting
-#: intro.xml:44
-#, no-c-format
-msgid ""
-"<![CDATA[public class TextTranslator {\n"
-"    \n"
-"    private SentenceParser sentenceParser;\n"
-"    private Translator sentenceTranslator;\n"
-"    \n"
-"    @Initializer\n"
-"    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {\n"
-"        this.sentenceParser = sentenceParser;\n"
-"        this.sentenceTranslator = sentenceTranslator;\n"
-"    }\n"
-"    \n"
-"    public String translate(String text) {\n"
-"        StringBuilder sb = new StringBuilder();\n"
-"        for (String sentence: sentenceParser.parse(text)) {\n"
-"            sb.append(sentenceTranslator.translate(sentence));\n"
-"        }\n"
-"        return sb.toString();\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class TextTranslator {\n"
-"    \n"
-"    private SentenceParser sentenceParser;\n"
-"    private Translator sentenceTranslator;\n"
-"    \n"
-"    @Initializer\n"
-"    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {\n"
-"        this.sentenceParser = sentenceParser;\n"
-"        this.sentenceTranslator = sentenceTranslator;\n"
-"    }\n"
-"    \n"
-"    public String translate(String text) {\n"
-"        StringBuilder sb = new StringBuilder();\n"
-"        for (String sentence: sentenceParser.parse(text)) {\n"
-"            sb.append(sentenceTranslator.translate(sentence));\n"
-"        }\n"
-"        return sb.toString();\n"
-"    }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:46
-#, no-c-format
-msgid "We may obtain an instance of <literal>TextTranslator</literal> by injecting it into a Web Bean, Servlet or EJB:"
-msgstr "Si può ottenere un'istanza di <literal>TextTranslator</literal> iniettandolo in un Web Bean, Servlet o EJB:"
-
-#. Tag: programlisting
-#: intro.xml:49
-#, no-c-format
-msgid ""
-"<![CDATA[@Initializer\n"
-"public setTextTranslator(TextTranslator textTranslator) {\n"
-"    this.textTranslator = textTranslator;\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Initializer\n"
-"public setTextTranslator(TextTranslator textTranslator) {\n"
-"    this.textTranslator = textTranslator;\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:51
-#, no-c-format
-msgid "Alternatively, we may obtain an instance by directly calling a method of the Web Bean manager:"
-msgstr "In alternativa si può ottenere un'istanza chiamando direttamente un metodo del manager Web Bean:"
-
-#. Tag: programlisting
-#: intro.xml:54
-#, no-c-format
-msgid "<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]>"
-msgstr "<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]>"
-
-#. Tag: para
-#: intro.xml:56
-#, no-c-format
-msgid "But wait: <literal>TextTranslator</literal> does not have a constructor with no parameters! Is it still a Web Bean? Well, a class that does not have a constructor with no parameters can still be a Web Bean if it has a constructor annotated <literal>@Initializer</literal>."
-msgstr "Ma <literal>TextTranslator</literal> non ha un costruttore con nessun parametro! E' ancora un Web Bean? Una classe che non ha un costruttore senza parametri può essere un Web Bean se il suo costruttore è annotato con <literal>@Initializer</literal>."
-
-#. Tag: para
-#: intro.xml:61
-#, no-c-format
-msgid "As you've guessed, the <literal>@Initializer</literal> annotation has something to do with dependency injection! <literal>@Initializer</literal> may be applied to a constructor or method of a Web Bean, and tells the Web Bean manager to call that constructor or method when instantiating the Web Bean. The Web Bean manager will inject other Web Beans to the parameters of the constructor or method."
-msgstr "Come hai indovinato, l'annotazione <literal>@Initializer</literal> ha qualcosa che fare con la dependency injection! <literal>@Initializer</literal> può essere applicato ad un costruttore od un metodo di un Web Bean, e dice al manager Web Bean di chiamare quel costruttore o metodo quando si istanzia il Web Bean. Il manager Web Bean inietterà altri Web Bean nei parametri del costruttore o del metodo."
-
-#. Tag: para
-#: intro.xml:68
-#, no-c-format
-msgid "At system initialization time, the Web Bean manager must validate that exactly one Web Bean exists which satisfies each injection point. In our example, if no implementation of <literal>Translator</literal> available&#151;if the <literal>SentenceTranslator</literal> EJB was not deployed&#151;the Web Bean manager would throw an <literal>UnsatisfiedDependencyException</literal>. If more than one implementation of <literal>Translator</literal> was available, the Web Bean manager would throw an <literal>AmbiguousDependencyException</literal>."
-msgstr "In fase di inizializzazione del sistema, il manager Web Bean deve convalidare che esattamente un solo Web Bean esista e soddisfi ciascun punto di iniezione. Nell'esempio, se nessuna implementazione di <literal>Translator</literal> fosse disponibile&#151;se l'EJB <literal>SentenceTranslator</literal> non venisse deployato&#151;il manager Web Bean lancerebbe una <literal>UnsatisfiedDependencyException</literal>. Se più di un'implementazione di <literal>Translator</literal> fosse disponibile, il manager Web Bean lancerebbe una <literal>AmbiguousDependencyException</literal>."
-
-#. Tag: title
-#: intro.xml:80
-#, no-c-format
-msgid "What is a Web Bean?"
-msgstr "Cosa è un Web Bean?"
-
-#. Tag: para
-#: intro.xml:82
-#, no-c-format
-msgid "So what, <emphasis>exactly</emphasis>, is a Web Bean?"
-msgstr "Ma cosa è <emphasis>esattamente</emphasis> un Web Bean?"
-
-#. Tag: para
-#: intro.xml:84
-#, no-c-format
-msgid "A Web Bean is an application class that contains business logic. A Web Bean may be called directly from Java code, or it may be invoked via Unified EL. A Web Bean may access transactional resources. Dependencies between Web Beans are managed automatically by the Web Bean manager. Most Web Beans are <emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The lifecycle of a Web Bean is always managed by the Web Bean manager."
-msgstr "Un Web Bean è una classe di un'applicazione che contiene della logica di business. Può essere chiamato direttamente da codice Java, o può essere invocato via Unified EL. Un Web Bean può accedere a risorse transazionali. Le dipendenze tra Web Beans sono gestite automaticamente dal manager Web Bean. La maggior parte dei Web Beans sono <emphasis>stateful</emphasis> e <emphasis>contestuali</emphasis>. Il ciclo di vita di un Web Bean è sempre gestito da un manager Web Bean."
-
-#. Tag: para
-#: intro.xml:91
-#, no-c-format
-msgid "Let's back up a second. What does it really mean to be \"contextual\"? Since Web Beans may be stateful, it matters <emphasis>which</emphasis> bean instance I have. Unlike a stateless component model (for example, stateless session beans) or a singleton component model (such as servlets, or singleton beans), different clients of a Web Bean see the Web Bean in different states. The client-visible state depends upon which instance of the Web Bean the client has a reference to."
-msgstr "Torniamo indietro un attimo. Cosa significa veramente essere \"contestuale\"? Poiché Web Beans può essere stateful, è importante <emphasis>quale</emphasis> istanza di bean si ha. Diversamente da un modello a componenti stateless (per esempio, i session bean stateless) o un modello a componenti singleton (come i servlet o i bean singleton) i client di un Web Bean vedono il Web Bean in stati differenti. Lo stato del client visibile dipende dall'istanza del Web Bean alla quale il client ha il riferimento."
-
-#. Tag: para
-#: intro.xml:98
-#, no-c-format
-msgid "However, like a stateless or singleton model, but <emphasis>unlike</emphasis> stateful session beans, the client does not control the lifecycle of the instance by explicitly creating and destroying it. Instead, the <emphasis>scope</emphasis> of the Web Bean determines:"
-msgstr "Comunque, in modo simile ad un modello stateless o singleton, ma <emphasis>non come</emphasis> i session bean stateful, il client non ha il controllo sul ciclo di vita dell'istanza, creandola e distruggendola esplicitamente. Invece, lo <emphasis>scope</emphasis> del Web Bean determina:"
-
-#. Tag: para
-#: intro.xml:105
-#, no-c-format
-msgid "the lifecycle of each instance of the Web Bean and"
-msgstr "il ciclo di vita di ogni istanza del Web Bean e"
-
-#. Tag: para
-#: intro.xml:108
-#, no-c-format
-msgid "which clients share a reference to a particular instance of the Web Bean."
-msgstr "quali client condividono una referenza con una particolare istanza del Web Bean."
-
-#. Tag: para
-#: intro.xml:113
-#, no-c-format
-msgid "For a given thread in a Web Beans application, there may be an <emphasis>active context</emphasis> associated with the scope of the Web Bean. This context may be unique to the thread (for example, if the Web Bean is request scoped), or it may be shared with certain other threads (for example, if the Web Bean is session scoped) or even all other threads (if it is application scoped)."
-msgstr "Per un dato thread in un'applicazione Web Beans, ci può essere un <emphasis>contesto attivo</emphasis> associato allo scope del Web Bean. Questo contesto può essere univoco nel thread (per esempio, se il Web Bean è con scope di richesta), o può essere condiviso con alcuni altri thread (per esempio, se il Web Bean è con scope di sessione) od anche tutti gli altri thread (se è scope di applicazione). "
-
-#. Tag: para
-#: intro.xml:119
-#, no-c-format
-msgid "Clients (for example, other Web Beans) executing in the same context will see the same instance of the Web Bean. But clients in a different context will see a different instance."
-msgstr "I client (per esempio, altri Web Beans) che sono in esecuzione nello stesso contesto vedranno la stessa istanza del Web Bean. Ma i client in un contesto diverso vedranno un istanza diversa."
-
-#. Tag: para
-#: intro.xml:123
-#, no-c-format
-msgid "One great advantage of the contextual model is that it allows stateful Web Beans to be treated like services! The client need not concern itself with managing the lifecycle of the Web Bean it is using, <emphasis>nor does it even need to know what that lifecyle is.</emphasis> Web Beans interact by passing messages, and the Web Bean implementations define the lifecycle of their own state. The Web Beans are loosely coupled because:"
-msgstr "Un grande vantaggio del modello contestuale è che consente ai Web Beans stateful di essere trattati come servizi! Il client non deve preoccuparsi di gestire il ciclo di vita del Web Bean che sta utilizzando, <emphasis>e neppure deve sapere quale sia il ciclo di vita.</emphasis> Web Beans interagisce passando i messaggi, e le implementazioni Web Bean definiscono il ciclo di vita del proprio stato. I Web Beans sono debolmente disaccoppiati (loosely coupled) poiché:"
-
-#. Tag: para
-#: intro.xml:132
-#, no-c-format
-msgid "they interact via well-defined public APIs"
-msgstr "interagiscono tramite delle API pubblica ben-definita"
-
-#. Tag: para
-#: intro.xml:135
-#, no-c-format
-msgid "their lifecycles are completely decoupled"
-msgstr "il loro ciclo di vita è completamente disaccoppiato"
-
-#. Tag: para
-#: intro.xml:139
-#, no-c-format
-msgid "We can replace one Web Bean with a different Web Bean that implements the same API and has a different lifecycle (a different scope) without affecting the other Web Bean implementation. In fact, Web Beans defines a sophisticated facility for overriding Web Bean implementations at deployment time, as we will see in <xref linkend=\"deploymenttypes\"/>."
-msgstr "Si può sostituire un Web Bean con un diverso Web Bean che implementa la stessa API ed ha un diverso ciclo di vita (un diverso scope) senza alterare l'implementazione dell'altro Web Bean. Infatti Web Beans definisce un meccanismo sofisticato per fare l'override delle implementazioni Web Bean al momento del deploy, come visto in <xref linkend=\"deploymenttypes\"/>."
-
-#. Tag: para
-#: intro.xml:145
-#, no-c-format
-msgid "Note that not all clients of a Web Bean are Web Beans. Other objects such as Servlets or Message-Driven Beans&#151;which are by nature not injectable, contextual objects&#151;may also obtain references to Web Beans by injection."
-msgstr "Si noti che non tutti i client dei un Web Bean sono Web Bean. Altri oggetti come Servlet o Message-Driven Beans&#151;che sono per natura non iniettabili, oggetti contestuali&#151;possono pure ottenere riferimenti a Web Bean tramite iniezione."
-
-# Tolto "Enough hand-waving."
-#. Tag: para
-#: intro.xml:149
-#, no-c-format
-msgid "Enough hand-waving. More formally, according to the spec:"
-msgstr "Più formalmente, secondo la specifica:"
-
-#. Tag: para
-#: intro.xml:153
-#, no-c-format
-msgid "A Web Bean comprises:"
-msgstr "Un Web Bean comprende:"
-
-#. Tag: para
-#: intro.xml:156
-#, no-c-format
-msgid "A (nonempty) set of API types"
-msgstr "Un set (non vuoto) di tipi di API"
-
-#. Tag: para
-#: intro.xml:157
-#, no-c-format
-msgid "A (nonempty) set of binding annotation types"
-msgstr "Un set (non vuoto) di tipi di annotazione di binding"
-
-#. Tag: para
-#: intro.xml:158
-#, no-c-format
-msgid "A scope"
-msgstr "Uno scope"
-
-#. Tag: para
-#: intro.xml:159
-#, no-c-format
-msgid "A deployment type"
-msgstr "Un tipo di deploy"
-
-#. Tag: para
-#: intro.xml:160
-#, no-c-format
-msgid "Optionally, a Web Bean name"
-msgstr "Opzionalmente un nome Web Bean"
-
-#. Tag: para
-#: intro.xml:161
-#, no-c-format
-msgid "A set of interceptor binding types"
-msgstr "Un set di tipi di interceptor binding"
-
-#. Tag: para
-#: intro.xml:162
-#, no-c-format
-msgid "A Web Bean implementation"
-msgstr "Un implementazione Web Bean"
-
-#. Tag: para
-#: intro.xml:167
-#, no-c-format
-msgid "Let's see what some of these terms mean, to the Web Bean developer."
-msgstr "Vediamo cosa significano alcuni di questi termini per lo sviluppatore Web Bean."
-
-#. Tag: title
-#: intro.xml:170
-#, no-c-format
-msgid "API types, binding types and dependency injection"
-msgstr "Tipi di API, tipi di binding e dependency injection"
-
-#. Tag: para
-#: intro.xml:172
-#, no-c-format
-msgid "Web Beans usually acquire references to other Web Beans via dependency injection. Any injected attribute specifies a \"contract\" that must be satisfied by the Web Bean to be injected. The contract is:"
-msgstr "I Web Bean solitamente acquisiscono riferimenti ad altri Web Bean tramite la dependency injection. Ogni attributo iniettato specifica un \"contratto\" che deve essere soddisfatto dal Web Bean per essere iniettato. Il contratto è:"
-
-#. Tag: para
-#: intro.xml:177
-#, no-c-format
-msgid "an API type, together with"
-msgstr "un tipo di API, assieme a"
-
-#. Tag: para
-#: intro.xml:178
-#, no-c-format
-msgid "a set of binding types."
-msgstr "un set di tipi di binding."
-
-# client-visible semantic  =?
-#. Tag: para
-#: intro.xml:181
-#, no-c-format
-msgid "An API is a user-defined class or interface. (If the Web Bean is an EJB session bean, the API type is the <literal>@Local</literal> interface or bean-class local view). A binding type represents some client-visible semantic that is satisfied by some implementations of the API and not by others."
-msgstr "Un API è una classe o interfaccia definita dall'utente. (Se il Web Bean è un session bean EJB, il tipo di API è l'interfaccia <literal>@Local</literal> o la vista locale della classe-bean). Un tipo di binding rappresenta un semantica del client che è soddisfatta da certe implementazioni dell'API e non da altre."
-
-#. Tag: para
-#: intro.xml:186
-#, no-c-format
-msgid "Binding types are represented by user-defined annotations that are themselves annotated <literal>@BindingType</literal>. For example, the following injection point has API type <literal>PaymentProcessor</literal> and binding type <literal>@CreditCard</literal>:"
-msgstr "I tipi di binding sono rappresentati da annotazioni definite dall'utente che sono loro stesse annotate con <literal>@BindingType</literal>. Per esempio, il seguente punto di iniezione ha un tipo di API <literal>PaymentProcessor</literal> ed un tipo di binding <literal>@CreditCard</literal>:"
-
-#. Tag: programlisting
-#: intro.xml:191
-#, no-c-format
-msgid "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
-msgstr "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
-
-#. Tag: para
-#: intro.xml:193
-#, no-c-format
-msgid "If no binding type is explicitly specified at an injection point, the default binding type <literal>@Current</literal> is assumed."
-msgstr "Se nessun tipo di binding viene specificato in modo esplicito ad un punto di iniezione, il tipo di binding di default si assume essere <literal>@Current</literal>."
-
-#. Tag: para
-#: intro.xml:196
-#, no-c-format
-msgid "For each injection point, the Web Bean manager searches for a Web Bean which satisfies the contract (implements the API, and has all the binding types), and injects that Web Bean."
-msgstr "Per ogni punto di iniezione, il manager Web Bean cerca un Web Bean che soddisfi il contratto (che implementi la API, e che abbia tutti i tipi di binding), ed inietta tale Web Bean."
-
-#. Tag: para
-#: intro.xml:200
-#, no-c-format
-msgid "The following Web Bean has the binding type <literal>@CreditCard</literal> and implements the API type <literal>PaymentProcessor</literal>. It could therefore be injected to the example injection point:"
-msgstr "Il seguente Web Bean ha il tipo binding <literal>@CreditCard</literal> e implementa il tipo API <literal>PaymentProcessor</literal>. Può quindi essere iniettato nel punto di iniezione d'esempio:"
-
-#. Tag: programlisting
-#: intro.xml:204
-#, no-c-format
-msgid ""
-"<![CDATA[@CreditCard\n"
-"public class CreditCardPaymentProcessor \n"
-"    implements PaymentProcessor { ... }]]>"
-msgstr ""
-"<![CDATA[@CreditCard\n"
-"public class CreditCardPaymentProcessor \n"
-"    implements PaymentProcessor { ... }]]>"
-
-#. Tag: para
-#: intro.xml:206
-#, no-c-format
-msgid "If a Web Bean does not explicitly specify a set of binding types, it has exactly one binding type: the default binding type <literal>@Current</literal>."
-msgstr "Se un Web Bean non specifica esplicitamente un set di tipi di binding, ha esattamente un solo tipo di binding: il tipo di binding di default <literal>@Current</literal>."
-
-#. Tag: para
-#: intro.xml:209
-#, no-c-format
-msgid "Web Beans defines a sophisticated but intuitive <emphasis>resolution algorithm</emphasis> that helps the container decide what to do if there is more than one Web Bean that satisfies a particular contract. We'll get into the details in <xref linkend=\"injection\"/>."
-msgstr "Web Beans definisce un <emphasis>algoritmo di risoluzione</emphasis> sofisticato ma intuitivo che aiuta il container a decidere cosa fare se più di un Web Bean soddisfa un particolare contratto. Vedremo i dettagli in <xref linkend=\"injection\"/>."
-
-#. Tag: title
-#: intro.xml:217
-#, no-c-format
-msgid "Deployment types"
-msgstr "Tipi di deploy"
-
-#. Tag: para
-#: intro.xml:219
-#, no-c-format
-msgid "<emphasis>Deployment types</emphasis> let us classify our Web Beans by deployment scenario. A deployment type is an annotation that represents a particular deployment scenario, for example <literal>@Mock</literal>, <literal>@Staging</literal> or <literal>@AustralianTaxLaw</literal>. We apply the annotation to Web Beans which should be deployed in that scenario. A deployment type allows a whole set of Web Beans to be conditionally deployed, with a just single line of configuration."
-msgstr "<emphasis>I tipi di deploy</emphasis> consentono di classificare i Web Bean secondo uno scenario di deploy. Un tipo di deploy è un'annotazione che rappresenta un particolare scenario di deploy, per esempio <literal>@Mock</literal>, <literal>@Staging</literal> oppure <literal>@AustralianTaxLaw</literal>. Si applica l'annotazione ai Web Bean che dovrebbero essere deployati in tale scenario. Un tipo di deploy consente ad un intero set di Web Bean di essere deployati in modo condizionato, con una sola linea di configurazione."
-
-#. Tag: para
-#: intro.xml:226
-#, no-c-format
-msgid "Many Web Beans just use the default deployment type <literal>@Production</literal>, in which case no deployment type need be explicitly specified. All three Web Bean in our example have the deployment type <literal>@Production</literal>."
-msgstr "Molti Web Bean usano soltanto il tipo di deploy di default <literal>@Production</literal>, ed in questo caso non occorre specificare esplicitamente nessun tipo di deploy. Tutti e tre i Web Bean d'esempio hanno ul tipo di deploy <literal>@Production</literal>. "
-
-#. Tag: para
-#: intro.xml:230
-#, no-c-format
-msgid "In a testing environment, we might want to replace the <literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
-msgstr "In un ambiente di test è possibile sostituire il Web Bean <literal>SentenceTranslator</literal> con un \"oggetto mock\":"
-
-#. Tag: programlisting
-#: intro.xml:233
-#, no-c-format
-msgid ""
-"<![CDATA[@Mock\n"
-"public class MockSentenceTranslator implements Translator {\n"
-"    public String translate(String sentence) {\n"
-"        return \"Lorem ipsum dolor sit amet\";\n"
-"    }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Mock\n"
-"public class MockSentenceTranslator implements Translator {\n"
-"    public String translate(String sentence) {\n"
-"        return \"Lorem ipsum dolor sit amet\";\n"
-"    }\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:236
-#, no-c-format
-msgid "We would enable the deployment type <literal>@Mock</literal> in our testing environment, to indicate that <literal>MockSentenceTranslator</literal> and any other Web Bean annotated <literal>@Mock</literal> should be used."
-msgstr "In ambiente di test si dovrebbe abilitare il tipo di deploy <literal>@Mock</literal> per indicare che l'uso di <literal>MockSentenceTranslator</literal> ed ogni altro Web Bean annotato con <literal>@Mock</literal>."
-
-#. Tag: para
-#: intro.xml:240
-#, no-c-format
-msgid "We'll talk more about this unique and powerful feature in <xref linkend=\"deploymenttypes\"/>."
-msgstr "Si discuterà questa potente funzionalità con maggior dettaglio in <xref linkend=\"deploymenttypes\"/>.\" "
-
-#. Tag: title
-#: intro.xml:246
-#, no-c-format
-msgid "Scope"
-msgstr "Scope"
-
-# arbitrary scope è corretto "scope arbitrari" ?
-#. Tag: para
-#: intro.xml:248
-#, no-c-format
-msgid "The <emphasis>scope</emphasis> defines the lifecycle and visibility of instances of the Web Bean. The Web Beans context model is extensible, accommodating arbitrary scopes. However, certain important scopes are built-in to the specification, and provided by the Web Bean manager. A scope is represented by an annotation type."
-msgstr "Lo <emphasis>scope</emphasis> definisce il ciclo di vita e la visibilità delle istanze di Web Bean. Il modello di contesto Web Bean è estensibile e facilita gli scope arbitrari. Comunque alcuni importanti scope sono predefiniti all'internodella specifica e vengono forniti dal manager Web Bean. Uno scope è rapresentato da un tipo di annotazione."
-
-#. Tag: para
-#: intro.xml:254
-#, no-c-format
-msgid "For example, any web application may have <emphasis>session scoped</emphasis> Web Beans:"
-msgstr "Per esempio un'applicazione web può avere Web Bean con <emphasis>scope di sessione</emphasis>"
-
-#. Tag: programlisting
-#: intro.xml:257
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:259
-#, no-c-format
-msgid "An instance of a session scoped Web Bean is bound to a user session and is shared by all requests that execute in the context of that session."
-msgstr "Un'istanza di un Web Bean con scope sessione è legato ad una sessione utente ed è condivisa da tutte le richieste che si eseguono nel contesto di tale sessione."
-
-#. Tag: para
-#: intro.xml:262
-#, no-c-format
-msgid "By default, Web Beans belong to a special scope called the <emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are pure dependent objects of the object into which they are injected, and their lifecycle is bound to the lifecycle of that object."
-msgstr "Di default i Web Bean appartengono ad uno speciale scope chiamato <emphasis>pseudo-scope dipendente</emphasis>. Web Bean con questo scope sono oggetti puri dipendenti dall'oggetto nel quale vengono iniettati ed il loro ciclo di vita è legato al ciclo di vita di tale oggetto."
-
-#. Tag: para
-#: intro.xml:267
-#, no-c-format
-msgid "We'll talk more about scopes in <xref linkend=\"scopescontexts\"/>."
-msgstr "Approfondiremo gli scope in <xref linkend=\"scopescontexts\"/>."
-
-#. Tag: title
-#: intro.xml:272
-#, no-c-format
-msgid "Web Bean names and Unified EL"
-msgstr "Nomi Web Bean e Unified EL"
-
-#. Tag: para
-#: intro.xml:274
-#, no-c-format
-msgid "A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in Unified EL expressions. It's easy to specify the name of a Web Bean:"
-msgstr "Un Web Bean può avere un <emphasis>nome</emphasis> che gli consente di essere usato in un'espressione Unified EL. E' facile specificare il nome del Web Bean:"
-
-#. Tag: programlisting
-#: intro.xml:278
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped @Named(\"cart\")\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped @Named(\"cart\")\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:280
-#, no-c-format
-msgid "Now we can easily use the Web Bean in any JSF or JSP page:"
-msgstr "Ora si può facilmente utilizzare il Web Bean in ogni pagina JSF o JSP:"
-
-#. Tag: programlisting
-#: intro.xml:282
-#, no-c-format
-msgid ""
-"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
-"    ....\n"
-"</h:dataTable>]]>"
-msgstr ""
-"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
-"    ....\n"
-"</h:dataTable>]]>"
-
-#. Tag: para
-#: intro.xml:284
-#, no-c-format
-msgid "It's even easier to just let the name be defaulted by the Web Bean manager:"
-msgstr "Si può anche lasciare assegnare al manager Web Bean il nome di default:"
-
-#. Tag: programlisting
-#: intro.xml:287
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped @Named\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped @Named\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:289
-#, no-c-format
-msgid "In this case, the name defaults to <literal>shoppingCart</literal>&#151;the unqualified class name, with the first character changed to lowercase."
-msgstr "In questo caso il nome di default è <literal>shoppingCart</literal>&#151;il nome della classe non qualificata, con il primo carattere messo in minuscolo."
-
-#. Tag: title
-#: intro.xml:295
-#, no-c-format
-msgid "Interceptor binding types"
-msgstr "Tipi di interceptor binding"
-
-#. Tag: para
-#: intro.xml:297
-#, no-c-format
-msgid "Web Beans supports the interceptor functionality defined by EJB 3, not only for EJB beans, but also for plain Java classes. In addition, Web Beans provides a new approach to binding interceptors to EJB beans and other Web Beans."
-msgstr "Web Beans supporta la funzionalità di interceptor definita da EJB 3, non solo per i bean EJB, ma anche per classi Java semplici (plain). In aggiunta, Web Beans fornisce un nuovo approccio al binding di interceptor nei confronti di bean EJB e di altri Web Beans."
-
-#. Tag: para
-#: intro.xml:302
-#, no-c-format
-msgid "It remains possible to directly specify the interceptor class via use of the <literal>@Interceptors</literal> annotation:"
-msgstr "Rimane la possibilità di specificare direttamente la classe interceptor tramite l'uso dell'annotazione <literal>@Interceptors</literal>."
-
-#. Tag: programlisting
-#: intro.xml:305
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped \n"
-"@Interceptors(TransactionInterceptor.class)\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped \n"
-"@Interceptors(TransactionInterceptor.class)\n"
-"public class ShoppingCart { ... }]]>"
-
-# indirect = ?
-#. Tag: para
-#: intro.xml:307
-#, no-c-format
-msgid "However, it is more elegant, and better practice, to indirect the interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
-msgstr "Comunque è più elegante ed è considerata una pratica migliore quella di giungere indirettamente ad un interceptor binding tramite un <emphasis>tipo di interceptor binding</emphasis>:"
-
-#. Tag: programlisting
-#: intro.xml:311
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped @Transactional\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped @Transactional\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:313
-#, no-c-format
-msgid "We'll discuss Web Beans interceptors and decorators in <xref linkend=\"interceptors\"/> and <xref linkend=\"decorators\"/>."
-msgstr "Si discuteranno gli interceptor e i decoratori di Web BEans in <xref linkend=\"interceptors\"/> e <xref linkend=\"decorators\"/>."
-
-#. Tag: title
-#: intro.xml:321
-#, no-c-format
-msgid "What kinds of objects can be Web Beans?"
-msgstr "Quali tipi di oggetti possono essere Web Beans?"
-
-#. Tag: para
-#: intro.xml:323
-#, no-c-format
-msgid "We've already seen that JavaBeans, EJBs and some other Java classes can be Web Beans. But exactly what kinds of objects are Web Beans?"
-msgstr "Si è già visto che JavaBeans, EJB ed altri tipi di classi Java possono essere Web Bean. Ma esattamente quali tipi di oggetti sono Web Beans?"
-
-#. Tag: title
-#: intro.xml:327
-#, no-c-format
-msgid "Simple Web Beans"
-msgstr "Web Beans Semplici"
-
-#. Tag: para
-#: intro.xml:329
-#, no-c-format
-msgid "The Web Beans specification says that a concrete Java class is a <emphasis>simple</emphasis> Web Bean if:"
-msgstr "La specifica Web Beans dice che una classe concreta Java è un Web Bean <emphasis>semplice</emphasis> se:"
-
-#. Tag: para
-#: intro.xml:334
-#, no-c-format
-msgid "it is not an EE container-managed component, like an EJB, a Servlet or a JPA entity,"
-msgstr "Non è un componente gestito da un container EE, come EJB, un Servlet o un entity JPA,"
-
-#. Tag: para
-#: intro.xml:338
-#, no-c-format
-msgid "it is not a non-static static inner class,"
-msgstr "non è una classe interna statica/non statica,"
-
-#. Tag: para
-#: intro.xml:341
-#, no-c-format
-msgid "it is not a parameterized type, and"
-msgstr "non è un tipo parametrizzato, e"
-
-#. Tag: para
-#: intro.xml:344
-#, no-c-format
-msgid "it has a constructor with no parameters, or a constructor annotated <literal>@Initializer</literal>."
-msgstr "ha un costruttore senza parametro, o un costruttore annotato con <literal>@Initializer</literal>."
-
-#. Tag: para
-#: intro.xml:349
-#, no-c-format
-msgid "Thus, almost every JavaBean is a simple Web Bean."
-msgstr "Quindi quasi ogni JavaBean è un Web Bean semplice."
-
-#. Tag: para
-#: intro.xml:351
-#, no-c-format
-msgid "Every interface implemented directly or indirectly by a simple Web Bean is an API type of the simple Web Bean. The class and its superclasses are also API types."
-msgstr "Ogni interfaccia implementata direttamente o indirettamente da un Web Bean semplice è un tipo di API di un Web Bean semplice. La classe e le sue superclassi sono anch'essere tipi di API."
-
-#. Tag: title
-#: intro.xml:358
-#, no-c-format
-msgid "Enterprise Web Beans"
-msgstr "Web Bean Enterprise"
-
-#. Tag: para
-#: intro.xml:360
-#, no-c-format
-msgid "The specification says that all EJB 3-style session and singleton beans are <emphasis>enterprise</emphasis> Web Beans. Message driven beans are not Web Beans&#151;since they are not intended to be injected into other objects&#151;but they can take advantage of most of the functionality of Web Beans, including dependency injection and interceptors."
-msgstr "La specifica dice che tutti i bean di sessione stile EJB3 e quelli singleton sono Web Bean <emphasis>enterprise</emphasis>. I bean message driven non sono Web Bean&#151;poiché non sono intesi per essere iniettati in altri oggetti&#151;ma possono sfruttare la maggior parte della funzionalità dei Web Bean, inclusi dependency injection e interceptor."
-
-# bean class local view = ?
-#. Tag: para
-#: intro.xml:366
-#, no-c-format
-msgid "Every local interface of an enterprise Web Bean that does not have a wildcard type parameter or type variable, and every one of its superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean has a bean class local view, the bean class, and every one of its superclasses, is also an API type."
-msgstr "Ogni interfaccia locale di un Web Bean enterprise che non ha un parametro tipo wildcard o variabile tipo, e ciascuna delle sue superinterfacce, è un tipo di API del Web Bean enterprise. Se il bean EJB ha una vista locale di classe bean, la classe bean e ogni sua superclasse è anch'essa un tipo di API."
-
-#. Tag: para
-#: intro.xml:372
-#, no-c-format
-msgid "Stateful session beans should declare a remove method with no parameters or a remove method annotated <literal>@Destructor</literal>. The Web Bean manager calls this method to destroy the stateful session bean instance at the end of its lifecycle. This method is called the <emphasis>destructor</emphasis> method of the enterprise Web Bean."
-msgstr "I session bean stateful dovrebbero dichiarare un metodo remoto senza parametri od un metodo annotato con <literal>@Destructor</literal>. Il manager Web Bean chiama questo metodo per distruggere l'istanza del session bean statefull alla fine del suo ciclo di vita. Questo metodo è chiamato metodo <emphasis>distruttore</emphasis> del Web Bean enterprise."
-
-#. Tag: programlisting
-#: intro.xml:378
-#, no-c-format
-msgid ""
-"<![CDATA[@Stateful @SessionScoped\n"
-"public class ShoppingCart {\n"
-"\n"
-"    ...\n"
-"    \n"
-"    @Remove\n"
-"    public void destroy() {}\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Stateful @SessionScoped\n"
-"public class ShoppingCart {\n"
-"\n"
-"    ...\n"
-"    \n"
-"    @Remove\n"
-"    public void destroy() {}\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:380
-#, no-c-format
-msgid "So when should we use an enterprise Web Bean instead of a simple Web Bean? Well, whenever we need the advanced enterprise services offered by EJB, such as:"
-msgstr "Ma allora quando occorre usare un Web Bean enterprise invece di un Web Bean semplice? Quando occorrono servizi enterprise avanzati offerti da EJB, quali:"
-
-#. Tag: para
-#: intro.xml:387
-#, no-c-format
-msgid "method-level transaction management and security,"
-msgstr "gestione delle transazioni a livello di metodo e sicurezza,"
-
-#. Tag: para
-#: intro.xml:390
-#, no-c-format
-msgid "concurrency management,"
-msgstr "gestione della concorrenza,"
-
-#. Tag: para
-#: intro.xml:393
-#, no-c-format
-msgid "instance-level passivation for stateful session beans and instance-pooling for stateless session beans,"
-msgstr "passivazione a livello di istanza per session bean stateful e pooling di istanze per session bean stateless,"
-
-#. Tag: para
-#: intro.xml:397
-#, no-c-format
-msgid "remote and web service invocation, and"
-msgstr "invocazione remota e web service, e"
-
-#. Tag: para
-#: intro.xml:400
-#, no-c-format
-msgid "timers and asynchronous methods,"
-msgstr "timer e metodi asincroni,"
-
-#. Tag: para
-#: intro.xml:404
-#, no-c-format
-msgid "we should use an enterprise Web Bean. When we don't need any of these things, a simple Web Bean will serve just fine."
-msgstr "si dovrebbe usare un Web Bean enterprise. Quando non occorrono queste cose, va bene utilizzare un Web Bean semplice."
-
-#. Tag: para
-#: intro.xml:407
-#, no-c-format
-msgid "Many Web Beans (including any session or application scoped Web Bean) are available for concurrent access. Therefore, the concurrency management provided by EJB 3.1 is especially useful. Most session and application scoped Web Beans should be EJBs."
-msgstr "Molti Web Bean (inclusi Web Bean con scope di sessione o applicazione) sono disponibili per accessi concorrenti. Quindi la gestione della concorrenza fornita da EJB3.1 è molto utile. La maggior parte dei Web Bean con scope sessione e applicazione dovrebbero essere EJB."
-
-# internal state benefit =?
-#. Tag: para
-#: intro.xml:412
-#, no-c-format
-msgid "Web Beans which hold references to heavy-weight resources, or hold a lot of internal state benefit from the advanced container-managed lifecycle defined by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal> model, with its support for passivation and instance pooling."
-msgstr "Web Bean che mantengono riferimenti alle risorse pesanti o mantengono molti benefici dello stato interno dal ciclo di vita avanzato, gestito dal container, definito dal modello EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal>\", con supporto alla passivazione e pooling delle istanze."
-
-#. Tag: para
-#: intro.xml:417
-#, no-c-format
-msgid "Finally, it's usually obvious when method-level transaction management, method-level security, timers, remote methods or asynchronous methods are needed."
-msgstr "Infine è ovvio quando occorre usare la gestione delle transazioni a livello di metodo, la sicurezza a livello di metoto, i timer, i metodi remoti o i metodi asincroni."
-
-#. Tag: para
-#: intro.xml:420
-#, no-c-format
-msgid "It's usually easy to start with simple Web Bean, and then turn it into an EJB, just by adding an annotation: <literal>@Stateless</literal>, <literal>@Stateful</literal> or <literal>@Singleton</literal>."
-msgstr "E' facile iniziare con un Web Bean semplice e poi volgere a EJB semplicemente aggiungendo l'annotazione: <literal>@Stateless</literal>, <literal>@Stateful</literal> o <literal>@Singleton</literal>."
-
-#. Tag: title
-#: intro.xml:427
-#, no-c-format
-msgid "Producer methods"
-msgstr "Metodi produttori"
-
-#. Tag: para
-#: intro.xml:429
-#, no-c-format
-msgid "A <emphasis>producer method</emphasis> is a method that is called by the Web Bean manager to obtain an instance of the Web Bean when no instance exists in the current context. A producer method lets the application take full control of the instantiation process, instead of leaving instantiation to the Web Bean manager. For example:"
-msgstr "Un <emphasis>metodo produttore</emphasis> è un metodo che viene chiamato dal manager Web Bean per ottenere un'istanza di un Web Bean quando non esiste alcuna istanza nel contesto corrente. Un metodo produttore lascia all'applicazione il pieno controllo del processo di istanziamento, invece di lasciare l'istanziamento al manager Web Bean. Per esempio:"
-
-#. Tag: programlisting
-#: intro.xml:435
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped\n"
-"public class Generator {\n"
-"\n"
-"    private Random random = new Random( System.currentTimeMillis() );\n"
-"    \n"
-"    @Produces @Random int next() {\n"
-"        return random.nextInt(100);\n"
-"    }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@ApplicationScoped\n"
-"public class Generator {\n"
-"\n"
-"    private Random random = new Random( System.currentTimeMillis() );\n"
-"    \n"
-"    @Produces @Random int next() {\n"
-"        return random.nextInt(100);\n"
-"    }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:437
-#, no-c-format
-msgid "The result of a producer method is injected just like any other Web Bean."
-msgstr "Il risultato del metodo produttore è iniettato come qualsiasi altro Web Bean."
-
-#. Tag: programlisting
-#: intro.xml:439
-#, no-c-format
-msgid "<![CDATA[@Random int randomNumber]]>"
-msgstr "<![CDATA[@Random int randomNumber]]>"
-
-#. Tag: para
-#: intro.xml:441
-#, no-c-format
-msgid "The method return type and all interfaces it extends/implements directly or indirectly are API types of the producer method. If the return type is a class, all superclasses are also API types."
-msgstr "Il tipo di ritorno del metodo e tutte le interfacce che estende/implementa direttamente o indirettamente sono tipi di API del metodo produttore. Se il tipo di ritorno è una classe, tutte le superclassi sono anch'esse tipi di API."
-
-#. Tag: para
-#: intro.xml:445
-#, no-c-format
-msgid "Some producer methods return objects that require explicit destruction:"
-msgstr "Alcuni metodi produttori restituiscono oggetti che richiedono una distruzione esplicita:"
-
-#. Tag: programlisting
-#: intro.xml:447
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
-"    return createConnection( user.getId(), user.getPassword() );\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
-"    return createConnection( user.getId(), user.getPassword() );\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:449
-#, no-c-format
-msgid "These producer methods may define matching <emphasis>disposal methods</emphasis>:"
-msgstr "Questi metodi produttori possono definire corrispondenti <emphasis>metodi distruttori</emphasis>:\""
-
-#. Tag: programlisting
-#: intro.xml:451
-#, no-c-format
-msgid ""
-"<![CDATA[void close(@Disposes Connection connection) {\n"
-"    connection.close();\n"
-"}]]>"
-msgstr ""
-"<![CDATA[void close(@Disposes Connection connection) {\n"
-"    connection.close();\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:453
-#, no-c-format
-msgid "This disposal method is called automatically by the Web Bean manager at the end of the request."
-msgstr "Il metodo distruttore è chiamato direttamente dal manager Web Bean alla fine della richiesta."
-
-#. Tag: para
-#: intro.xml:456
-#, no-c-format
-msgid "We'll talk much more about producer methods in <xref linkend=\"producermethods\"/>."
-msgstr "Si parlerà in maggior dettaglio dei metodi produttori in <xref linkend=\"producermethods\"/>."
-
-#. Tag: title
-#: intro.xml:461
-#, no-c-format
-msgid "JMS endpoints"
-msgstr "Endpoint JMS"
-
-#. Tag: para
-#: intro.xml:463
-#, no-c-format
-msgid "Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the developer from the tedium of managing the lifecycles of all the various JMS objects required to send messages to queues and topics. We'll discuss JMS endpoints in <xref linkend=\"jms\"/>."
-msgstr "Infine una coda od un topic JMS possono essere Web Bean. Web Beans solleva lo sviluppatore dalla noia della gestione dei cicli di vita di tutti i vari oggetti JMS richiesto per inviare messaggi a code o topic. Si discuteranno gli endpoint JMS in <xref linkend=\"jms\"/>."
-

Deleted: doc/trunk/reference/it-IT/modules/next.po
===================================================================
--- doc/trunk/reference/it-IT/modules/next.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/next.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,39 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-20 01:10+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: next.xml:4
-#, no-c-format
-msgid "Next steps"
-msgstr "Prossimi passi"
-
-#. Tag: para
-#: next.xml:6
-#, no-c-format
-msgid "Because Web Beans is so new, there's not yet a lot of information available online."
-msgstr "Poiché Web Beans è così nuova, non è ancora disponibile molta informazione online."
-
-#. Tag: para
-#: next.xml:9
-#, no-c-format
-msgid "Of course, the Web Beans specification is the best source of more information about Web Beans. The spec is about 100 pages long, only twice the length of this article, and almost as readable. But, of course, it covers many details that we've skipped over. The spec is available from <literal>http://jcp.org/en/jsr/detail?id=299</literal>."
-msgstr "La specifica Web Beans è sicuramente la migliore fonte per avere informazioni su Web Beans. La specifica è lunga circa 100 pagine, circa quest'articolo e per lo più leggibile altrettanto facilmente. Ma sicuramente copre molti dettagli che sono stati saltati nel presente documento. La specifica è disponibile al seguente indirizzo <literal>http://jcp.org/en/jsr/detail?id=299</literal>."
-
-#. Tag: para
-#: next.xml:15
-#, no-c-format
-msgid "The Web Beans Reference implementation is being developed at <literal>http://seamframework.org/WebBeans</literal>. The RI development team and the Web Beans spec lead blog at <literal>http://in.relation.to</literal>. This article is substantially based upon a series of blog entries published there."
-msgstr "L'implementazione della documentazione Web Beans è stata sviluppata in <literal>http://seamframework.org/WebBeans</literal>. Il team di sviluppo di RI ed il blog per la specifica Web Beans si trova in <literal>http://in.relation.to</literal>. Quest'articolo è sostanzialmente basato su una serie di articoli pubblicati sul blog."
-

Deleted: doc/trunk/reference/it-IT/modules/part1.po
===================================================================
--- doc/trunk/reference/it-IT/modules/part1.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/part1.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,189 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-24 19:21+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# verificare:
-# 1. sovrappone
-# 2. ciclo di vita (dei componenti)
-#. Tag: para
-#: part1.xml:5
-#, no-c-format
-msgid "The Web Beans (JSR-299) specification defines a set of services for the Java EE environment that makes applications much easier to develop. Web Beans layers an enhanced lifecycle and interaction model over existing Java component types including JavaBeans and Enterprise Java Beans. As a complement to the traditional Java EE programming model, the Web Beans services provide:"
-msgstr "La specifica Web Beans (JSR-299) definisce un insieme di servizi per l'ambiente Java EE che rende molto più facile lo sviluppo di applicazioni. Web Beans sovrappone un più ricco modello di interazione e di gestione del ciclo di vita ai tipi di componenti java esistenti, Java Beans and Enterprise Java Beans inclusi. A complemento del tradizionale modello di programmazione Java EE, i servizi  Web Beans forniscono:"
-
-#. Tag: para
-#: part1.xml:14
-#, no-c-format
-msgid "an improved lifecycle for stateful components, bound to well-defined <emphasis>contexts</emphasis>,"
-msgstr "una migliore gestione del ciclo di vita dei componenti stateful, associata a <emphasis>contesti</emphasis> ben definiti"
-
-#. Tag: para
-#: part1.xml:18
-#, no-c-format
-msgid "a typesafe approach to <emphasis>dependency injection</emphasis>,"
-msgstr "un approccio typesafe alla <emphasis>dependency injection</emphasis>,"
-
-# facility=struttura?
-#. Tag: para
-#: part1.xml:21
-#, no-c-format
-msgid "interaction via an <emphasis>event notification</emphasis> facility, and"
-msgstr "interazioni basate su una struttura per <emphasis>la notifica degli eventi</emphasis>, e"
-
-#. Tag: para
-#: part1.xml:25
-#, no-c-format
-msgid "a better approach to binding <emphasis>interceptors</emphasis> to components, along with a new kind of interceptor, called a <emphasis>decorator</emphasis>, that is more appropriate for use in solving business problems."
-msgstr "un migliore approccio nell'associazione degli <emphasis>interceptors</emphasis> ai componenti, unitamente all'introduzione di un nuovo tipo di interceptor, chiamato <emphasis>decoratore</emphasis>, più adatto ad essere utilizzato nella soluzione di problemi legati alla business logic."
-
-#. Tag: para
-#: part1.xml:32
-#, no-c-format
-msgid "Dependency injection, together with contextual lifecycle management, saves the user of an unfamiliar API from having to ask and answer the following questions:"
-msgstr "La dependency injection, insieme alla gestione contestuale del ciclo di vita dei componenti, risparmia a chi utilizza un API con cui non ha familiarità la necessità di dover formulare le risposte relative alle seguenti domande:"
-
-#. Tag: para
-#: part1.xml:38
-#, no-c-format
-msgid "what is the lifecycle of this object?"
-msgstr "qual è il ciclo di vita di questo oggetto?"
-
-#. Tag: para
-#: part1.xml:41
-#, no-c-format
-msgid "how many simultaneous clients can it have?"
-msgstr "quanti client può simultaneamente avere?"
-
-#. Tag: para
-#: part1.xml:44
-#, no-c-format
-msgid "is it multithreaded?"
-msgstr "è multithreaded?"
-
-# ottenerne/ricavarne
-#. Tag: para
-#: part1.xml:47
-#, no-c-format
-msgid "where can I get one from?"
-msgstr "da dove posso ottenerne uno?"
-
-#. Tag: para
-#: part1.xml:50
-#, no-c-format
-msgid "do I need to explicitly destroy it?"
-msgstr "devo distruggerlo esplicitamente?"
-
-#. Tag: para
-#: part1.xml:53
-#, no-c-format
-msgid "where should I keep my reference to it when I'm not using it directly?"
-msgstr "dove dovrei tenerne il riferimento quando non lo sto usando direttamente?"
-
-#. Tag: para
-#: part1.xml:57
-#, no-c-format
-msgid "how can I add an indirection layer, so that the implementation of this object can vary at deployment time?"
-msgstr "come posso aggiungere un livello di indirezione, in modo che l'implementazione di tale oggetto possa variare deployment time?"
-
-# go about (dovrei comportarmi)???
-#. Tag: para
-#: part1.xml:61
-#, no-c-format
-msgid "how should I go about sharing this object between other objects?"
-msgstr "cosa dovrei fare per condividere questo oggetto con altri oggetti?"
-
-# implementazione concreta mi pare pleonastico
-#. Tag: para
-#: part1.xml:65
-#, no-c-format
-msgid "A Web Bean specifies only the type and semantics of other Web Beans it depends upon. It need not be aware of the actual lifecycle, concrete implementation, threading model or other clients of any Web Bean it depends upon. Even better, the concrete implementation, lifecycle and threading model of a Web Bean it depends upon may vary according to the deployment scenario, without affecting any client."
-msgstr "Un Web Bean specifica soltanto il tipo e la semantica degli altri Web Beans da cui dipende. Non ha bisogno di essere a conoscenza del reale ciclo di vita, della implementazione, del modello di threading o degli altri client dei Web Bean da cui dipende. Ancor meglio, l'implementazione, il ciclo di vita e il modello di threading di un Web Bean da cui dipende possono variare a secondo dello scenario di deployment, senza avere effetti su nessun client."
-
-# <emphasis>loose-coupling</emphasis> è da tradurre?
-# inerente o inerente a?
-#. Tag: para
-#: part1.xml:72
-#, no-c-format
-msgid "Events, interceptors and decorators enhance the <emphasis>loose-coupling</emphasis> that is inherent in this model:"
-msgstr "Eventi, interceptor e decoratori potenziano l'<emphasis>accoppiamento debole</emphasis> (loose-coupling) inerente a questo modello:"
-
-# notifiche o eventi?
-#. Tag: para
-#: part1.xml:77
-#, no-c-format
-msgid "<emphasis>event notifications</emphasis> decouple event producers from event consumers,"
-msgstr "le <emphasis>notifiche degli eventi</emphasis> disaccoppiano i produttori di eventi dai consumatori,"
-
-#. Tag: para
-#: part1.xml:81
-#, no-c-format
-msgid "<emphasis>interceptors</emphasis> decouple technical concerns from business logic, and"
-msgstr "gli <emphasis>interceptor</emphasis> disaccoppiano i problemi tecnici dalla business logic, e"
-
-#. Tag: para
-#: part1.xml:85
-#, no-c-format
-msgid "<emphasis>decorators</emphasis> allow business concerns to be compartmentalized."
-msgstr "i <emphasis>decoratori</emphasis> permettono di compartimentare i problemi di business logic."
-
-# loro consumatori di eventi? destinatari è meglio?
-#. Tag: para
-#: part1.xml:90
-#, no-c-format
-msgid "Most importantly, Web Beans provides all these facilities in a <emphasis>typesafe</emphasis> way. Web Beans never uses string-based identifiers to determine how collaborating objects fit together. And XML, though it remains an option, is rarely used. Instead, Web Beans uses the typing information that is already available in the Java object model, together with a new pattern, called <emphasis>binding annotations</emphasis>, to wire together Web Beans, their dependencies, their interceptors and decorators and their event consumers."
-msgstr "Soprattutto, Web Beans fornisce tutti questi strumenti in un modo <emphasis>typesafe</emphasis>. Web Beans non usa mai identificatori di tipo stringa per determinare come interagiscono oggetti che collaborano fra di loro. Sebbene resti un'opzione, il linguaggio XML è usato raramente. Invece Web Beans utilizza l'informazione di tipo già presente nel modello a oggetti di Java, insieme ad un nuovo pattern, chiamato <emphasis>binding annotations</emphasis>, per assemblare i Web Beans, le loro dipendenze, i loro interceptor e decoratori e i loro consumatori di eventi."
-
-#. Tag: para
-#: part1.xml:100
-#, no-c-format
-msgid "The Web Beans services are general and apply to the following types of components that exist in the Java EE environment:"
-msgstr "I servizi di Web Beans sono generali e applicabili ai seguenti tipi di componenti che esistono in ambiente Java EE:"
-
-#. Tag: para
-#: part1.xml:105
-#, no-c-format
-msgid "all JavaBeans,"
-msgstr "tutti i JavaBeans,"
-
-#. Tag: para
-#: part1.xml:108
-#, no-c-format
-msgid "all EJBs, and"
-msgstr "tutti gli EJB, e"
-
-#. Tag: para
-#: part1.xml:111
-#, no-c-format
-msgid "all Servlets."
-msgstr "tutti i Servlets."
-
-#. Tag: para
-#: part1.xml:115
-#, no-c-format
-msgid "Web Beans even provides the necessary integration points so that other kinds of components defined by future Java EE specifications or by non-standard frameworks may be cleanly integrated with Web Beans, take advantage of the Web Beans services, and interact with any other kind of Web Bean."
-msgstr "Web Beans fornisce anche i necessari punti di integrazione in modo che altri tipi di componenti  definiti da future specifiche Java EE o da framework non standard possano essere integrati in modo trasparente con Web Beans, avvantaggiarsi dei suoi servizi, e interagire con qualunque altro tipo di Web Bean."
-
-#. Tag: para
-#: part1.xml:120
-#, no-c-format
-msgid "Web Beans was influenced by a number of existing Java frameworks, including Seam, Guice and Spring. However, Web Beans has its own very distinct character: more typesafe than Seam, more stateful and less XML-centric than Spring, more web and enterprise-application capable than Guice."
-msgstr "Web Beans è stata influenzata da un buon numero di framework Java esistenti, inclusi Seam, Guice and Spring. Comunque, Web Beans ha un proprio chiaro carattere distintivo: è più sicuro nell'uso dei tipi (typesafe) di Seam, è più orientato allo stato (stateful) e meno basato su XML di Spring, e si sposa meglio alle applicazioni web ed enterprise di Guice."
-
-# dove EJB Lite sia disponibile in modo embeddable
-#. Tag: para
-#: part1.xml:125
-#, no-c-format
-msgid "Most importantly, Web Beans is a JCP standard that integrates cleanly with Java EE, and with any Java SE environment where embeddable EJB Lite is available."
-msgstr "Soprattutto, Web Beans è uno standard JCP che si integra in modo trasparente con Java EE, e con qualunque ambiente Java SE dove EJB Lite sia disponibile in modo embeddable."
-

Deleted: doc/trunk/reference/it-IT/modules/part2.po
===================================================================
--- doc/trunk/reference/it-IT/modules/part2.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/part2.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,84 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-24 19:23+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: para
-#: part2.xml:5
-#, no-c-format
-msgid "The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. We've already seen three means of achieving loose coupling:"
-msgstr "Il primo tema saliente di Web Beans è l'<emphasis>accoppiamento debole (loose coupling)</emphasis>. Abbiamo già visto tre modi per realizzarlo:"
-
-#. Tag: para
-#: part2.xml:10
-#, no-c-format
-msgid "<emphasis>deployment types</emphasis> enable deployment time polymorphism,"
-msgstr "i <emphasis>tipi di deployment</emphasis> rendono possibile il polimorfismo a deployment time,"
-
-#. Tag: para
-#: part2.xml:14
-#, no-c-format
-msgid "<emphasis>producer methods</emphasis> enable runtime polymorphism, and"
-msgstr "i <emphasis>metodi produttori</emphasis> rendono possibile il polimorfismo a runtime, e"
-
-# la gestione del ciclo di vita contestuale  o la gestione contestuale del ciclo di vita?
-#. Tag: para
-#: part2.xml:18
-#, no-c-format
-msgid "<emphasis>contextual lifecycle management</emphasis> decouples Web Bean lifecycles."
-msgstr "<emphasis>la gestione contestuale del ciclo di vita</emphasis> disaccoppia i cicli di vita dei Web Bean."
-
-#. Tag: para
-#: part2.xml:23
-#, no-c-format
-msgid "These techniques serve to enable loose coupling of client and server. The client is no longer tightly bound to an implementation of an API, nor is it required to manage the lifecycle of the server object. This approach lets <emphasis>stateful objects interact as if they were services</emphasis>."
-msgstr "Queste tecniche servono a realizzare l'accoppiamento debole (loose coupling) di client e server. Il client non è più strettamente legato all'implementazione di una API, né è tenuto a gestire il ciclo di vita dell'oggetto server. Questo approccio permette <emphasis>agli oggetti stateful di interagire come se fossero servizi</emphasis>."
-
-#  le funzionalità e gli strumenti sopraelencati
-#. Tag: para
-#: part2.xml:28
-#, no-c-format
-msgid "Loose coupling makes a system more <emphasis>dynamic</emphasis>. The system can respond to change in a well-defined manner. In the past, frameworks that attempted to provide the facilities listed above invariably did it by sacrificing type safety. Web Beans is the first technology that achieves this level of loose coupling in a typesafe way."
-msgstr "L'accoppiamento debole (loose coupling) rende un sistema più <emphasis>dinamico</emphasis>. Il sistema può rispondere ai cambiamenti in un modo ben definito. In passato, i framework che hanno cercato di fornire le funzionalità e gli strumenti sopraelencati, l'hanno puntualmente fatto a discapito della sicurezza dei tipi (type safety). Web Beans è la prima tecnologia a raggiungere questo livello di puntualmente accoppiamento debole (loose coupling) in modo sicuro rispetto all'uso dei tipi."
-
-# sostengono o ampliano o aiutano...
-#. Tag: para
-#: part2.xml:34
-#, no-c-format
-msgid "Web Beans provides three extra important facilities that further the goal of loose coupling:"
-msgstr "Web Beans fornisce tre strumenti extra importanti che ampliano l'obiettivo del loose coupling:"
-
-#. Tag: para
-#: part2.xml:39
-#, no-c-format
-msgid "<emphasis>interceptors</emphasis> decouple technical concerns from business logic,"
-msgstr "gli <emphasis>interceptor</emphasis> disaccoppiano i problemi tecnici dalla business logic,"
-
-#. Tag: para
-#: part2.xml:43
-#, no-c-format
-msgid "<emphasis>decorators</emphasis> may be used to decouple some business concerns, and"
-msgstr "i <emphasis>decoratori</emphasis> possono essere usati per disaccoppiare alcuni problemi relativi alla business logic, e"
-
-#. Tag: para
-#: part2.xml:47
-#, no-c-format
-msgid "<emphasis>event notifications</emphasis> decouple event producers from event consumers."
-msgstr "le <emphasis>notifiche degli eventi</emphasis> disaccoppiano i produttori di eventi dai consumatori."
-
-#. Tag: para
-#: part2.xml:52
-#, no-c-format
-msgid "Let's explore interceptors first."
-msgstr "Innanzitutto esploriamo gli interceptor."
-

Deleted: doc/trunk/reference/it-IT/modules/part3.po
===================================================================
--- doc/trunk/reference/it-IT/modules/part3.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/part3.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,122 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-24 19:30+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# strong typing?
-#. Tag: para
-#: part3.xml:5
-#, no-c-format
-msgid "The second major theme of Web Beans is <emphasis>strong typing</emphasis>. The information about the dependencies, interceptors and decorators of a Web Bean, and the information about event consumers for an event producer, is contained in typesafe Java constructs that may be validated by the compiler."
-msgstr "Il secondo tema saliente di Web Beans è lo <emphasis>tipizzazione forte (strong typing)</emphasis>. Le informazioni riguardanti dipendenze, interceptor e decorator di un Web Bean, e le informazioni sui i consumatori relativi ad un produttore di eventi, sono contenute in costrutti Java sicuri rispetto ai tipi (typesafe) che possono essere validati dal compilatore."
-
-#. Tag: para
-#: part3.xml:10
-#, no-c-format
-msgid "You don't see string-based identifiers in Web Beans code, not because the framework is hiding them from you using clever defaulting rules&#151;so-called \"configuration by convention\"&#151;but because there are simply no strings there to begin with!"
-msgstr "Non si vedono identificatori di tipo stringa nel codice basato su Web Beans, non perché il framework li nasconde usando regole intelligenti nell'assegnamento dei valori di default&#151;la cosiddetta \"configurazione per convenzione (configuration by convention)\"&#151;ma semplicemente perché non ci sono stringhe, tanto per cominciare!"
-
-# senza che sia necessario realizzare dei tools appositi
-#. Tag: para
-#: part3.xml:15
-#, no-c-format
-msgid "The obvious benefit of this approach is that <emphasis>any</emphasis> IDE can provide autocompletion, validation and refactoring without the need for special tooling. But there is a second, less-immediately-obvious, benefit. It turns out that when you start thinking of identifying objects, events or interceptors via annotations instead of names, you have an opportunity to lift the semantic level of your code."
-msgstr "L'ovvio beneficio di questo approccio è che <emphasis>qualunque</emphasis> IDE può fornire autocompletamento, validazione e refactoring senza che sia necessario realizzare dei tools appositi. Ma c'è un secondo beneficio meno immediatamente ovvio. Si scopre che quando si incomincia a pensare di identificare oggetti, eventi o interceptor usando annotazioni invece di nomi, si ha l'opportunità di elevare il livello semantico del proprio codice."
-
-#. Tag: para
-#: part3.xml:21
-#, no-c-format
-msgid "Web Beans encourages you develop annotations that model concepts, for example,"
-msgstr "Web Beans incoraggia a sviluppare annotazioni che modellano concetti, per esempio,"
-
-#. Tag: para
-#: part3.xml:26
-#, no-c-format
-msgid "<literal>@Asynchronous</literal>,"
-msgstr "<literal>@Asynchronous</literal>,"
-
-#. Tag: para
-#: part3.xml:29
-#, no-c-format
-msgid "<literal>@Mock</literal>,"
-msgstr "<literal>@Mock</literal>,"
-
-#. Tag: para
-#: part3.xml:32
-#, no-c-format
-msgid "<literal>@Secure</literal> or"
-msgstr "<literal>@Secure</literal> or"
-
-#. Tag: para
-#: part3.xml:35
-#, no-c-format
-msgid "<literal>@Updated</literal>,"
-msgstr "<literal>@Secure</literal> or"
-
-#. Tag: para
-#: part3.xml:39
-#, no-c-format
-msgid "instead of using compound names like"
-msgstr "invece di usare nomi composti come"
-
-#. Tag: para
-#: part3.xml:43
-#, no-c-format
-msgid "<literal>asyncPaymentProcessor</literal>,"
-msgstr "<literal>asyncPaymentProcessor</literal>,"
-
-#. Tag: para
-#: part3.xml:46
-#, no-c-format
-msgid "<literal>mockPaymentProcessor</literal>,"
-msgstr "<literal>mockPaymentProcessor</literal>,"
-
-#. Tag: para
-#: part3.xml:49
-#, no-c-format
-msgid "<literal>SecurityInterceptor</literal> or"
-msgstr "<literal>SecurityInterceptor</literal> or"
-
-#. Tag: para
-#: part3.xml:52
-#, no-c-format
-msgid "<literal>DocumentUpdatedEvent</literal>."
-msgstr "<literal>DocumentUpdatedEvent</literal>."
-
-# literate=elegante?
-#. Tag: para
-#: part3.xml:56
-#, no-c-format
-msgid "The annotations are reusable. They help describe common qualities of disparate parts of the system. They help us categorize and understand our code. They help us deal with common concerns in a common way. They make our code more literate and more understandable."
-msgstr "Le annotazioni sono riutilizzabili. Aiutano a descrivere caratteristiche comuni di parti diverse del sistema. Ci aiutano a categorizzare e comprendere il nostro stesso codice. Ci aiutano ad affrontare i concern comuni in un modo comune. Rendono il nostro codice più elegante e comprensibile."
-
-#. Tag: para
-#: part3.xml:61
-#, no-c-format
-msgid "Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A stereotype models a common <emphasis>role</emphasis> in your application architecture. It encapsulates various properties of the role, including scope, interceptor bindings, deployment type, etc, into a single reusable package."
-msgstr "Gli <emphasis>stereotipi (stereotypes)</emphasis> di Web Beans fanno fare un ulteriore passo in avanti a questa idea. Uno stereotipo descrive un <emphasis>ruolo</emphasis> comune nell'architettura di un'applicazione. Incapsula in un unico pacchetto riutilizzabile varie proprietà del ruolo stesso, inclusi lo scope, gli interceptor bindings, il tipo di deployment, etc, ."
-
-# literate=elegante (come in altri contesti)? oppure = letterato/informato/cosciente. Qui scelgo informato... nel senso di cosciente di se stesso.
-# l'XML=i descrittori XML, il codice XML?
-#. Tag: para
-#: part3.xml:66
-#, no-c-format
-msgid "Even Web Beans XML metadata is strongly typed! There's no compiler for XML, so Web Beans takes advantage of XML schemas to validate the Java types and attributes that appear in XML. This approach turns out to make the XML more literate, just like annotations made our Java code more literate."
-msgstr "Persino i metadati XML di Web Beans sono fortemente tipizzati (strongly typed)! Non esistendo un compilatore XML, Web Beans si basa sugli schemi XML per validare i tipi Java e gli attributi che compaiono nell'XML. Questo approccio finisce col rendere il codice XML più informato, proprio come le annotazioni rendono il codice Java + informato."
-
-#. Tag: para
-#: part3.xml:71
-#, no-c-format
-msgid "We're now ready to meet some more advanced features of Web Beans. Bear in mind that these features exist to make our code both easier to validate and more understandable. Most of the time you don't ever really <emphasis>need</emphasis> to use these features, but if you use them wisely, you'll come to appreciate their power."
-msgstr "Ora siamo pronti ad incontrare alcune caratteristiche più avanzate di Web Beans. Tenete a mente che tali caratteristiche esistono sia per rendere il nostro codice più facile da validare che per renderlo più comprensibile. La maggior parte delle volte non è necessario usare tali carattestiche, ma, se usate con accortezza, si arriverà ad apprezzerne l'efficacia."
-

Deleted: doc/trunk/reference/it-IT/modules/part4.po
===================================================================
--- doc/trunk/reference/it-IT/modules/part4.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/part4.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,34 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-24 19:34+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: para
-#: part4.xml:5
-#, no-c-format
-msgid "The third theme of Web Beans is <emphasis>integration</emphasis>. Web Beans was designed to work in concert with other technologies, helping the application developer fit the other technologies together. Web Beans is an open technology. It forms a part of the Java EE ecosystem, and is itself the foundation for a new ecosystem of portable extensions and integration with existing frameworks and technologies."
-msgstr "Il terzo tema di Web Beans è <emphasis>l'integrazione</emphasis>. Web Beans è stata progettata per funzionare in armonia con altre tecnologie, per aiutare lo sviluppatore a far funzionare assieme le altre tecnologie. Web Beans è una tecnologia aperta. Costituisce una parte dell'ecosistema Java EE, ed è essa stessa la fondazione di un nuovo ecosistema di estensioni portabili e di integrazioni con framework e tecnologie esistenti."
-
-# modelli a componenti o architetture a componenti?
-#. Tag: para
-#: part4.xml:12
-#, no-c-format
-msgid "We've already seen how Web Beans helps integrate EJB and JSF, allowing EJBs to be bound directly to JSF pages. That's just the beginning. Web Beans offers the same potential to diverse other technologies, such as Business Process Management engines, other Web Frameworks, and third-party component models. The Java EE platform will never be able to standardize all the interesting technologies that are used in the world of Java application development, but Web Beans makes it easier to use the technologies which are not yet part of the platform seamlessly within the Java EE environment."
-msgstr "Abbiamo già visto come Web Beans aiuti ad integrare EJB con JSF, permettendo agli EJB di essere legati direttamente alle pagine JSF. Questo non è che l'inizio. Web Beans offre le stesse potenzialità ad altre e diverse tecnologie, quali i motori di gestione di processi di business, altri Framework Web, e modelli a componenti di terze parti. La piattaforma Java EE non potrà mai standardizzare tutte le interessanti tecnologie utilizzate nel mondo dello sviluppo di applicazioni Java, ma Web Beans rende più facile usare in modo trasparente all'interno dell'ambiente Java EE tecnologie che non fanno ancora parte di tale ambiente."
-
-#. Tag: para
-#: part4.xml:21
-#, no-c-format
-msgid "We're about to see how to take full advantage of the Java EE platform in an application that uses Web Beans. We'll also briefly meet a set of SPIs that are provided to support portable extensions to Web Beans. You might not ever need to use these SPIs directly, but it's nice to know they are there if you need them. Most importantly, you'll take advantage of them indirectly, every time you use a third-party extension."
-msgstr "Stiamo per scoprire come sfruttare appieno la piattaforma Java EE in applicazioni che usano  Web Beans. Scorreremo anche velocemente un insieme di SPI (Service Provider Interface) fornite per permettere la realizzazione di estensioni portabili di Web Beans. Potrebbe non essere mai necessario usare queste SPI direttamente, ma è opportuno sapere che esistono, qualora possano servire. Soprattutto, le si sfrutterà in modo indiretto ogni volta che si utilizzeranno estensioni di terze parti."
-

Deleted: doc/trunk/reference/it-IT/modules/producermethods.po
===================================================================
--- doc/trunk/reference/it-IT/modules/producermethods.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/producermethods.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,223 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:08+0000\n"
-"PO-Revision-Date: 2008-12-21 10:30+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: producermethods.xml:5
-#, no-c-format
-msgid "Producer methods"
-msgstr "Metodi produttori"
-
-#. Tag: para
-#: producermethods.xml:7
-#, no-c-format
-msgid "Producer methods let us overcome certain limitations that arise when the Web Bean manager, instead of the application, is responsible for instantiating objects. They're also the easiest way to integrate objects which are not Web Beans into the Web Beans environment. (We'll meet a second approach in <xref linkend=\"xml\"/>.)"
-msgstr "I metodi produttori consentono di superare alcune limitazioni che sorgono quando il manager Web Bean è responsabile dell'istanziamento degli oggetti al posto dell'applicazione. Questi metodi sono anche il modo migliore per integrare gli oggetti che non sono Web Beans dentro l'ambiente Web Beans. (Si incontrerà un secondo approccio in <xref linkend=\"xml\"/>.)"
-
-#. Tag: para
-#: producermethods.xml:12
-#, no-c-format
-msgid "According to the spec:"
-msgstr "Secondo la specifica:"
-
-#. Tag: chapter
-#: producermethods.xml:12
-#, no-c-format
-msgid ""
-"<blockquote> <para>A Web Beans producer method acts as a source of objects to be injected, where:</para> <itemizedlist> <listitem> <para>the objects to be injected are not required to be instances of Web Beans,</para> </listitem> <listitem> <para>the concrete type of the objects to be injected may vary at runtime or</para> </listitem> <listitem> <para>the objects require some custom initialization that is not performed by the Web Bean constructor</para> </listitem> </itemizedlist> </blockquote> <para>For example, producer methods let us:</para> <itemizedlist> <listitem> <para>expose a JPA entity as a Web Bean,</para> </listitem> <listitem> <para>expose any JDK class as a Web Bean,</para> </listitem> <listitem> <para>define multiple Web Beans, with different scopes or initialization, for the same implementation class, or</para> </listitem> <listitem> <para>vary the implementation of an API type at runtime.</para> </listitem> </itemizedlist> <para>In particular, producer met!
 hods let us use runtime polymorphism with Web Beans. As we've seen, deployment types are a powerful solution to the problem of deployment-time polymorphism. But once the system is deployed, the Web Bean implementation is fixed. A producer method has no such limitation:</para> <programlisting role=\"JAVA\"><![CDATA[@SessionScoped\n"
-"public class Preferences {\n"
-"    \n"
-"    private PaymentStrategyType paymentStrategy;\n"
-"    \n"
-"    ...\n"
-"    \n"
-"    @Produces @Preferred \n"
-"    public PaymentStrategy getPaymentStrategy() {\n"
-"        switch (paymentStrategy) {\n"
-"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
-"            case CHEQUE: return new ChequePaymentStrategy();\n"
-"            case PAYPAL: return new PayPalPaymentStrategy();\n"
-"            default: return null;\n"
-"        } \n"
-"    }\n"
-"    \n"
-"}]]></programlisting> <para>Consider an injection point:</para> <programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy paymentStrat;]]></programlisting> <para>This injection point has the same type and binding annotations as the producer method, so it resolves to the producer method using the usual Web Beans injection rules. The producer method will be called by the Web Bean manager to obtain an instance to service this injection point.</para>."
-msgstr ""
-"<blockquote> <para>Un metodo produttore Web Bean agisce come sorgente di oggetti da iniettare, dove:</para> <itemizedlist> <listitem> <para>gli oggetti da iniettare non è richiesto siano istanze di Web Beans,</para> </listitem> <listitem> <para>il tipo concreto di oggetti da iniettare può variare a runtime o</para> </listitem> <listitem> <para>gli oggetti richiedono alcune inizializzazini personalizzate che non vengono eseguite dal costruttore Web Bean</para> </listitem> </itemizedlist> </blockquote> <para>Per esempio un metodo produttore consente di:</para> <itemizedlist> <listitem> <para>esporre un entity JPA comeWeb Bean,</para> </listitem> <listitem> <para>esporre qualsiasi classe JDK comeWeb Bean,</para> </listitem> <listitem> <para>definire Web Beans multipli, con scope o inizializzazione differenti, per la stessa implementazionedi classe, o</para> </listitem> <listitem> <para>variare l'implementazione di un tipo di API a runtime.</para> </listitem> </itemizedlist>!
  <para>In particolare, i metodi produttori consentono di usare un polimorfismo a runtime con i Web Beans. Come visto, i tipi di deploy sono soluzioni al problema del polimorfismo durante la fase di deploy. Ma una volta che il sistema viene deployato, l'implementazione del Web Bean viene fissata. Un metodo produttore non ha questi limiti:</para> <programlisting role=\"JAVA\"><![CDATA[@SessionScoped\n"
-"public class Preferences {\n"
-"    \n"
-"    private PaymentStrategyType paymentStrategy;\n"
-"    \n"
-"    ...\n"
-"    \n"
-"    @Produces @Preferred \n"
-"    public PaymentStrategy getPaymentStrategy() {\n"
-"        switch (paymentStrategy) {\n"
-"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
-"            case CHEQUE: return new ChequePaymentStrategy();\n"
-"            case PAYPAL: return new PayPalPaymentStrategy();\n"
-"            default: return null;\n"
-"        } \n"
-"    }\n"
-"    \n"
-"}]]></programlisting> <para>Si consideri un punto di iniezione:</para> <programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy paymentStrat;]]></programlisting> <para>Questo punto di iniezione ha lo stesso tipo e annotazioni di binding del metodo produttore, e quindi risolve i metodi produttori usando le regole di iniezione dei Web Beans. Il metodo produttore verrà chiamato dal manager Web Bean per ottenere un'istanza per per servire questo punto di iniezione.</para>"
-
-#. Tag: title
-#: producermethods.xml:68
-#, no-c-format
-msgid "Scope of a producer method"
-msgstr "Scope di un metodo produttore"
-
-#. Tag: para
-#: producermethods.xml:70
-#, no-c-format
-msgid "The scope of the producer method defaults to <literal>@Dependent</literal>, and so it will be called <emphasis>every time</emphasis> the Web Bean manager injects this field or any other field that resolves to the same producer method. Thus, there could be multiple instances of the <literal>PaymentStrategy</literal> object for each user session."
-msgstr "Lo scope dei metodi produttori è di default impostato a <literal>@Dependent</literal>, e quindi verrà chiamato <emphasis>ogni volta</emphasis> che il manager Web Bean inietta questo campo o qualsiasi altro campi che risolve lo stesso metodo produttore. Quindi ci potrebbero essere istanze multiple dell'oggetto <literal>PaymentStrategy</literal> per ogni sessione utente."
-
-#. Tag: para
-#: producermethods.xml:75
-#, no-c-format
-msgid "To change this behavior, we can add a <literal>@SessionScoped</literal> annotation to the method."
-msgstr "Per cambiare questo comportamento si può aggiungere un'annotazione <literal>@SessionScoped</literal> al metodo."
-
-#. Tag: programlisting
-#: producermethods.xml:78
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy() {\n"
-"    ...\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy() {\n"
-"    ...\n"
-"}]]>"
-
-#. Tag: para
-#: producermethods.xml:80
-#, no-c-format
-msgid "Now, when the producer method is called, the returned <literal>PaymentStrategy</literal> will be bound to the session context. The producer method won't be called again in the same session."
-msgstr "Ora, quando il metodo produttore viene chiamato, il <literal>PaymentStrategy</literal> restituito verrà associato al contesto di sessione. Il metodo produttore non verrà più chiamato nella stessa sessione."
-
-#. Tag: title
-#: producermethods.xml:87
-#, no-c-format
-msgid "Injection into producer methods"
-msgstr "Iniezione nei metodi produttori"
-
-#. Tag: para
-#: producermethods.xml:89
-#, no-c-format
-msgid "There's one potential problem with the code above. The implementations of <literal>CreditCardPaymentStrategy</literal> are instantiated using the Java <literal>new</literal> operator. Objects instantiated directly by the application can't take advantage of dependency injection and don't have interceptors."
-msgstr "C'è un potenziale problema con il codice visto sopra. Le implementazioni di <literal>CreditCardPaymentStrategy</literal> vengono istanziate usando l'operatore Java <literal>new</literal>. Gli oggetti istanziati direttamente dall'applicazione non possono sfruttare la dependency injection e non hanno interceptor."
-
-#. Tag: para
-#: producermethods.xml:94
-#, no-c-format
-msgid "If this isn't what we want we can use dependency injection into the producer method to obtain Web Bean instances:"
-msgstr "Se questo non è ciò che si vuole, è possibile usare la dependency injection nel metodo produttore per ottenere istanze Web Bean:"
-
-#. Tag: programlisting
-#: producermethods.xml:97
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
-"                                          ChequePaymentStrategy cps,\n"
-"                                          PayPalPaymentStrategy ppps) {\n"
-"    switch (paymentStrategy) {\n"
-"        case CREDIT_CARD: return ccps;\n"
-"        case CHEQUE: return cps;\n"
-"        case PAYPAL: return ppps;\n"
-"        default: return null;\n"
-"    } \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
-"                                          ChequePaymentStrategy cps,\n"
-"                                          PayPalPaymentStrategy ppps) {\n"
-"    switch (paymentStrategy) {\n"
-"        case CREDIT_CARD: return ccps;\n"
-"        case CHEQUE: return cps;\n"
-"        case PAYPAL: return ppps;\n"
-"        default: return null;\n"
-"    } \n"
-"}]]>"
-
-#. Tag: para
-#: producermethods.xml:99
-#, no-c-format
-msgid "Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request scoped Web Bean? Then the producer method has the effect of \"promoting\" the current request scoped instance into session scope. This is almost certainly a bug! The request scoped object will be destroyed by the Web Bean manager before the session ends, but the reference to the object will be left \"hanging\" in the session scope. This error will <emphasis>not</emphasis> be detected by the Web Bean manager, so please take extra care when returning Web Bean instances from producer methods!"
-msgstr "Ma cosa succede se <literal>CreditCardPaymentStrategy</literal> è un Web Bean con scope di tipo richiesta? Il metodo produttore ha l'effetto di \"promuovere\" l'istanza corrente con scope di tipo richiesta a scope di tipo sessione. Questo è quasi certamente un bug! L'oggetto con scope richiesta verrà distrutto dal manager Web Bean prima che la sessione termini. Quest'errore <emphasis>non</emphasis> verrà rilevato dal manager Web Bean, quindi si faccia attenzione quando si restituiscono istanze Web Bean dai metodi produttori!"
-
-#. Tag: para
-#: producermethods.xml:107
-#, no-c-format
-msgid "There's at least three ways we could go about fixing this bug. We could change the scope of the <literal>CreditCardPaymentStrategy</literal> implementation, but this would affect other clients of that Web Bean. A better option would be to change the scope of the producer method to <literal>@Dependent</literal> or <literal>@RequestScoped</literal>."
-msgstr "Ci sono almeno 3 modi per correggere questo bug. Si può cambiare lo scope dell'implementazione di <literal>CreditCardPaymentStrategy</literal>, ma questo non influenzerebbe gli altri client di questo Web Bean. Un'opzione migliore sarebbe quella di cambiare lo scope del metodo produttore a <literal>@Dependent</literal> o <literal>@RequestScoped</literal>."
-
-#. Tag: para
-#: producermethods.xml:113
-#, no-c-format
-msgid "But a more common solution is to use the special <literal>@New</literal> binding annotation."
-msgstr "Ma una soluzione più comune è quella di usare la speciale annotazione di binding <literal>@New</literal>."
-
-#. Tag: title
-#: producermethods.xml:119
-#, no-c-format
-msgid "Use of <literal>@New</literal> with producer methods"
-msgstr "Uso di <literal>@New</literal> con i metodi produttori"
-
-#. Tag: para
-#: producermethods.xml:121
-#, no-c-format
-msgid "Consider the following producer method:"
-msgstr "Si consideri il seguente metodo produttore:"
-
-#. Tag: programlisting
-#: producermethods.xml:123
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy ccps,\n"
-"                                          @New ChequePaymentStrategy cps,\n"
-"                                          @New PayPalPaymentStrategy ppps) {\n"
-"    switch (paymentStrategy) {\n"
-"        case CREDIT_CARD: return ccps;\n"
-"        case CHEQUE: return cps;\n"
-"        case PAYPAL: return ppps;\n"
-"        default: return null;\n"
-"    } \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy ccps,\n"
-"                                          @New ChequePaymentStrategy cps,\n"
-"                                          @New PayPalPaymentStrategy ppps) {\n"
-"    switch (paymentStrategy) {\n"
-"        case CREDIT_CARD: return ccps;\n"
-"        case CHEQUE: return cps;\n"
-"        case PAYPAL: return ppps;\n"
-"        default: return null;\n"
-"    } \n"
-"}]]>"
-
-#. Tag: para
-#: producermethods.xml:125
-#, no-c-format
-msgid "Then a new <emphasis>dependent</emphasis> instance of <literal>CreditCardPaymentStrategy</literal> will be created, passed to the producer method, returned by the producer method and finally bound to the session context. The dependent object won't be destroyed until the <literal>Preferences</literal> object is destroyed, at the end of the session."
-msgstr "Quindi verrebbe creata una nuova istanza <emphasis>dipendente</emphasis> di <literal>CreditCardPaymentStrategy</literal>, passata al metodo produttore, ritornata al metodo produttore ed infine associata al contesto di sessione. L'oggetto dipendente non verrebbe distrutto finché l'oggetto <literal>Preferences</literal> non venga distrutto, cioè a fine sessione."
-

Deleted: doc/trunk/reference/it-IT/modules/ri-spi.po
===================================================================
--- doc/trunk/reference/it-IT/modules/ri-spi.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/ri-spi.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,328 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:07+0000\n"
-"PO-Revision-Date: 2008-12-25 14:12+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: ri-spi.xml:4
-#, no-c-format
-msgid "Integrating the Web Beans RI into other environments"
-msgstr "Integrazione di Web Beans RI in altri ambienti"
-
-#. Tag: para
-#: ri-spi.xml:6
-#, no-c-format
-msgid "Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI into other EE environments (for example another application server like Glassfish), into a servlet container (like Tomcat), or with an Embedded EJB3.1 implementation is fairly easy. In this Appendix we will briefly discuss the steps needed."
-msgstr "Attualmente Web Bean RI funziona solo in JBoss AS 5; l'integrazione di RI in altri ambienti EE (per esempio in un application server come Glassfish), in un servlet container (come Tomcat), o con un'implementazione EJB3.1 Embedded è abbastanza facile. In questo appendice si discuterà brevemente dei passi necessari."
-
-#. Tag: para
-#: ri-spi.xml:15
-#, no-c-format
-msgid "It should be possible to run Web Beans in an SE environment, but you'll to do more work, adding your own contexts and lifecycle. The Web Beans RI currently doesn't expose lifecycle extension points, so you would have to code directly against Web Beans RI classes."
-msgstr "Dovrebbe essere possibile far funzionare Web Beans in un ambiente SE, ma occorre molto lavoro per aggiungere i propri contesti ed il ciclo di vita. Web Beans RI attualmemnte non espone punti di estensione del ciclo di vita, così occorre codificare direttamente nelle classi Web Beans RI."
-
-#. Tag: title
-#: ri-spi.xml:24
-#, no-c-format
-msgid "The Web Beans RI SPI"
-msgstr "Web Beans RI SPI"
-
-#. Tag: para
-#: ri-spi.xml:26
-#, no-c-format
-msgid "The Web Beans SPI is located in <literal>webbeans-ri-spi</literal> module, and packaged as <literal>webbeans-ri-spi.jar</literal>."
-msgstr "Web Beans SPI è collocato nel modulo <literal>webbeans-ri-spi</literal>, ed è impacchettato come <literal>webbeans-ri-spi.jar</literal>.\""
-
-#. Tag: para
-#: ri-spi.xml:31
-#, no-c-format
-msgid "Currently, the only SPI to implement is the bootstrap spi:"
-msgstr "Attualmente l'unico SPI (Service Provider Interface) da implementare è l'spi di bootstrap:"
-
-#. Tag: programlisting
-#: ri-spi.xml:35
-#, no-c-format
-msgid ""
-"<![CDATA[public interface WebBeanDiscovery {\n"
-"   /**\n"
-"    * Gets list of all classes in classpath archives with web-beans.xml files\n"
-"    * \n"
-"    * @return An iterable over the classes \n"
-"    */\n"
-"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
-"   \n"
-"   /**\n"
-"    * Gets a list of all web-beans.xml files in the app classpath\n"
-"    * \n"
-"    * @return An iterable over the web-beans.xml files \n"
-"    */\n"
-"   public Iterable<URL> discoverWebBeansXml();\n"
-"   \n"
-"   /**\n"
-"    * Gets a descriptor for each EJB in the application\n"
-"    * \n"
-"    * @return The bean class to descriptor map \n"
-"    */\n"
-"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
-"   \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public interface WebBeanDiscovery {\n"
-"   /**\n"
-"    * Gets list of all classes in classpath archives with web-beans.xml files\n"
-"    * \n"
-"    * @return An iterable over the classes \n"
-"    */\n"
-"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
-"   \n"
-"   /**\n"
-"    * Gets a list of all web-beans.xml files in the app classpath\n"
-"    * \n"
-"    * @return An iterable over the web-beans.xml files \n"
-"    */\n"
-"   public Iterable<URL> discoverWebBeansXml();\n"
-"   \n"
-"   /**\n"
-"    * Gets a descriptor for each EJB in the application\n"
-"    * \n"
-"    * @return The bean class to descriptor map \n"
-"    */\n"
-"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
-"   \n"
-"}]]>"
-
-#. Tag: para
-#: ri-spi.xml:37
-#, no-c-format
-msgid "The discovery of Web Bean classes and <literal>web-bean.xml</literal> files is self-explanatory (the algorithm is described in Section 11.1 of the JSR-299 specification, and isn't repeated here)."
-msgstr "L'analisi dei file delle classi Web Bean e di <literal>web-bean.xml</literal> è molto istruttiva (l'algoritmo è descritto nella sezione 11.1 della specifica JSR-299 e non viene qua ripetuto)."
-
-#. Tag: para
-#: ri-spi.xml:43
-#, no-c-format
-msgid "The Web Beans RI also delegates EJB3 bean discovery to the container so that it doesn't have to scan for EJB3 annotations or parse <literal>ejb-jar.xml</literal>. For each EJB in the application an EJBDescriptor should be discovered:"
-msgstr "Web Beans RI delega al container la rilevazione dei bean EJB3 così da non essere necessario eseguire lo scan delle annotazioni EJB3 o fare il parsing di <literal>ejb-jar.xml</literal>. Per ciascun EJB nell'applicazione dovrebbe essere rilevato un EJBDescriptor:"
-
-#. Tag: programlisting
-#: ri-spi.xml:50
-#, no-c-format
-msgid ""
-"<![CDATA[public interface EjbDescriptor<T> {\n"
-"   \n"
-"   /**\n"
-"    * Gets the EJB type\n"
-"    * \n"
-"    * @return The EJB Bean class\n"
-"    */\n"
-"   public Class<T> getType();\n"
-"\n"
-"   /**\n"
-"    * Gets the local business interfaces of the EJB\n"
-"    * \n"
-"    * @return An iterator over the local business interfaces\n"
-"    */\n"
-"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces();\n"
-"   \n"
-"   /**\n"
-"    * Gets the remote business interfaces of the EJB\n"
-"    * \n"
-"    * @return An iterator over the remote business interfaces\n"
-"    */\n"
-"   public Iterable<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces();\n"
-"   \n"
-"   /**\n"
-"    * Get the remove methods of the EJB\n"
-"    * \n"
-"    * @return An iterator over the remove methods\n"
-"    */\n"
-"   public Iterable<MethodDescriptor> getRemoveMethods();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the bean is stateless\n"
-"    * \n"
-"    * @return True if stateless, false otherwise\n"
-"    */\n"
-"   public boolean isStateless();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the bean is a EJB 3.1 Singleton\n"
-"    * \n"
-"    * @return True if the bean is a singleton, false otherwise\n"
-"    */\n"
-"   public boolean isSingleton();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the EJB is stateful\n"
-"    * \n"
-"    * @return True if the bean is stateful, false otherwise\n"
-"    */\n"
-"   public boolean isStateful();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the EJB is and MDB\n"
-"    * \n"
-"    * @return True if the bean is an MDB, false otherwise\n"
-"    */\n"
-"   public boolean isMessageDriven();\n"
-"\n"
-"   /**\n"
-"    * Gets the EJB name\n"
-"    * \n"
-"    * @return The name\n"
-"    */\n"
-"   public String getEjbName();\n"
-"   \n"
-"   /**\n"
-"    * @return The JNDI string which can be used to lookup a proxy which \n"
-"    * implements all local business interfaces \n"
-"    * \n"
-"    */\n"
-"   public String getLocalJndiName();\n"
-"   \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public interface EjbDescriptor<T> {\n"
-"   \n"
-"   /**\n"
-"    * Gets the EJB type\n"
-"    * \n"
-"    * @return The EJB Bean class\n"
-"    */\n"
-"   public Class<T> getType();\n"
-"\n"
-"   /**\n"
-"    * Gets the local business interfaces of the EJB\n"
-"    * \n"
-"    * @return An iterator over the local business interfaces\n"
-"    */\n"
-"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces();\n"
-"   \n"
-"   /**\n"
-"    * Gets the remote business interfaces of the EJB\n"
-"    * \n"
-"    * @return An iterator over the remote business interfaces\n"
-"    */\n"
-"   public Iterable<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces();\n"
-"   \n"
-"   /**\n"
-"    * Get the remove methods of the EJB\n"
-"    * \n"
-"    * @return An iterator over the remove methods\n"
-"    */\n"
-"   public Iterable<MethodDescriptor> getRemoveMethods();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the bean is stateless\n"
-"    * \n"
-"    * @return True if stateless, false otherwise\n"
-"    */\n"
-"   public boolean isStateless();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the bean is a EJB 3.1 Singleton\n"
-"    * \n"
-"    * @return True if the bean is a singleton, false otherwise\n"
-"    */\n"
-"   public boolean isSingleton();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the EJB is stateful\n"
-"    * \n"
-"    * @return True if the bean is stateful, false otherwise\n"
-"    */\n"
-"   public boolean isStateful();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the EJB is and MDB\n"
-"    * \n"
-"    * @return True if the bean is an MDB, false otherwise\n"
-"    */\n"
-"   public boolean isMessageDriven();\n"
-"\n"
-"   /**\n"
-"    * Gets the EJB name\n"
-"    * \n"
-"    * @return The name\n"
-"    */\n"
-"   public String getEjbName();\n"
-"   \n"
-"   /**\n"
-"    * @return The JNDI string which can be used to lookup a proxy which \n"
-"    * implements all local business interfaces \n"
-"    * \n"
-"    */\n"
-"   public String getLocalJndiName();\n"
-"   \n"
-"}]]>"
-
-#. Tag: para
-#: ri-spi.xml:52
-#, no-c-format
-msgid "The contract described the JavaDoc is enough to implement an EJBDescriptor. In addition to these two interfaces, there is <literal>BusinessInterfaceDescriptor</literal> which represents a local business interface (encapsulating the interface class and jndi name), and <literal>MethodDescriptor</literal> which encapsulates the method name and parameter types (allowing it to be invoked on any instance of the EJB, proxy or otherwise)."
-msgstr "Il contrattodescritto in JavaDoc è sufficiente per implementare un EJBDescriptor. In aggiunta a queste due interfacce, vi è <literal>BusinessInterfaceDescriptor</literal> a rappresentare un'interfaccia locale di business (che incapsula la classe d'interfaccia ed il nome jndi), e <literal>MethodDescriptor</literal> che incapsula il nome del metodo ed i tipi di parametri (che consentono di essere invocati su qualsiasi istanza di EJB, proxy o altro)."
-
-#. Tag: para
-#: ri-spi.xml:62
-#, no-c-format
-msgid "The Web Beans RI can be told to load your implementation of <literal>WebBeanDiscovery</literal> using the property <literal>org.jboss.webbeans.bootstrap.webBeanDiscovery</literal> with the fully qualified class name as the value. For example:"
-msgstr "Web Beans RI può essere istruita a caricare la propria implementazione di <literal>WebBeanDiscovery</literal> usando la proprietà <literal>org.jboss.webbeans.bootstrap.webBeanDiscovery</literal> con il nome della classe pienamente qualificato (fully qualified) come valore. Per esempio:"
-
-#. Tag: programlisting
-#: ri-spi.xml:69
-#, no-c-format
-msgid "org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration.jbossas.WebBeanDiscoveryImpl"
-msgstr "org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration.jbossas.WebBeanDiscoveryImpl"
-
-#. Tag: para
-#: ri-spi.xml:71
-#, no-c-format
-msgid "The property can either be specified as a system property, or in a properties file <literal>META-INF/web-beans-ri.properties</literal>."
-msgstr "La proprietà può essere specificata come proprietà di sistema o nel file di proprietà <literal>META-INF/web-beans-ri.properties</literal>."
-
-#. Tag: title
-#: ri-spi.xml:79
-#, no-c-format
-msgid "The contract with the container"
-msgstr "Il contratto con il container"
-
-# rivedere la frase
-#. Tag: para
-#: ri-spi.xml:81
-#, no-c-format
-msgid "There are a number of requirements that the Web Beans RI places on the container for correct functioning that fall outside implementation of APIs"
-msgstr "Ci sono un numero di requisiti che Web Beans RI pone nel container per il corretto funzionamento al di fuori dell'implementazione delle API"
-
-#. Tag: term
-#: ri-spi.xml:89
-#, no-c-format
-msgid "Classloader isolation"
-msgstr "Isolamento del classloader"
-
-#. Tag: para
-#: ri-spi.xml:93
-#, no-c-format
-msgid "If you are integrating the Web Beans into an environment that supports deployment of applications, you must enable, automatically, or through user configuation, classloader isolation for each Web Beans application"
-msgstr "Se si integra Web Beans in un ambiente che supporta il deploy di applicazioni, occorre abilitare, automaticamente o attraverso la configurazione utente, l'isolamento del classloader for ogni applicazione Web Beans"
-
-#. Tag: term
-#: ri-spi.xml:102
-#, no-c-format
-msgid "The <literal>webbeans-ri.jar</literal>"
-msgstr "<literal>webbeans-ri.jar</literal>"
-
-#. Tag: para
-#: ri-spi.xml:106
-#, no-c-format
-msgid "If you are integrating the Web Beans into an environment that supports deployment of applications, you must insert the <literal>webbeans-ri.jar</literal> into the applications isolated classloader. It cannot be loaded from a shared classloader."
-msgstr "Se si integra Web Beans in un ambiente che supporta il deploy di applicazioni, occorre inserire <literal>webbeans-ri.jar</literal> nel classloader isolato delle applicazioni. Non può essere caricato da un classloader condiviso."
-

Deleted: doc/trunk/reference/it-IT/modules/ri.po
===================================================================
--- doc/trunk/reference/it-IT/modules/ri.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/ri.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,1248 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:08+0000\n"
-"PO-Revision-Date: 2008-12-20 14:01+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: ri.xml:4
-#, no-c-format
-msgid "Using the Web Beans Reference Implementation"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:6
-#, no-c-format
-msgid ""
-"The Web Beans RI comes with a two examples, <literal>webbeans-numberguess</"
-"literal> (a war example, containing only simple beans) and <literal>webbeans-"
-"translator</literal> (an ear example, containing enterprise beans)."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:13
-#, no-c-format
-msgid ""
-"Currently, the Web Beans RI only runs on JBoss Application Server 5. You'll "
-"need to download JBoss AS 5.0.0.GA from <ulink url=\"http://www.jboss.org/"
-"jbossas/downloads/\">jboss.org</ulink>, and unzip it. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:20
-#, no-c-format
-msgid ""
-"<![CDATA[$ cd /Applications\n"
-"$ unzip ~/jboss-5.0.0.GA.zip]]>"
-msgstr ""
-"<![CDATA[$ cd /Applications\n"
-"$ unzip ~/jboss-5.0.0.GA.zip]]>"
-
-#. Tag: para
-#: ri.xml:22
-#, no-c-format
-msgid ""
-"Next, download the Web Beans RI from <ulink url=\"http://seamframework.org/"
-"WebBeans\">seamframework.org</ulink>, and unzip it. For example"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:28
-#, no-c-format
-msgid ""
-"<![CDATA[$ cd ~/\n"
-"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
-msgstr ""
-"<![CDATA[$ cd ~/\n"
-"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
-
-#. Tag: para
-#: ri.xml:31
-#, no-c-format
-msgid ""
-"Next, we need to tell Web Beans where JBoss is located. Edit <literal>jboss-"
-"as/build.properties</literal> and set the <literal>jboss.home</literal> "
-"property. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:37
-#, no-c-format
-msgid "jboss.home=/Applications/jboss-5.0.0.GA"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:39
-#, no-c-format
-msgid ""
-"As Web Beans is a new piece of software, you need to update JBoss AS to run "
-"the Web Beans RI. Future versions of JBoss AS will include these updates, "
-"and this step won't be necessary."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:46
-#, no-c-format
-msgid ""
-"Currently, two updates are needed. Firstly, a new deployer, "
-"<literal>webbeans.deployer</literal> is added. This adds supports for Web "
-"Bean archives to JBoss AS, and allows the Web Beans RI to query the EJB3 "
-"container and discover which EJBs are installed in your application. "
-"Secondly, an update to JBoss EJB3 is needed."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:55
-#, no-c-format
-msgid ""
-"To install the update, you'll need ant 1.7.0 installed, and the "
-"<literal>ANT_HOME</literal> environment variable set. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:60
-#, no-c-format
-msgid ""
-"$ unzip apache-ant-1.7.0.zip\n"
-"$ export ANT_HOME=~/apache-ant-1.7.0"
-msgstr ""
-"$ unzip apache-ant-1.7.0.zip\n"
-"$ export ANT_HOME=~/apache-ant-1.7.0"
-
-#. Tag: para
-#: ri.xml:62
-#, no-c-format
-msgid ""
-"Then, you can install the update. The update script will use Maven to "
-"download the Web Beans and EJB3 automatically."
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:67
-#, no-c-format
-msgid ""
-"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
-"$ ant update"
-msgstr ""
-"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
-"$ ant update"
-
-#. Tag: para
-#: ri.xml:69
-#, no-c-format
-msgid "Now, you're ready to deploy your first example!"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:74
-#, no-c-format
-msgid ""
-"The build scripts for the examples offer a number of targets, these are:"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:80
-#, no-c-format
-msgid "<literal>ant restart</literal> - deploy the example in exploded format"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:86
-#, no-c-format
-msgid ""
-"<literal>ant explode</literal> - update an exploded example, without "
-"restarting the deployment"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:92
-#, no-c-format
-msgid ""
-"<literal>ant deploy</literal> - deploy the example in compressed jar format"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:97
-#, no-c-format
-msgid "<literal>ant undeploy</literal> - remove the example from the server"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:102
-#, no-c-format
-msgid "<literal>ant clean</literal> - clean the example"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:109
-#, no-c-format
-msgid "To deploy the numberguess example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:113
-#, no-c-format
-msgid ""
-"$ cd examples/numberguess\n"
-"ant deploy"
-msgstr ""
-"$ cd examples/numberguess\n"
-"ant deploy"
-
-#. Tag: para
-#: ri.xml:115
-#, no-c-format
-msgid ""
-"Wait for the application to deploy, and enjoy hours of fun at <ulink url="
-"\"http://localhost:8080/webbeans-numberguess\"></ulink>!"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:120
-#, no-c-format
-msgid ""
-"The Web Beans RI includes a second simple example that will translate your "
-"text into Latin. The numberguess example is a war example, and uses only "
-"simple beans; the translator example is an ear example, and includes "
-"enterprise beans, packaged in an EJB module. To try it out:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:127
-#, no-c-format
-msgid ""
-"$ cd examples/traslator\n"
-"ant deploy"
-msgstr ""
-"$ cd examples/traslator\n"
-"ant deploy"
-
-#. Tag: para
-#: ri.xml:129
-#, no-c-format
-msgid ""
-"Wait for the application to deploy, and visit <ulink url=\"http://"
-"localhost:8080/webbeans-translator\"></ulink>!"
-msgstr ""
-
-#. Tag: title
-#: ri.xml:135
-#, no-c-format
-msgid "The numberguess example"
-msgstr "Esempio di indovina-numeri"
-
-#. Tag: para
-#: ri.xml:137
-#, no-c-format
-msgid ""
-"In the numberguess application you get given 10 attempts to guess a number "
-"between 1 and 100. After each attempt, you will be told whether you are too "
-"high, or too low."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:143
-#, no-c-format
-msgid ""
-"The numberguess example is comprised of a number of Web Beans, configuration "
-"files, and Facelet JSF pages, packaged as a war. Let's start with the "
-"configuration files."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:149
-#, no-c-format
-msgid ""
-"All the configuration files for this example are located in <literal>WEB-INF/"
-"</literal>, which is stored in <literal>WebContent</literal> in the source "
-"tree. First, we have <literal>faces-config.xml</literal>, in which we tell "
-"JSF to use Facelets:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:157
-#, no-c-format
-msgid ""
-"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
-"<faces-config version=\"1.2\"\n"
-"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
-"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
-"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
-"    \n"
-"    <application>\n"
-"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
-"    </application>\n"
-"\n"
-"</faces-config>]]>"
-msgstr ""
-"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
-"<faces-config version=\"1.2\"\n"
-"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
-"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
-"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
-"    \n"
-"    <application>\n"
-"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
-"    </application>\n"
-"\n"
-"</faces-config>]]>"
-
-#. Tag: para
-#: ri.xml:159
-#, no-c-format
-msgid ""
-"There is an empty <literal>web-beans.xml</literal> file, which marks this "
-"application as a Web Beans application."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:164
-#, no-c-format
-msgid "Finally there is <literal>web.xml</literal>:"
-msgstr ""
-
-#. Tag: section
-#: ri.xml:166
-#, no-c-format
-msgid ""
-"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
-"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
-"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
-"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
-"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"\n"
-"<web-app version=\"2.5\"\n"
-"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
-"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
-"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
-"   \n"
-"   <display-name>Web Beans Numbergues example</display-name>\n"
-"\n"
-"   <!-- JSF -->\n"
-"\n"
-"   <servlet>\n"
-"      <servlet-name>Faces Servlet</servlet-name>\n"
-"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
-"      <load-on-startup>1</load-on-startup>\n"
-"   </servlet>\n"
-"\n"
-"   <servlet-mapping>\n"
-"      <servlet-name>Faces Servlet</servlet-name>\n"
-"      <url-pattern>*.jsf</url-pattern>\n"
-"   </servlet-mapping>\n"
-"   \n"
-"   <context-param>\n"
-"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
-"      <param-value>.xhtml</param-value>\n"
-"   </context-param>\n"
-"\n"
-"   <session-config>\n"
-"      <session-timeout>10</session-timeout>\n"
-"   </session-config>\n"
-"   \n"
-"    <listener>\n"
-"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
-"class>\n"
-"    </listener>\n"
-"\n"
-"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
-"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
-"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
-"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
-"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
-"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
-"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
-"session timeout of 10 minutes </para> </callout> <callout arearefs="
-"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
-"Beans services can be used in the servlet request </para> </callout> </"
-"calloutlist> </programlistingco> <note> <para> The only configuration "
-"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
-"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
-"the Web Beans RI with any Servlet based web framework; just configure the "
-"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
-"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
-"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
-"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
-"\"29\"/> <area id=\"submit\" coords=\"32\"/> </areaspec> <programlisting><!"
-"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
-"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
-"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
-"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
-"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
-"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
-"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
-"\n"
-"  <ui:composition template=\"template.xhtml\">\n"
-"    <ui:define name=\"content\">\n"
-"       <h1>Guess a number...</h1>\n"
-"       <h:form id=\"NumberGuessMain\">\n"
-"          <div style=\"color: red\">\n"
-"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
-"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
-"number gt game.guess}\"/>\n"
-"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
-"number lt game.guess}\"/>\n"
-"          </div>\n"
-"   \n"
-"          <div>\n"
-"             I'm thinking of a number between #{game.smallest} and #{game."
-"biggest}.\n"
-"             You have #{game.remainingGuesses} guesses.\n"
-"          </div>\n"
-"     \n"
-"          <div>\n"
-"             Your guess: \n"
-"             <h:inputText id=\"inputGuess\" \n"
-"                          value=\"#{game.guess}\" \n"
-"                          required=\"true\" \n"
-"                          size=\"3\">\n"
-"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
-"                                     minimum=\"#{game.smallest}\"/>\n"
-"             </h:inputText>\n"
-"            <h:commandButton id=\"GuessButton\" \n"
-"                             value=\"Guess\" \n"
-"                             action=\"#{game.check}\"/>\n"
-"          </div>\n"
-"   \n"
-"       </h:form>\n"
-"    </ui:define>\n"
-"  </ui:composition>\n"
-"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
-"<para> Facelets is a templating language for JSF, here we are wrapping our "
-"page in a template which defines the header. </para> </callout> <callout "
-"arearefs=\"messages\"> <para> There are a number of messages which can be "
-"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
-"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
-"range of numbers they can guess gets smaller - this sentance changes to make "
-"sure they know what range to guess in. </para> </callout> <callout arearefs="
-"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
-"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
-"range validator is used to make sure the user doesn't accidentally input a "
-"number outside of the range in which they can guess - if the validator "
-"wasn't here, the user might use up a guess on an out of range number. </"
-"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
-"must be a way for the user to send their guess to the server. Here we bind "
-"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
-"programlistingco>"
-msgstr ""
-"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
-"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
-"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
-"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
-"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"\n"
-"<web-app version=\"2.5\"\n"
-"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
-"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
-"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
-"   \n"
-"   <display-name>Web Beans Numbergues example</display-name>\n"
-"\n"
-"   <!-- JSF -->\n"
-"\n"
-"   <servlet>\n"
-"      <servlet-name>Faces Servlet</servlet-name>\n"
-"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
-"      <load-on-startup>1</load-on-startup>\n"
-"   </servlet>\n"
-"\n"
-"   <servlet-mapping>\n"
-"      <servlet-name>Faces Servlet</servlet-name>\n"
-"      <url-pattern>*.jsf</url-pattern>\n"
-"   </servlet-mapping>\n"
-"   \n"
-"   <context-param>\n"
-"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
-"      <param-value>.xhtml</param-value>\n"
-"   </context-param>\n"
-"\n"
-"   <session-config>\n"
-"      <session-timeout>10</session-timeout>\n"
-"   </session-config>\n"
-"   \n"
-"    <listener>\n"
-"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
-"class>\n"
-"    </listener>\n"
-"\n"
-"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
-"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
-"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
-"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
-"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
-"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
-"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
-"session timeout of 10 minutes </para> </callout> <callout arearefs="
-"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
-"Beans services can be used in the servlet request </para> </callout> </"
-"calloutlist> </programlistingco> <note> <para> The only configuration "
-"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
-"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
-"the Web Beans RI with any Servlet based web framework; just configure the "
-"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
-"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
-"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
-"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
-"\"29\"/> <area id=\"submit\" coords=\"32\"/> </areaspec> <programlisting><!"
-"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
-"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
-"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
-"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
-"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
-"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
-"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
-"\n"
-"  <ui:composition template=\"template.xhtml\">\n"
-"    <ui:define name=\"content\">\n"
-"       <h1>Guess a number...</h1>\n"
-"       <h:form id=\"NumberGuessMain\">\n"
-"          <div style=\"color: red\">\n"
-"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
-"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
-"number gt game.guess}\"/>\n"
-"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
-"number lt game.guess}\"/>\n"
-"          </div>\n"
-"   \n"
-"          <div>\n"
-"             I'm thinking of a number between #{game.smallest} and #{game."
-"biggest}.\n"
-"             You have #{game.remainingGuesses} guesses.\n"
-"          </div>\n"
-"     \n"
-"          <div>\n"
-"             Your guess: \n"
-"             <h:inputText id=\"inputGuess\" \n"
-"                          value=\"#{game.guess}\" \n"
-"                          required=\"true\" \n"
-"                          size=\"3\">\n"
-"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
-"                                     minimum=\"#{game.smallest}\"/>\n"
-"             </h:inputText>\n"
-"            <h:commandButton id=\"GuessButton\" \n"
-"                             value=\"Guess\" \n"
-"                             action=\"#{game.check}\"/>\n"
-"          </div>\n"
-"   \n"
-"       </h:form>\n"
-"    </ui:define>\n"
-"  </ui:composition>\n"
-"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
-"<para> Facelets is a templating language for JSF, here we are wrapping our "
-"page in a template which defines the header. </para> </callout> <callout "
-"arearefs=\"messages\"> <para> There are a number of messages which can be "
-"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
-"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
-"range of numbers they can guess gets smaller - this sentance changes to make "
-"sure they know what range to guess in. </para> </callout> <callout arearefs="
-"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
-"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
-"range validator is used to make sure the user doesn't accidentally input a "
-"number outside of the range in which they can guess - if the validator "
-"wasn't here, the user might use up a guess on an out of range number. </"
-"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
-"must be a way for the user to send their guess to the server. Here we bind "
-"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
-"programlistingco>"
-
-#. Tag: para
-#: ri.xml:279
-#, no-c-format
-msgid ""
-"The example exists of 4 classes, the first two of which are binding types. "
-"First, there is the <literal>@Random</literal> binding type, used for "
-"injecting a random number:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:285
-#, no-c-format
-msgid ""
-"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
-"@Retention(RUNTIME)\n"
-"@Documented\n"
-"@BindingType\n"
-"public @interface Random {}]]>"
-msgstr ""
-"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
-"@Retention(RUNTIME)\n"
-"@Documented\n"
-"@BindingType\n"
-"public @interface Random {}]]>"
-
-#. Tag: para
-#: ri.xml:287
-#, no-c-format
-msgid ""
-"There is also the <literal>@MaxNumber</literal> binding type, used for "
-"injecting the maximum number that can be injected:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:292
-#, no-c-format
-msgid ""
-"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
-"@Retention(RUNTIME)\n"
-"@Documented\n"
-"@BindingType\n"
-"public @interface MaxNumber {}\n"
-"]]>"
-msgstr ""
-"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
-"@Retention(RUNTIME)\n"
-"@Documented\n"
-"@BindingType\n"
-"public @interface MaxNumber {}\n"
-"]]>"
-
-#. Tag: para
-#: ri.xml:294
-#, no-c-format
-msgid ""
-"The <literal>Generator</literal> class is responsible for creating the "
-"random number, via a producer method. It also exposes the maximum possible "
-"number via a producer method:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:300
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped\n"
-"public class Generator {\n"
-"   \n"
-"   private java.util.Random random = new java.util.Random( System."
-"currentTimeMillis() );\n"
-"   \n"
-"   private int maxNumber = 100;\n"
-"   \n"
-"   java.util.Random getRandom()\n"
-"   {\n"
-"      return random;\n"
-"   }\n"
-"   \n"
-"   @Produces @Random int next() { \n"
-"      return getRandom().nextInt(maxNumber); \n"
-"   }\n"
-"   \n"
-"   @Produces @MaxNumber int getMaxNumber()\n"
-"   {\n"
-"      return maxNumber;\n"
-"   }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@ApplicationScoped\n"
-"public class Generator {\n"
-"   \n"
-"   private java.util.Random random = new java.util.Random( System."
-"currentTimeMillis() );\n"
-"   \n"
-"   private int maxNumber = 100;\n"
-"   \n"
-"   java.util.Random getRandom()\n"
-"   {\n"
-"      return random;\n"
-"   }\n"
-"   \n"
-"   @Produces @Random int next() { \n"
-"      return getRandom().nextInt(maxNumber); \n"
-"   }\n"
-"   \n"
-"   @Produces @MaxNumber int getMaxNumber()\n"
-"   {\n"
-"      return maxNumber;\n"
-"   }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: ri.xml:302
-#, no-c-format
-msgid ""
-"You'll notice that the <literal>Generator</literal> is application scoped; "
-"therefore we don't get a different random each time."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:307
-#, no-c-format
-msgid ""
-"The final Web Bean in the application is the session scoped <literal>Game</"
-"literal>. By making <literal>Game</literal> session scoped, you can only "
-"play the game once per browser session. You could easily add a reset button "
-"- a good exercise for the reader :-)"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:314
-#, no-c-format
-msgid ""
-"You'll also note that we've used the <literal>@Named</literal> annotation, "
-"so that we can use the bean through EL in the JSF page. Finally, we've used "
-"constructor injection to initialize the game with a random number. And of "
-"course, we need to tell the player when they've won, so we give feedback "
-"with a <literal>FacesMessage</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:322
-#, no-c-format
-msgid ""
-"<![CDATA[@Named\n"
-"@SessionScoped\n"
-"public class Game {\n"
-"   private int number;\n"
-"   \n"
-"   private int guess;\n"
-"   private int smallest;\n"
-"   private int biggest;\n"
-"   private int remainingGuesses;\n"
-"   \n"
-"   public Game() {}\n"
-"   \n"
-"   @Initializer\n"
-"   Game(@Random int number, @MaxNumber int maxNumber) {\n"
-"      this.number = number;\n"
-"      this.smallest = 1;\n"
-"      this.biggest = maxNumber;\n"
-"      this.remainingGuesses = 10;\n"
-"   }\n"
-"\n"
-"   // Getters and setters for fields\n"
-"   \n"
-"   public String check() {\n"
-"      if (guess>number) {\n"
-"         biggest = guess - 1;\n"
-"      }\n"
-"      if (guess<number) {\n"
-"         smallest = guess + 1;\n"
-"      }\n"
-"      if (guess == number) {\n"
-"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
-"(\"Correct!\"));\n"
-"      }\n"
-"      remainingGuesses--;\n"
-"      return null;\n"
-"   }\n"
-"   \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Named\n"
-"@SessionScoped\n"
-"public class Game {\n"
-"   private int number;\n"
-"   \n"
-"   private int guess;\n"
-"   private int smallest;\n"
-"   private int biggest;\n"
-"   private int remainingGuesses;\n"
-"   \n"
-"   public Game() {}\n"
-"   \n"
-"   @Initializer\n"
-"   Game(@Random int number, @MaxNumber int maxNumber) {\n"
-"      this.number = number;\n"
-"      this.smallest = 1;\n"
-"      this.biggest = maxNumber;\n"
-"      this.remainingGuesses = 10;\n"
-"   }\n"
-"\n"
-"   // Getters and setters for fields\n"
-"   \n"
-"   public String check() {\n"
-"      if (guess>number) {\n"
-"         biggest = guess - 1;\n"
-"      }\n"
-"      if (guess<number) {\n"
-"         smallest = guess + 1;\n"
-"      }\n"
-"      if (guess == number) {\n"
-"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
-"(\"Correct!\"));\n"
-"      }\n"
-"      remainingGuesses--;\n"
-"      return null;\n"
-"   }\n"
-"   \n"
-"}]]>"
-
-#. Tag: title
-#: ri.xml:326
-#, no-c-format
-msgid "The translator example"
-msgstr "Esempio di traduttore"
-
-#. Tag: para
-#: ri.xml:328
-#, no-c-format
-msgid ""
-"The translator example will take any sentences you enter, and translate them "
-"to Latin."
-msgstr ""
-"L'esempio del traduttore prende le frasi che vengono inserite e le traduce "
-"in latino."
-
-#. Tag: para
-#: ri.xml:333
-#, no-c-format
-msgid ""
-"The translator example is built as an ear, and contains EJBs and enterprise "
-"beans. As a result, it's structure is more complex than the numberguess "
-"example."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:340
-#, no-c-format
-msgid ""
-"EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will make "
-"this structure much simpler!"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:346
-#, no-c-format
-msgid ""
-"First, let's take a look at the ear aggregator, which is located in "
-"<literal>webbeans-translator-ear</literal> module. Maven automatically "
-"generates the <literal>application.xml</literal> and <literal>jboss-app.xml</"
-"literal> for us:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:353
-#, no-c-format
-msgid ""
-"<![CDATA[<plugin>\n"
-"   <groupId>org.apache.maven.plugins</groupId>\n"
-"   <artifactId>maven-ear-plugin</artifactId>\n"
-"   <configuration>\n"
-"      <modules>\n"
-"         <webModule>\n"
-"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
-"            <artifactId>webbeans-translator-war</artifactId>\n"
-"            <contextRoot>/webbeans-translator</contextRoot>\n"
-"         </webModule>\n"
-"      </modules>\n"
-"      <jboss>\n"
-"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
-"loader-repository>\n"
-"      </jboss>\n"
-"   </configuration>\n"
-"</plugin>]]>"
-msgstr ""
-"<![CDATA[<plugin>\n"
-"   <groupId>org.apache.maven.plugins</groupId>\n"
-"   <artifactId>maven-ear-plugin</artifactId>\n"
-"   <configuration>\n"
-"      <modules>\n"
-"         <webModule>\n"
-"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
-"            <artifactId>webbeans-translator-war</artifactId>\n"
-"            <contextRoot>/webbeans-translator</contextRoot>\n"
-"         </webModule>\n"
-"      </modules>\n"
-"      <jboss>\n"
-"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
-"loader-repository>\n"
-"      </jboss>\n"
-"   </configuration>\n"
-"</plugin>]]>"
-
-#. Tag: para
-#: ri.xml:355
-#, no-c-format
-msgid ""
-"We're doing a couple of things here - firstly we set the context path, which "
-"gives us a nice url (<ulink url=\"http://localhost:8080/webbeans-translator"
-"\">http://localhost:8080/webbeans-translator</ulink>) and we also enable "
-"class loader isolation for JBoss AS."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:363
-#, no-c-format
-msgid ""
-"If you aren't using Maven to generate these files, you would need "
-"<literal>META-INF/jboss-app.xml</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:368
-#, no-c-format
-msgid ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<!DOCTYPE jboss-app\n"
-"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
-"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
-"<jboss-app>\n"
-"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
-"repository>\n"
-"</jboss-app>]]>"
-msgstr ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<!DOCTYPE jboss-app\n"
-"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
-"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
-"<jboss-app>\n"
-"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
-"repository>\n"
-"</jboss-app>]]>"
-
-#. Tag: para
-#: ri.xml:370
-#, no-c-format
-msgid "and <literal>META-INF/application.xml</literal>:"
-msgstr "e <literal>META-INF/application.xml</literal>:"
-
-#. Tag: programlisting
-#: ri.xml:374
-#, no-c-format
-msgid ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
-"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
-"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
-"             version=\"5\">\n"
-"  <display-name>webbeans-translator-ear</display-name>\n"
-"  <description>Ear Example for the reference implementation of JSR 299: Web "
-"Beans</description>\n"
-"  \n"
-"  <module>\n"
-"    <web>\n"
-"      <web-uri>webbeans-translator.war</web-uri>\n"
-"      <context-root>/webbeans-translator</context-root>\n"
-"    </web>\n"
-"  </module>\n"
-"  <module>\n"
-"    <ejb>webbeans-translator.jar</ejb>\n"
-"  </module>\n"
-"</application>]]>"
-msgstr ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
-"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
-"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
-"             version=\"5\">\n"
-"  <display-name>webbeans-translator-ear</display-name>\n"
-"  <description>Ear Example for the reference implementation of JSR 299: Web "
-"Beans</description>\n"
-"  \n"
-"  <module>\n"
-"    <web>\n"
-"      <web-uri>webbeans-translator.war</web-uri>\n"
-"      <context-root>/webbeans-translator</context-root>\n"
-"    </web>\n"
-"  </module>\n"
-"  <module>\n"
-"    <ejb>webbeans-translator.jar</ejb>\n"
-"  </module>\n"
-"</application>]]>"
-
-#. Tag: para
-#: ri.xml:377
-#, no-c-format
-msgid ""
-"Next, lets look at the war. Just as in the numberguess example, we have a "
-"<literal>faces-config.xml</literal> (to enabled Facelets) and a <literal>web."
-"xml</literal> (to enable JSF and attach Web Beans services to the servlet "
-"container) in <literal>WebContent/WEB-INF</literal>."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:384
-#, no-c-format
-msgid ""
-"More intersting is the facelet used to translate text. Just as in the "
-"numberguess example we have a template, which surrounds the form (ommitted "
-"here for brevity):"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:390
-#, no-c-format
-msgid ""
-"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
-"            \n"
-"   <table>\n"
-"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
-"         <td>\n"
-"            Your text\n"
-"         </td>\n"
-"         <td>\n"
-"            Translation\n"
-"         </td>\n"
-"      </tr>\n"
-"      <tr>\n"
-"         <td>\n"
-"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
-"required=\"true\" rows=\"5\" cols=\"80\" />\n"
-"         </td>\n"
-"         <td>\n"
-"            <h:outputText value=\"#{translator.translatedText}\" />\n"
-"         </td>\n"
-"      </tr>\n"
-"   </table>\n"
-"   <div>\n"
-"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
-"{translator.translate}\"/>\n"
-"   </div>\n"
-"   \n"
-"</h:form>]]>"
-msgstr ""
-"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
-"            \n"
-"   <table>\n"
-"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
-"         <td>\n"
-"            Your text\n"
-"         </td>\n"
-"         <td>\n"
-"            Translation\n"
-"         </td>\n"
-"      </tr>\n"
-"      <tr>\n"
-"         <td>\n"
-"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
-"required=\"true\" rows=\"5\" cols=\"80\" />\n"
-"         </td>\n"
-"         <td>\n"
-"            <h:outputText value=\"#{translator.translatedText}\" />\n"
-"         </td>\n"
-"      </tr>\n"
-"   </table>\n"
-"   <div>\n"
-"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
-"{translator.translate}\"/>\n"
-"   </div>\n"
-"   \n"
-"</h:form>]]>"
-
-#. Tag: para
-#: ri.xml:392
-#, no-c-format
-msgid ""
-"The user can enter some text in the lefthand textarea, and hit the translate "
-"button to see the result to the right."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:397
-#, no-c-format
-msgid ""
-"Finally, let's look at the ejb module, <literal>webbeans-translator-ejb</"
-"literal>. There are two configuration files in <literal>src/main/resources/"
-"META-INF</literal>, an empty <literal>web-beans.xml</literal>, used to mark "
-"the archive as containing Web Beans, and <literal>ejb-jar.xml</literal>. Web "
-"Beans provides injection and initializtion services for all EJBs, and uses "
-"<literal>ejb-jar.xml</literal> to enable this, you'll need this in any EJB "
-"project which uses Web Beans:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:409
-#, no-c-format
-msgid ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
-"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
-"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
-"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
-"         version=\"3.0\">\n"
-"         \n"
-"   <interceptors>\n"
-"     <interceptor>\n"
-"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
-"interceptor-class>\n"
-"     </interceptor>\n"
-"   </interceptors>\n"
-"   \n"
-"   <assembly-descriptor>\n"
-"      <interceptor-binding>\n"
-"         <ejb-name>*</ejb-name>\n"
-"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
-"interceptor-class>\n"
-"      </interceptor-binding>\n"
-"   </assembly-descriptor>\n"
-"   \n"
-"</ejb-jar>]]>"
-msgstr ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
-"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
-"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
-"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
-"         version=\"3.0\">\n"
-"         \n"
-"   <interceptors>\n"
-"     <interceptor>\n"
-"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
-"interceptor-class>\n"
-"     </interceptor>\n"
-"   </interceptors>\n"
-"   \n"
-"   <assembly-descriptor>\n"
-"      <interceptor-binding>\n"
-"         <ejb-name>*</ejb-name>\n"
-"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
-"interceptor-class>\n"
-"      </interceptor-binding>\n"
-"   </assembly-descriptor>\n"
-"   \n"
-"</ejb-jar>]]>"
-
-#. Tag: para
-#: ri.xml:411
-#, no-c-format
-msgid ""
-"We've saved the most interesting bit to last, the code! The project has two "
-"simple beans, <literal>SentanceParser</literal> and <literal>TextTranslator</"
-"literal> and two enterprise beans, <literal>TanslatorControllerBean</"
-"literal> and <literal>SentenceTranslator</literal>. You should be getting "
-"quite familiar with what a Web Bean looks like by now, so we'll just "
-"highlight the most interesting bits here."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:421
-#, no-c-format
-msgid ""
-"Both <literal>SentanceParser</literal> and <literal>TextTranslator</literal> "
-"are dependent beans, and <literal>TextTranslator</literal> uses constructor "
-"initialization:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:427
-#, no-c-format
-msgid ""
-"<![CDATA[public class TextTranslator { \n"
-"   private SentenceParser sentenceParser; \n"
-"   private Translator sentenceTranslator; \n"
-"   \n"
-"   @Initializer\n"
-"   TextTranslator(SentenceParser sentenceParser, Translator "
-"sentenceTranslator) \n"
-"   { \n"
-"      this.sentenceParser = sentenceParser; \n"
-"      this.sentenceTranslator = sentenceTranslator;]]>"
-msgstr ""
-"<![CDATA[public class TextTranslator { \n"
-"   private SentenceParser sentenceParser; \n"
-"   private Translator sentenceTranslator; \n"
-"   \n"
-"   @Initializer\n"
-"   TextTranslator(SentenceParser sentenceParser, Translator "
-"sentenceTranslator) \n"
-"   { \n"
-"      this.sentenceParser = sentenceParser; \n"
-"      this.sentenceTranslator = sentenceTranslator;]]>"
-
-#. Tag: para
-#: ri.xml:429
-#, no-c-format
-msgid ""
-"<literal>TextTranslator</literal> is a stateless bean (with a local business "
-"interface), where the magic happens - of course, we couldn't develop a full "
-"translator, but we gave it a good go!"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:435
-#, no-c-format
-msgid ""
-"Finally, there is UI orientated controller, that collects the text from the "
-"user, and dispatches it to the translator. This is a request scoped, named, "
-"stateful session bean, which injects the translator."
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:441
-#, no-c-format
-msgid ""
-"<![CDATA[@Stateful\n"
-"@RequestScoped\n"
-"@Named(\"translator\")\n"
-"public class TranslatorControllerBean implements TranslatorController\n"
-"{\n"
-"   \n"
-"   @Current TextTranslator translator;]]>"
-msgstr ""
-"<![CDATA[@Stateful\n"
-"@RequestScoped\n"
-"@Named(\"translator\")\n"
-"public class TranslatorControllerBean implements TranslatorController\n"
-"{\n"
-"   \n"
-"   @Current TextTranslator translator;]]>"
-
-#. Tag: para
-#: ri.xml:443
-#, no-c-format
-msgid "The bean also has getters and setters for all the fields on the page."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:447
-#, no-c-format
-msgid "As this is a stateful session bean, we have to have a remove method:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:451
-#, no-c-format
-msgid ""
-"<![CDATA[   @Remove\n"
-"   public void remove()\n"
-"   {\n"
-"      \n"
-"   }]]>"
-msgstr ""
-"<![CDATA[   @Remove\n"
-"   public void remove()\n"
-"   {\n"
-"      \n"
-"   }]]>"
-
-#. Tag: para
-#: ri.xml:453
-#, no-c-format
-msgid ""
-"The Web Beans manager will call the remove method for you when the bean is "
-"destroyed; in this case at the end of the request."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:459
-#, no-c-format
-msgid ""
-"That concludes our short tour of the Web Beans RI examples. For more on the "
-"RI, or to help out, please visit <ulink url=\"http://www.seamframework.org/"
-"WebBeans/Development\">http://www.seamframework.org/WebBeans/Development</"
-"ulink>."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:465
-#, no-c-format
-msgid ""
-"We need help in all areas - bug fixing, writing new features, writing "
-"examples and translating this reference guide."
-msgstr ""

Deleted: doc/trunk/reference/it-IT/modules/scopescontexts.po
===================================================================
--- doc/trunk/reference/it-IT/modules/scopescontexts.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/scopescontexts.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,517 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-26 13:03+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: scopescontexts.xml:4
-#, no-c-format
-msgid "Scopes and contexts"
-msgstr "Scope e contesti"
-
-#. Tag: para
-#: scopescontexts.xml:6
-#, no-c-format
-msgid "So far, we've seen a few examples of <emphasis>scope type annotations</emphasis>. The scope of a Web Bean determines the lifecycle of instances of the Web Bean. The scope also determines which clients refer to which instances of the Web Bean. According to the Web Beans specification, a scope determines:"
-msgstr "Finora si sono visti pochi esempi di <emphasis>annotazioni di tipi di scope</emphasis>. Gli scope di un Web Bean determinano il ciclo di vita del Web Bean. Lo scope determina anche quali client fanno riferimento a quali istanze di Web Bean. Secondo la specifica Web Bean, uno scope determina:"
-
-#. Tag: para
-#: scopescontexts.xml:14
-#, no-c-format
-msgid "When a new instance of any Web Bean with that scope is created"
-msgstr "Quando una nuova istanza di un Web Bean con tale scope viene creata"
-
-#. Tag: para
-#: scopescontexts.xml:17
-#, no-c-format
-msgid "When an existing instance of any Web Bean with that scope is destroyed"
-msgstr "Quando un'istanza esistente di un Web Bean con tale scope viene distrutta"
-
-#. Tag: para
-#: scopescontexts.xml:20
-#, no-c-format
-msgid "Which injected references refer to any instance of a Web Bean with that scope"
-msgstr "Quali riferimenti iniettati puntano a istanze di un Web Bean con tale scope"
-
-#. Tag: para
-#: scopescontexts.xml:25
-#, no-c-format
-msgid "For example, if we have a session scoped Web Bean, <literal>CurrentUser</literal>, all Web Beans that are called in the context of the same <literal>HttpSession</literal> will see the same instance of <literal>CurrentUser</literal>. This instance will be automatically created the first time a <literal>CurrentUser</literal> is needed in that session, and automatically destroyed when the session ends."
-msgstr "Per esempio, se esiste un Web Bean con scope di sessione, <literal>CurrentUser</literal>, tutti i Web Bean che vengono chiamati nel contesto della medesima <literal>HttpSession</literal> vedranno la stessa istanza di <literal>CurrentUser</literal>. Quest'istanza verrà automaticamente creata la prima volta che in tale sessione occorre <literal>CurrentUser</literal>, e verrà distrutta automaticamente quando la sessione termina. "
-
-#. Tag: title
-#: scopescontexts.xml:32
-#, no-c-format
-msgid "Scope types"
-msgstr "Tipi di scope"
-
-#. Tag: para
-#: scopescontexts.xml:34
-#, no-c-format
-msgid "Web Beans features an <emphasis>extensible context model</emphasis>. It is possible to define new scopes by creating a new scope type annotation:"
-msgstr "Web Bean fornisce un <emphasis>modello di contesto estensibile</emphasis>. E' possibile definire nuovi scope creando una nuova annotazione di un tipo di scope."
-
-#. Tag: programlisting
-#: scopescontexts.xml:37
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD})\n"
-"@ScopeType\n"
-"public @interface ClusterScoped {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD})\n"
-"@ScopeType\n"
-"public @interface ClusterScoped {}]]>"
-
-#. Tag: para
-#: scopescontexts.xml:39
-#, no-c-format
-msgid "Of course, that's the easy part of the job. For this scope type to be useful, we will also need to define a <literal>Context</literal> object that implements the scope! Implementing a <literal>Context</literal> is usually a very technical task, intended for framework development only."
-msgstr "Sicuramente questa è la parte facile del lavoro. Affinché questo tipo di scope sia utile, avremo bisogno di definire un oggetto <literal>Contesto</literal> che implementi lo scope! Implementare un <literal>Contesto</literal> è compito molto tecnico, inteso solo per lo sviluppo di framework."
-
-#. Tag: para
-#: scopescontexts.xml:44
-#, no-c-format
-msgid "We can apply a scope type annotation to a Web Bean implementation class to specify the scope of the Web Bean:"
-msgstr "Si può applicare un'annotazione con un tipo scope ad una classe di implementazione Web Bean per specificare lo scope del Web Bean:"
-
-#. Tag: programlisting
-#: scopescontexts.xml:47
-#, no-c-format
-msgid ""
-"<![CDATA[@ClusterScoped\n"
-"public class SecondLevelCache { ... }]]>"
-msgstr ""
-"<![CDATA[@ClusterScoped\n"
-"public class SecondLevelCache { ... }]]>"
-
-#. Tag: para
-#: scopescontexts.xml:58
-#, no-c-format
-msgid "Usually, you'll use one of Web Beans' built-in scopes."
-msgstr "Solitamente si userà uno degli scopi predefiniti di Web Beans."
-
-#. Tag: title
-#: scopescontexts.xml:63
-#, no-c-format
-msgid "Built-in scopes"
-msgstr "Scope predefiniti"
-
-#. Tag: para
-#: scopescontexts.xml:65
-#, no-c-format
-msgid "Web Beans defines four built-in scopes:"
-msgstr "Web Beans definisce quattro scope predefiniti:"
-
-#. Tag: literal
-#: scopescontexts.xml:69
-#, no-c-format
-msgid "@RequestScoped"
-msgstr "@RequestScoped"
-
-#. Tag: literal
-#: scopescontexts.xml:72
-#, no-c-format
-msgid "@SessionScoped"
-msgstr "@SessionScoped"
-
-#. Tag: literal
-#: scopescontexts.xml:75
-#, no-c-format
-msgid "@ApplicationScoped"
-msgstr "@ApplicationScoped"
-
-#. Tag: literal
-#: scopescontexts.xml:78
-#, no-c-format
-msgid "@ConversationScoped"
-msgstr "@ConversationScoped"
-
-#. Tag: para
-#: scopescontexts.xml:82
-#, no-c-format
-msgid "For a web application that uses Web Beans:"
-msgstr "Per un'applicazione web che impiega Web Beans:"
-
-#. Tag: para
-#: scopescontexts.xml:86
-#, no-c-format
-msgid "any servlet request has access to active request, session and application scopes, and, additionally"
-msgstr "qualsiasi richiesta servlet ha accesso a scope attivi di richiesta, sessione e applicazione e, in aggiunta"
-
-#. Tag: para
-#: scopescontexts.xml:90
-#, no-c-format
-msgid "any JSF request has access to an active conversation scope."
-msgstr "qualsiasi richiesta JSF ha accesso allo scope attivo di conversazione."
-
-#. Tag: para
-#: scopescontexts.xml:94
-#, no-c-format
-msgid "The request and application scopes are also active:"
-msgstr "Gli scope di richiesta ed applicazione sono pure attivi:"
-
-#. Tag: para
-#: scopescontexts.xml:98
-#, no-c-format
-msgid "during invocations of EJB remote methods,"
-msgstr "durante le invocazioni a metodi remoti EJB,"
-
-#. Tag: para
-#: scopescontexts.xml:101
-#, no-c-format
-msgid "during EJB timeouts,"
-msgstr "durante i timeout EJB,"
-
-#. Tag: para
-#: scopescontexts.xml:104
-#, no-c-format
-msgid "during message delivery to a message-driven bean, and"
-msgstr "durante la consegna dei messaggi a bean message-drive, e"
-
-#. Tag: para
-#: scopescontexts.xml:107
-#, no-c-format
-msgid "during web service invocations."
-msgstr "durante invocazioni web service."
-
-#. Tag: para
-#: scopescontexts.xml:111
-#, no-c-format
-msgid "If the application tries to invoke a Web Bean with a scope that does not have an active context, a <literal>ContextNotActiveException</literal> is thrown by the Web Bean manager at runtime."
-msgstr "Se l'applicazione prova ad invocare un Web Bean con scope che non ha un contesto attivo, una <literal>ContextNotActiveException</literal> viene lanciata a runtime dal manager Web Bean."
-
-#. Tag: para
-#: scopescontexts.xml:115
-#, no-c-format
-msgid "Three of the four built-in scopes should be extremely familiar to every Java EE developer, so let's not waste time discussing them here. One of the scopes, however, is new."
-msgstr "Tre dei quattro scope predefiniti dovrebbero essere estremamente familiari ad ogni sviluppatore Java EE, quindi non si procede oltre nella discussione. Uno degli scope è comunque nuovo."
-
-#. Tag: title
-#: scopescontexts.xml:122
-#, no-c-format
-msgid "The conversation scope"
-msgstr "Lo scope conversazione"
-
-#. Tag: para
-#: scopescontexts.xml:124
-#, no-c-format
-msgid "The Web Beans conversation scope is a bit like the traditional session scope in that it holds state associated with a user of the system, and spans multiple requests to the server. However, unlike the session scope, the conversation scope:"
-msgstr "Lo scope di conversazione di Web Beans è un pò come il tradizionale scope di sessione in cui viene mantenuto lo stato associato all'utente del sistema, e vengono create richiest multiple al server. Comunque, a differenza dello scope di sessione, lo scope di conversazione:"
-
-#. Tag: para
-#: scopescontexts.xml:130
-#, no-c-format
-msgid "is demarcated explicitly by the application, and"
-msgstr "è demarcato esplicitamente dall'applicazione, e"
-
-#. Tag: para
-#: scopescontexts.xml:133
-#, no-c-format
-msgid "holds state associated with a particular web browser tab in a JSF application."
-msgstr "mantiene lo stato associato ad un particolare tab del browser in un'applicazione JSF."
-
-#. Tag: para
-#: scopescontexts.xml:138
-#, no-c-format
-msgid "A conversation represents a task, a unit of work from the point of view of the user. The conversation context holds state associated with what the user is currently working on. If the user is doing multiple things at the same time, there are multiple conversations."
-msgstr "Una conversazione rappresenta un task, un'unità di lavoro dal punto di vista dell'utente. Il contesto di conversazione mantiene uno stato associato all'utente che sta lavorando. Se l'utente sta facendo più cose contemporaneamente ci saranno più conversazioni."
-
-#. Tag: para
-#: scopescontexts.xml:143
-#, no-c-format
-msgid "The conversation context is active during any JSF request. However, most conversations are destroyed at the end of the request. If a conversation should hold state across multiple requests, it must be explicitly promoted to a <emphasis>long-running conversation</emphasis>."
-msgstr "Il contesto di conversazione è attivo durante ogni richiesta JSF. Comunque, la maggior parte delle conversazioni vengono distrutte alla fine della richiesta. Se una conversazione deve mantenere lo stato nel corso richieste multiple, deve esplicitamente essere promossa a <emphasis>conversazione long-running</emphasis>."
-
-#. Tag: title
-#: scopescontexts.xml:149
-#, no-c-format
-msgid "Conversation demarcation"
-msgstr "Demarcazione della conversazione"
-
-#. Tag: para
-#: scopescontexts.xml:151
-#, no-c-format
-msgid "Web Beans provides a built-in Web Bean for controlling the lifecyle of conversations in a JSF application. This Web Bean may be obtained by injection:"
-msgstr "Web Beans fornisce un Web Bean predefinito per controllare il ciclo di vita delle conversazioni in un'applicazione JSF. QUesto Web Bean può essere ottenuto per iniezione:"
-
-#. Tag: programlisting
-#: scopescontexts.xml:154
-#, no-c-format
-msgid "@Current Conversation conversation;"
-msgstr "@Current Conversation conversation;"
-
-#. Tag: para
-#: scopescontexts.xml:156
-#, no-c-format
-msgid "To promote the conversation associated with the current request to a long-running conversation, call the <literal>begin()</literal> method from application code. To schedule the current long-running conversation context for destruction at the end of the current request, call <literal>end()</literal>."
-msgstr "Per promuovere a long-running la conversazione associata alla richiesta corrente, occorre chiamare il metodo <literal>begin()</literal> dal codice dell'applicazione. Per schedulare la distruzione del contesto attuale della conversazione long-running, si chiami <literal>end()</literal>."
-
-#. Tag: para
-#: scopescontexts.xml:161
-#, no-c-format
-msgid "In the following example, a conversation-scoped Web Bean controls the conversation with which it is associated:"
-msgstr "Nel seguente esempio un Web Bean con scope di conversazione controlla la conversazione alla quale è associato:"
-
-#. Tag: programlisting
-#: scopescontexts.xml:164
-#, no-c-format
-msgid ""
-"@ConversationScoped @Stateful\n"
-"public class OrderBuilder {\n"
-"\n"
-"    private Order order;\n"
-"    private @Current Conversation conversation;\n"
-"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
-"    \n"
-"    @Produces public Order getOrder() {\n"
-"        return order;\n"
-"    }\n"
-"\n"
-"    public Order createOrder() {\n"
-"        order = new Order();\n"
-"        conversation.begin();\n"
-"        return order;\n"
-"    }\n"
-"    \n"
-"    public void addLineItem(Product product, int quantity) {\n"
-"        order.add( new LineItem(product, quantity) );\n"
-"    }\n"
-"\n"
-"    public void saveOrder(Order order) {\n"
-"        em.persist(order);\n"
-"        conversation.end();\n"
-"    }\n"
-"    \n"
-"    @Remove\n"
-"    public void destroy() {}\n"
-"    \n"
-"}"
-msgstr ""
-"@ConversationScoped @Stateful\n"
-"public class OrderBuilder {\n"
-"\n"
-"    private Order order;\n"
-"    private @Current Conversation conversation;\n"
-"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
-"    \n"
-"    @Produces public Order getOrder() {\n"
-"        return order;\n"
-"    }\n"
-"\n"
-"    public Order createOrder() {\n"
-"        order = new Order();\n"
-"        conversation.begin();\n"
-"        return order;\n"
-"    }\n"
-"    \n"
-"    public void addLineItem(Product product, int quantity) {\n"
-"        order.add( new LineItem(product, quantity) );\n"
-"    }\n"
-"\n"
-"    public void saveOrder(Order order) {\n"
-"        em.persist(order);\n"
-"        conversation.end();\n"
-"    }\n"
-"    \n"
-"    @Remove\n"
-"    public void destroy() {}\n"
-"    \n"
-"}"
-
-#. Tag: para
-#: scopescontexts.xml:166
-#, no-c-format
-msgid "This Web Bean is able to control its own lifecycle through use of the <literal>Conversation</literal> API. But some other Web Beans have a lifecycle which depends completely upon another object."
-msgstr "Questo Web Bean è capace di controlla il proprio ciclo di vita attraverso l'uso della API <literal>Conversation</literal>. Ma altri Web BEan hanno un ciclo di vita che dipende completamente da un altro oggetto."
-
-#. Tag: title
-#: scopescontexts.xml:173
-#, no-c-format
-msgid "Conversation propagation"
-msgstr "Propagazione della conversazione"
-
-#. Tag: para
-#: scopescontexts.xml:175
-#, no-c-format
-msgid "The conversation context automatically propagates with any JSF faces request (JSF form submission). It does not automatically propagate with non-faces requests, for example, navigation via a link."
-msgstr "Il contesto di conversazione viene automaticamente propagato con ogni richiesta JSF faces (invio di form JSF). Non si propaga in modo automatico con richiesta non-faces, per esempio, navigazione tramite un link."
-
-#. Tag: para
-#: scopescontexts.xml:179
-#, no-c-format
-msgid "We can force the conversation to propagate with a non-faces request by including the unique identifier of the conversation as a request parameter. The Web Beans specification reserves the request parameter named <literal>cid</literal> for this use. The unique identifier of the conversation may be obtained from the <literal>Conversation</literal> object, which has the Web Beans name <literal>conversation</literal>."
-msgstr "E' possibile forzare la conversazione da propagare tramite richiesta non-faces attraverso l'inclusione di un identificatore univoco della conversazione come parametro di richiesta. La specifica Web Bean riserva un parametro di richiesta chiamato <literal>cid</literal> per tale uso. L'identificatore univoco della conversazione può essere ottenuto dall'oggetto <literal>Conversation</literal>, che ha il nome Web Beans <literal>conversation</literal>."
-
-#. Tag: para
-#: scopescontexts.xml:186
-#, no-c-format
-msgid "Therefore, the following link propagates the conversation:"
-msgstr "Quindi il seguente link propaga la conversazione:"
-
-#. Tag: programlisting
-#: scopescontexts.xml:188
-#, no-c-format
-msgid "<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]>"
-msgstr "<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]>"
-
-#. Tag: para
-#: scopescontexts.xml:190
-#, no-c-format
-msgid "The Web Bean manager is also required to propagate conversations across any redirect, even if the conversation is not marked long-running. This makes it very easy to implement the common POST-then-redirect pattern, without resort to fragile constructs such as a \"flash\" object. In this case, the Web Bean manager automatically adds a request parameter to the redirect URL."
-msgstr "Il manager Web Bean deve propagare le conversazioni attraverso i redirect, anche se la conversazione non è marcata long-running. Questo rende facile implementare il comune pattern POST-then-redirect, senza impiegare fragili costrutti quali oggetti \"flash\". In questo caso il manager Web Bean aggiunge automaticamente un parametro di richiesta all'URL di redirect."
-
-#. Tag: title
-#: scopescontexts.xml:200
-#, no-c-format
-msgid "Conversation timeout"
-msgstr "Timeout della conversazione"
-
-#. Tag: para
-#: scopescontexts.xml:202
-#, no-c-format
-msgid "The Web Bean manager is permitted to destroy a conversation and all state held in its context at any time in order to preserve resources. A Web Bean manager implementation will normally do this on the basis of some kind of timeout&#151;though this is not required by the Web Beans specification. The timeout is the period of inactivity before the conversation is destroyed."
-msgstr "Al manager Web Bean è permesso di distruggere una conversazione e tutto lo stato mantenuto nel contesto in qualsiasi momento al fine di preservare le risorse. Un'implementazione di un manager Web Bean eseguirà questo sulla base di un qualche timeout&#151;sebbene non sia richiesto dalla specifica Web Beans. Il timeout è il periodo di inattività prima che la conversazione venga distrutta."
-
-#. Tag: para
-#: scopescontexts.xml:208
-#, no-c-format
-msgid "The <literal>Conversation</literal> object provides a method to set the timeout. This is a hint to the Web Bean manager, which is free to ignore the setting."
-msgstr "L'oggetto <literal>Conversation</literal> fornisce un metodo per impostare iltimeout. Questo è solo un suggerimento al manager Web Bean, che è libero di ignorare quest'impostazione."
-
-#. Tag: programlisting
-#: scopescontexts.xml:212
-#, no-c-format
-msgid "conversation.setTimeout(timeoutInMillis);"
-msgstr "conversation.setTimeout(timeoutInMillis);"
-
-#. Tag: title
-#: scopescontexts.xml:219
-#, no-c-format
-msgid "The dependent pseudo-scope"
-msgstr "Pseudo-scope dipendente"
-
-#. Tag: para
-#: scopescontexts.xml:221
-#, no-c-format
-msgid "In addition to the four built-in scopes, Web Beans features the so-called <emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a Web Bean which does not explicitly declare a scope type."
-msgstr "In aggiunta ai quattro scope predefiniti, Web Bean fornisce il cosiddetto <emphasis>pseudo-scope dipendente</emphasis>. Questo è lo scope di default per un Web Bean che non dichiara esplicitamente un tipo di scope."
-
-#. Tag: para
-#: scopescontexts.xml:225
-#, no-c-format
-msgid "For example, this Web Bean has the scope type <literal>@Dependent</literal>:"
-msgstr "Per esempio questo Web Bean ha uno scope di tipo <literal>@Dependent</literal>:"
-
-#. Tag: programlisting
-#: scopescontexts.xml:227
-#, no-c-format
-msgid "<![CDATA[public class Calculator { ... }]]>"
-msgstr "<![CDATA[public class Calculator { ... }]]>"
-
-#. Tag: para
-#: scopescontexts.xml:229
-#, no-c-format
-msgid "When an injection point of a Web Bean resolves to a dependent Web Bean, a new instance of the dependent Web Bean is created every time the first Web Bean is instantiated. Instances of dependent Web Beans are never shared between different Web Beans or different injection points. They are <emphasis>dependent objects</emphasis> of some other Web Bean instance."
-msgstr "Quando un punto di iniezione di un Web Bean risolve verso un Web Bean dipendente, viene creata una nuova istanza di Web Bean dipendente ogni volta che il primo Web Bean viene istanziato. Le istanze dei Web Beans dipendenti non vengono mai condivise tra Web Bean differenti o punti di iniezione differenti. Sono <emphasis>oggetti dipendenti</emphasis> di altre istanze Web Bean."
-
-#. Tag: para
-#: scopescontexts.xml:235
-#, no-c-format
-msgid "Dependent Web Bean instances are destroyed when the instance they depend upon is destroyed."
-msgstr "Istanze Web Bean dipendenti vengono distrutte quando viene distrutta l'istanza da cui dipendono."
-
-#. Tag: para
-#: scopescontexts.xml:243
-#, no-c-format
-msgid "Web Beans makes it easy to obtain a dependent instance of a Java class or EJB bean, even if the class or EJB bean is already declared as a Web Bean with some other scope type."
-msgstr "Web Beans facilità l'ottenimento di un'istanza dipendente di una classe Java o bean EJB, anche se la classe o bean EJB sono già dichiarati come Web Bean con qualche altro tipo di scope."
-
-#. Tag: title
-#: scopescontexts.xml:248
-#, no-c-format
-msgid "The <literal>@New</literal> annotation"
-msgstr "Annotazione <literal>@New</literal>"
-
-#. Tag: para
-#: scopescontexts.xml:250
-#, no-c-format
-msgid "The built-in <literal>@New</literal> binding annotation allows <emphasis>implicit</emphasis> definition of a dependent Web Bean at an injection point. Suppose we declare the following injected field:"
-msgstr "L'annotazione predefinita di binding <literal>@New</literal> consente la definizione<emphasis>implicita</emphasis> di un Web Bean dipendente in un punti di iniezione. Si supponga di dichiarare il seguentecampo iniettato:"
-
-#. Tag: programlisting
-#: scopescontexts.xml:254
-#, no-c-format
-msgid "<![CDATA[@New Calculator calculator;]]>"
-msgstr "<![CDATA[@New Calculator calculator;]]>"
-
-#. Tag: para
-#: scopescontexts.xml:256
-#, no-c-format
-msgid "Then a Web Bean with scope <literal>@Dependent</literal>, binding type <literal>@New</literal>, API type <literal>Calculator</literal>, implementation class <literal>Calculator</literal> and deployment type <literal>@Standard</literal> is implicitly defined."
-msgstr "Allora viene implicitamente definito il Web Bean con scope <literal>@Dependent</literal>, tipo di binding  <literal>@New</literal>, tipo di API <literal>Calculator</literal>, classe di implementazione <literal>Calculator</literal> e tipo di deploy <literal>@Standard</literal>."
-
-#. Tag: para
-#: scopescontexts.xml:261
-#, no-c-format
-msgid "This is true even if <literal>Calculator</literal> is <emphasis>already</emphasis> declared with a different scope type, for example:"
-msgstr "Questo è vero se <literal>Calculator</literal> è <emphasis>già</emphasis> dichiarato con un tipo di scope differente, per esempio:"
-
-#. Tag: programlisting
-#: scopescontexts.xml:264
-#, no-c-format
-msgid ""
-"<![CDATA[@ConversationScoped\n"
-"public class Calculator { ... }]]>"
-msgstr ""
-"<![CDATA[@ConversationScoped\n"
-"public class Calculator { ... }]]>"
-
-#. Tag: para
-#: scopescontexts.xml:266
-#, no-c-format
-msgid "So the following injected attributes each get a different instance of <literal>Calculator</literal>:"
-msgstr "Quindi i seguenti attributi iniettati ricevono ciascuno un'istanza di <literal>Calculator</literal>:"
-
-#. Tag: programlisting
-#: scopescontexts.xml:269
-#, no-c-format
-msgid ""
-"<![CDATA[public class PaymentCalc {\n"
-"\n"
-"    @Current Calculator calculator;\n"
-"    @New Calculator newCalculator;\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class PaymentCalc {\n"
-"\n"
-"    @Current Calculator calculator;\n"
-"    @New Calculator newCalculator;\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: scopescontexts.xml:271
-#, no-c-format
-msgid "The <literal>calculator</literal> field has a conversation-scoped instance of <literal>Calculator</literal> injected. The <literal>newCalculator</literal> field has a new instance of <literal>Calculator</literal> injected, with a lifecycle that is bound to the owning <literal>PaymentCalc</literal>."
-msgstr "Il campo <literal>calculator</literal> ha iniettata un'istanza con scope conversazionale di <literal>Calculator</literal>. Il campo <literal>newCalculator</literal> ha iniettata un nuova istanza di <literal>Calculator</literal>, con ciclo di vita che è legato a <literal>PaymentCalc</literal>."
-
-#. Tag: para
-#: scopescontexts.xml:276
-#, no-c-format
-msgid "This feature is particularly useful with producer methods, as we'll see in the next chapter."
-msgstr "Questa caratteristica è particolarmente utile con i metodi produttori, come si vedrà nel prossimo capitolo."
-

Deleted: doc/trunk/reference/it-IT/modules/specialization.po
===================================================================
--- doc/trunk/reference/it-IT/modules/specialization.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/specialization.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,249 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-25 16:03+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: specialization.xml:4
-#, no-c-format
-msgid "Specialization"
-msgstr "Specializzazione"
-
-#. Tag: para
-#: specialization.xml:6
-#, no-c-format
-msgid "We've already seen how the Web Beans dependency injection model lets us <emphasis>override</emphasis> the implementation of an API at deployment time. For example, the following enterprise Web Bean provides an implementation of the API <literal>PaymentProcessor</literal> in production:"
-msgstr "Si è già visto come il modello di dependency injection di Web Beans consenta l'<emphasis>override</emphasis> dell'implementazione di un API a deployment time. Per esempio, il seguente Web Bean enterprise fornisce un'implementazione di un API <literal>PaymentProcessor</literal> in produzione:"
-
-#. Tag: programlisting
-#: specialization.xml:11
-#, no-c-format
-msgid ""
-"@CreditCard @Stateless\n"
-"public class CreditCardPaymentProcessor \n"
-"        implements PaymentProcessor {\n"
-"    ...\n"
-"}"
-msgstr ""
-"@CreditCard @Stateless\n"
-"public class CreditCardPaymentProcessor \n"
-"        implements PaymentProcessor {\n"
-"    ...\n"
-"}"
-
-#. Tag: para
-#: specialization.xml:13
-#, no-c-format
-msgid "But in our staging environment, we override that implementation of <literal>PaymentProcessor</literal> with a different Web Bean:"
-msgstr "Ma in quest'ambiente di prova si procede con l'override dell'implementazione di <literal>PaymentProcessor</literal> con un Web Bean differente:"
-
-#. Tag: programlisting
-#: specialization.xml:16
-#, no-c-format
-msgid ""
-"@CreditCard @Stateless @Staging\n"
-"public class StagingCreditCardPaymentProcessor \n"
-"        implements PaymentProcessor {\n"
-"    ...\n"
-"}"
-msgstr ""
-"@CreditCard @Stateless @Staging\n"
-"public class StagingCreditCardPaymentProcessor \n"
-"        implements PaymentProcessor {\n"
-"    ...\n"
-"}"
-
-#. Tag: para
-#: specialization.xml:18
-#, no-c-format
-msgid "What we've tried to do with <literal>StagingCreditCardPaymentProcessor</literal> is to completely replace <literal>AsyncPaymentProcessor</literal> in a particular deployment of the system. In that deployment, the deployment type <literal>@Staging</literal> would have a higher priority than the default deployment type <literal>@Production</literal>, and therefore clients with the following injection point:"
-msgstr "Quello che si è cercato di fare con  <literal>StagingCreditCardPaymentProcessor</literal> è sostituire completamente <literal>AsyncPaymentProcessor</literal> in un particolare deployment del sistema. In tale deployment, il tipo di deploy <literal>@Staging</literal> avrebbe più alta priorità del tipo di deploy di default <literal>@Production</literal>, e quindi client con il seguente punto di iniezione:"
-
-#. Tag: programlisting
-#: specialization.xml:24
-#, no-c-format
-msgid "@CreditCard PaymentProcessor ccpp"
-msgstr "@CreditCard PaymentProcessor ccpp"
-
-#. Tag: para
-#: specialization.xml:26
-#, no-c-format
-msgid "Would receive an instance of <literal>StagingCreditCardPaymentProcessor</literal>."
-msgstr "riceverebbero un'istanza di <literal>StagingCreditCardPaymentProcessor</literal>."
-
-#. Tag: para
-#: specialization.xml:28
-#, no-c-format
-msgid "Unfortunately, there are several traps we can easily fall into:"
-msgstr "Sfortunatamente ci sono parecchie trappole in cui è facile cadere:"
-
-#. Tag: para
-#: specialization.xml:32
-#, no-c-format
-msgid "the higher-priority Web Bean may not implement all the API types of the Web Bean that it attempts to override,"
-msgstr "il Web Bean con più alta priorità potrebbe non implementare tutti i tipi di API del Web Bean di cui tenta di fare override,"
-
-#. Tag: para
-#: specialization.xml:36
-#, no-c-format
-msgid "the higher-priority Web Bean may not declare all the binding types of the Web Bean that it attempts to override,"
-msgstr "il Web Bean con più alta priorità potrebbe non dichiare tutti i tipi di binding del Web Bean di cui tenta di fare override,"
-
-#. Tag: para
-#: specialization.xml:40
-#, no-c-format
-msgid "the higher-priority Web Bean might not have the same name as the Web Bean that it attempts to override, or"
-msgstr "il Web Bean con più alta priorità potrebbe non avere lo stesso nome del Web Bean di cui tenta di fare override, oppure"
-
-#. Tag: para
-#: specialization.xml:44
-#, no-c-format
-msgid "the Web Bean that it attempts to override might declare a producer method, disposal method or observer method."
-msgstr "il Web Bean di cui tenta di fare override potrebbe dichiarare un metodo produttore, metodo distruttore o metodo osservatore."
-
-#. Tag: para
-#: specialization.xml:49
-#, no-c-format
-msgid "In each of these cases, the Web Bean that we tried to override could still be called at runtime. Therefore, overriding is somewhat prone to developer error."
-msgstr "In ciascuno di questi casi, il Web Bean di cui si tenta l'override potrebbe ancora venire chiamato a runtime. Quindi, l'override è qualcosa di incline all'errore per lo sviluppatore."
-
-#. Tag: para
-#: specialization.xml:52
-#, no-c-format
-msgid "Web Beans provides a special feature, called <emphasis>specialization</emphasis>, that helps the developer avoid these traps. Specialization looks a little esoteric at first, but it's easy to use in practice, and you'll really appreciate the extra security it provides."
-msgstr "Web Beans fornisce una funzionalità speciale chiamata <emphasis>specializzazione</emphasis>, che aiuta lo sviluppatore ad evitare queste trappole. La specializzazione sembra inizialmente un pò esoterica, ma in pratica è facile da usare, e si apprezzerà veramente la sicurezza extra che fornisce. "
-
-#. Tag: title
-#: specialization.xml:58
-#, no-c-format
-msgid "Using specialization"
-msgstr "Usare la specializzazione"
-
-#. Tag: para
-#: specialization.xml:60
-#, no-c-format
-msgid "Specialization is a feature that is specific to simple and enterprise Web Beans. To make use of specialization, the higher-priority Web Bean must:"
-msgstr "La specializzazione è una funzionalità specifica dei Web Bean semplici ed enterprise. Per fare uso della specializzazione il Web Bean a più alta priorità deve:"
-
-#. Tag: para
-#: specialization.xml:65
-#, no-c-format
-msgid "be a direct subclass of the Web Bean it overrides, and"
-msgstr "essere un diretta sottoclasse del Web Bean di cui fa l'override, e"
-
-#. Tag: para
-#: specialization.xml:68
-#, no-c-format
-msgid "be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or an enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, and"
-msgstr "essere un semplice Web Bean se il Web Bean di cui fare override è un semplice Web Bean o un Web Bean Enterprise se il Web Bean di cui fa override è un Web Bean Enterprise, e"
-
-#. Tag: para
-#: specialization.xml:73
-#, no-c-format
-msgid "be annotated <literal>@Specializes</literal>."
-msgstr "essere annotato con <literal>@Specializes</literal>."
-
-#. Tag: programlisting
-#: specialization.xml:77
-#, no-c-format
-msgid ""
-"@Stateless @Staging @Specializes\n"
-"public class StagingCreditCardPaymentProcessor \n"
-"        extends CreditCardPaymentProcessor {\n"
-"    ...\n"
-"}"
-msgstr ""
-"@Stateless @Staging @Specializes\n"
-"public class StagingCreditCardPaymentProcessor \n"
-"        extends CreditCardPaymentProcessor {\n"
-"    ...\n"
-"}"
-
-#. Tag: para
-#: specialization.xml:79
-#, no-c-format
-msgid "We say that the higher-priority Web Bean <emphasis>specializes</emphasis> its superclass."
-msgstr "Si dice che il Web Bean a più alta priorità <emphasis>specializza</emphasis> la sua superclasse."
-
-#. Tag: title
-#: specialization.xml:85
-#, no-c-format
-msgid "Advantages of specialization"
-msgstr "Vantaggi della specializzazione"
-
-#. Tag: para
-#: specialization.xml:87
-#, no-c-format
-msgid "When specialization is used:"
-msgstr "Quando viene usata la specializzazione:"
-
-#. Tag: para
-#: specialization.xml:91
-#, no-c-format
-msgid "the binding types of the superclass are automatically inherited by the Web Bean annotated <literal>@Specializes</literal>, and"
-msgstr "i tipi di binding della superclasse vengono automaticamente ereditati dal Web Bean annotato con <literal>@Specializes</literal>, e"
-
-#. Tag: para
-#: specialization.xml:95
-#, no-c-format
-msgid "the Web Bean name of the superclass is automatically inherited by the Web Bean annotated <literal>@Specializes</literal>, and"
-msgstr "il nome del Web Bean della superclasse è automaticamente ereditato dal Web Bean annotato con <literal>@Specializes</literal>, e"
-
-#. Tag: para
-#: specialization.xml:99
-#, no-c-format
-msgid "producer methods, disposal methods and observer methods declared by the superclass are called upon an instance of the Web Bean annotated <literal>@Specializes</literal>."
-msgstr "i metodi produttori, metodi distruttori e metodi osservatori dichiarati dalla superclasse vengono chiamati da un'istanza del Web Bean annotato con <literal>@Specializes</literal>."
-
-#. Tag: para
-#: specialization.xml:105
-#, no-c-format
-msgid "In our example, the binding type <literal>@CreditCard</literal> of <literal>CreditCardPaymentProcessor</literal> is inherited by <literal>StagingCreditCardPaymentProcessor</literal>."
-msgstr "Nel nostro esempio, il tipo di binding <literal>@CreditCard</literal> di <literal>CreditCardPaymentProcessor</literal> viene ereditato da <literal>StagingCreditCardPaymentProcessor</literal>."
-
-#. Tag: para
-#: specialization.xml:109
-#, no-c-format
-msgid "Furthermore, the Web Bean manager will validate that:"
-msgstr "Inoltre il manager Web Bean validerà che:"
-
-#. Tag: para
-#: specialization.xml:113
-#, no-c-format
-msgid "all API types of the superclass are API types of the Web Bean annotated <literal>@Specializes</literal> (all local interfaces of the superclass enterprise bean are also local interfaces of the subclass),"
-msgstr "tutti i tipi di API della superclasse sono tipi di API del Web Bean annotato con <literal>@Specializes</literal> (tutte le interfacce locali del bean enterprise della superclasse sono anch'essi interfacce della sottoclasse),"
-
-#. Tag: para
-#: specialization.xml:119
-#, no-c-format
-msgid "the deployment type of the Web Bean annotated <literal>@Specializes</literal> has a higher precedence than the deployment type of the superclass, and"
-msgstr "il tipo di deploy di un Web Bean annotato con <literal>@Specializes</literal> ha una precedenza più alta di un tipo di deploy della superclasse, e"
-
-#. Tag: para
-#: specialization.xml:124
-#, no-c-format
-msgid "there is no other enabled Web Bean that also specializes the superclass."
-msgstr "non esiste nessun altro Web Bean che specializza la superclasse."
-
-#. Tag: para
-#: specialization.xml:129
-#, no-c-format
-msgid "If any of these conditions are violated, the Web Bean manager throws an exception at initialization time."
-msgstr "Se una di queste condizioni viene violata, il manager Web Bean lancia un'eccezione in fase di inizializzazione."
-
-#. Tag: para
-#: specialization.xml:132
-#, no-c-format
-msgid "Therefore, we can be certain that the superclass with <emphasis>never</emphasis> be called in any deployment of the system where the Web Bean annotated <literal>@Specializes</literal> is deployed and enabled."
-msgstr "Quindi, si può essere certi che la superclasse non verrà <emphasis>mai</emphasis> chiamata in alcun deploy del sistema in cui viene deployato ed abilitato il Web Bean annotato con <literal>@Specializes</literal>."
-

Deleted: doc/trunk/reference/it-IT/modules/stereotypes.po
===================================================================
--- doc/trunk/reference/it-IT/modules/stereotypes.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/stereotypes.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,359 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-25 22:17+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: stereotypes.xml:4
-#, no-c-format
-msgid "Stereotypes"
-msgstr "Stereotipi"
-
-#. Tag: para
-#: stereotypes.xml:6
-#, no-c-format
-msgid "According to the Web Beans specification:"
-msgstr "Secondo la specifica Web Beans:"
-
-#. Tag: para
-#: stereotypes.xml:10
-#, no-c-format
-msgid "In many systems, use of architectural patterns produces a set of recurring Web Bean roles. A stereotype allows a framework developer to identify such a role and declare some common metadata for Web Beans with that role in a central place."
-msgstr "In molti sistemi l'uso di pattern architetturali produce un set di ruoli Web Bean ricorrenti. Uno stereotipo consente allo sviluppatore di framework di identificare tale ruolo e di dichiarare alcuni metadati comuni per i Web Bean con tale ruolo come parte principale."
-
-#. Tag: para
-#: stereotypes.xml:14
-#, no-c-format
-msgid "A stereotype encapsulates any combination of:"
-msgstr "Uno stereotipo incapsula qualsiasi combinazione di:"
-
-#. Tag: para
-#: stereotypes.xml:18
-#, no-c-format
-msgid "a default deployment type,"
-msgstr "un tipo di deploy di default,"
-
-#. Tag: para
-#: stereotypes.xml:21
-#, no-c-format
-msgid "a default scope type,"
-msgstr "un tipo di scope di default,"
-
-#. Tag: para
-#: stereotypes.xml:24
-#, no-c-format
-msgid "a restriction upon the Web Bean scope,"
-msgstr "una restrizione sullo scope del Web Bean,"
-
-#. Tag: para
-#: stereotypes.xml:27
-#, no-c-format
-msgid "a requirement that the Web Bean implement or extend a certain type, and"
-msgstr "un requisito che il Web Bean implementi o estenda un certo tipo, e"
-
-#. Tag: para
-#: stereotypes.xml:30
-#, no-c-format
-msgid "a set of interceptor binding annotations."
-msgstr "un set di annotazioni di interceptor binding."
-
-#. Tag: para
-#: stereotypes.xml:34
-#, no-c-format
-msgid "A stereotype may also specify that all Web Beans with the stereotype have defaulted Web Bean names."
-msgstr "Uno stereotipo può anche specificare che tutti i Web Beans con tale stereotipo abbiano nomi Web Bean di default."
-
-#. Tag: para
-#: stereotypes.xml:37
-#, no-c-format
-msgid "A Web Bean may declare zero, one or multiple stereotypes."
-msgstr "Un Web Bean può dichiarare zero, uno o più stereotipi."
-
-#. Tag: para
-#: stereotypes.xml:41
-#, no-c-format
-msgid "A stereotype is a Java annotation type. This stereotype identifies action classes in some MVC framework:"
-msgstr "Uno stereotipo è un tipo di annotazione Java. Questo stereotipo identifica le classi di azione in alcuni framework MVC:"
-
-#. Tag: programlisting
-#: stereotypes.xml:44
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-
-#. Tag: para
-#: stereotypes.xml:46
-#, no-c-format
-msgid "We use the stereotype by applying the annotation to a Web Bean."
-msgstr "Lo stereotipo viene impiegato applicando l'annotazione al Web Bean."
-
-#. Tag: programlisting
-#: stereotypes.xml:48
-#, no-c-format
-msgid ""
-"<![CDATA[@Action \n"
-"public class LoginAction { ... }]]>"
-msgstr ""
-"<![CDATA[@Action \n"
-"public class LoginAction { ... }]]>"
-
-#. Tag: title
-#: stereotypes.xml:51
-#, no-c-format
-msgid "Default scope and deployment type for a stereotype"
-msgstr "Scope di default e tipo di deploy per uno stereotipo"
-
-#. Tag: para
-#: stereotypes.xml:53
-#, no-c-format
-msgid "A stereotype may specify a default scope and/or default deployment type for Web Beans with that stereotype. For example, if the deployment type <literal>@WebTier</literal> identifies Web Beans that should only be deployed when the system executes as a web application, we might specify the following defaults for action classes:"
-msgstr "Uno stereotipo può specificare uno scope di default e/o un tipo di deploy di default per Web Bean con tale stereotipo. Per esempio, se il tipo di deploy <literal>@WebTier</literal> identifica Web Bean che dovrebbero essere deployati quando il sistema viene eseguito come applicazione web, si potrebbero specificare i seguenti valori di default per le classi d'azione:"
-
-#. Tag: programlisting
-#: stereotypes.xml:59
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-
-#. Tag: para
-#: stereotypes.xml:61
-#, no-c-format
-msgid "Of course, a particular action may still override these defaults if necessary:"
-msgstr "Certamente una particolare azione può comunque fare l'override di questi valore se necessario:"
-
-#. Tag: programlisting
-#: stereotypes.xml:64
-#, no-c-format
-msgid ""
-"<![CDATA[@Dependent @Mock @Action \n"
-"public class MockLoginAction { ... }]]>"
-msgstr ""
-"<![CDATA[@Dependent @Mock @Action \n"
-"public class MockLoginAction { ... }]]>"
-
-#. Tag: para
-#: stereotypes.xml:66
-#, no-c-format
-msgid "If we want to force all actions to a particular scope, we can do that too."
-msgstr "Se si vuole forzare tutte le azioni ad un particolare scope, è possibile."
-
-#. Tag: title
-#: stereotypes.xml:72
-#, no-c-format
-msgid "Restricting scope and type with a stereotype"
-msgstr "Restringere lo scope ed il tipo con uno stereotipo"
-
-#. Tag: para
-#: stereotypes.xml:74
-#, no-c-format
-msgid "Suppose that we wish to prevent actions from declaring certain scopes. Web Beans lets us explicitly specify the set of allowed scopes for Web Beans with a certain stereotype. For example:"
-msgstr "Si supponga di voler prevenire le azioni dal dichiarare certi scope. Web Beans consente esplicitamente di specificare un set di scope consentiti per Web Bean con certi stereotipi. Per esempio:"
-
-#. Tag: programlisting
-#: stereotypes.xml:78
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype(supportedScopes=RequestScoped.class)\n"
-"public @interface Action {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype(supportedScopes=RequestScoped.class)\n"
-"public @interface Action {}]]>"
-
-#. Tag: para
-#: stereotypes.xml:80
-#, no-c-format
-msgid "If a particular action class attempts to specify a scope other than the Web Beans request scope, an exception will be thrown by the Web Bean manager at initialization time."
-msgstr "Se una particolare classe d'azione tenta di specificare uno scope diverso dallo scope di richiesta Web Bean, verrà lanciata un'eccezione dal manager Web Bean in fase di inizializzazione."
-
-#. Tag: para
-#: stereotypes.xml:84
-#, no-c-format
-msgid "We can also force all Web Bean with a certain stereotype to implement an interface or extend a class:"
-msgstr "Tutti i Web Bean con certi stereotipi possono venire forzati ad implementare un'interfaccia o ad estendere una classe:"
-
-#. Tag: programlisting
-#: stereotypes.xml:87
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype(requiredTypes=AbstractAction.class)\n"
-"public @interface Action {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype(requiredTypes=AbstractAction.class)\n"
-"public @interface Action {}]]>"
-
-#. Tag: para
-#: stereotypes.xml:89
-#, no-c-format
-msgid "If a particular action class does not extend the class <literal>AbstractAction</literal>, an exception will be thrown by the Web Bean manager at initialization time."
-msgstr "Se una particolare classe d'azione non estende la classe <literal>AbstractAction</literal>, verrà lanciata un'eccezione dal manager Web Bean in fase di inizializzazione."
-
-#. Tag: title
-#: stereotypes.xml:96
-#, no-c-format
-msgid "Interceptor bindings for stereotypes"
-msgstr "Interceptor binding per gli stereotipi"
-
-#. Tag: para
-#: stereotypes.xml:98
-#, no-c-format
-msgid "A stereotype may specify a set of interceptor bindings to be inherited by all Web Beans with that stereotype."
-msgstr "Uno stereotipo può specificare un set di interceptor binding da ereditare da tutti i Web Bean con quello stereotipo."
-
-#. Tag: programlisting
-#: stereotypes.xml:101
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@Transactional(requiresNew=true)\n"
-"@Secure\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@Transactional(requiresNew=true)\n"
-"@Secure\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-
-#. Tag: para
-#: stereotypes.xml:103
-#, no-c-format
-msgid "This helps us get technical concerns even further away from the business code!"
-msgstr "Questo aiuta ad ottenere concern tecnici anche lontano dal codice di business!"
-
-#. Tag: title
-#: stereotypes.xml:109
-#, no-c-format
-msgid "Name defaulting with stereotypes"
-msgstr "Assegnare nomi di default con gli stereotipi"
-
-#. Tag: para
-#: stereotypes.xml:111
-#, no-c-format
-msgid "Finally, we can specify that all Web Beans with a certain stereotype have a Web Bean name, defaulted by the Web Bean manager. Actions are often referenced in JSP pages, so they're a perfect use case for this feature. All we need to do is add an empty <literal>@Named</literal> annotation:"
-msgstr "Infine è possibile specificare che tutti i Web Bean con certi stereotipi abbiamo un certo nome Web Bean, messo di default dal manager Web Bean. Le azioni sono spesso referenziate nelle pagine JSP, e quindi sono un caso d'uso perfetto per questa funzionalità. Basta aggiungere un'annotazione vuota <literal>@Named</literal>:"
-
-#. Tag: programlisting
-#: stereotypes.xml:116
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@Transactional(requiresNew=true)\n"
-"@Secure\n"
-"@Named\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@Transactional(requiresNew=true)\n"
-"@Secure\n"
-"@Named\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-
-#. Tag: para
-#: stereotypes.xml:118
-#, no-c-format
-msgid "Now, <literal>LoginAction</literal> will have the name <literal>loginAction</literal>."
-msgstr "Ora, <literal>LoginAction</literal> avrà nome <literal>loginAction</literal>."
-
-#. Tag: title
-#: stereotypes.xml:124
-#, no-c-format
-msgid "Standard stereotypes"
-msgstr "Stereotipi standard"
-
-#. Tag: para
-#: stereotypes.xml:126
-#, no-c-format
-msgid "We've already met two standard stereotypes defined by the Web Beans specification: <literal>@Interceptor</literal> and <literal>@Decorator</literal>."
-msgstr "Si sono già visti due stereotipi standard definiti dalla specifica Web Bean: <literal>@Interceptor</literal> e <literal>@Decorator</literal>."
-
-#. Tag: para
-#: stereotypes.xml:129
-#, no-c-format
-msgid "Web Beans defines one further standard stereotype:"
-msgstr "Web Bean definisce un ulteriore stereotipo standard:"
-
-#. Tag: programlisting
-#: stereotypes.xml:131
-#, no-c-format
-msgid ""
-"<![CDATA[@Named \n"
-"@RequestScoped \n"
-"@Stereotype \n"
-"@Target({TYPE, METHOD}) \n"
-"@Retention(RUNTIME) \n"
-"public @interface Model {} ]]>"
-msgstr ""
-"<![CDATA[@Named \n"
-"@RequestScoped \n"
-"@Stereotype \n"
-"@Target({TYPE, METHOD}) \n"
-"@Retention(RUNTIME) \n"
-"public @interface Model {} ]]>"
-
-#. Tag: para
-#: stereotypes.xml:133
-#, no-c-format
-msgid "This stereotype is intended for use with JSF. Instead of using JSF managed beans, just annotate a Web Bean <literal>@Model</literal>, and use it directly in your JSF page."
-msgstr "Questo stereotipo è inteso per l'uso con JSF. Invece di usare bean gestiti da JSF, basta annotare un Web Bean con <literal>@Model</literal>, e usarlo direttamente nelle pagine JSF."
-

Deleted: doc/trunk/reference/it-IT/modules/xml.po
===================================================================
--- doc/trunk/reference/it-IT/modules/xml.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/it-IT/modules/xml.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,360 +0,0 @@
-# Language it-IT translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-25 15:29+0100\n"
-"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: xml.xml:4
-#, no-c-format
-msgid "Defining Web Beans using XML"
-msgstr "Definire i Web Beans tramite XML"
-
-#. Tag: para
-#: xml.xml:6
-#, no-c-format
-msgid "So far, we've seen plenty of examples of Web Beans declared using annotations. However, there are a couple of occasions when we can't use annotations to define the Web Bean:"
-msgstr "Finora si sono visti molti esempi di Web Bean dichiarati usando annotazioni. Comunque ci sono varie occasioni in cui non è possibile usare le annotazioni per definire un Web Bean:"
-
-#. Tag: para
-#: xml.xml:12
-#, no-c-format
-msgid "when the implementation class comes from some preexisting library, or"
-msgstr "quando la classe d'implementazione proviene da qualche libreria preesistente, o"
-
-#. Tag: para
-#: xml.xml:15
-#, no-c-format
-msgid "when there should be multiple Web Beans with the same implementation class."
-msgstr "quando devrebbero esserci Web Beans multipli con la stessa classe d'implementazione."
-
-#. Tag: para
-#: xml.xml:20
-#, no-c-format
-msgid "In either of these cases, Web Beans gives us two options:"
-msgstr "In entrambi i casi Web Beans fornisce due opzioni:"
-
-#. Tag: para
-#: xml.xml:23
-#, no-c-format
-msgid "write a producer method, or"
-msgstr "scrivere un metodo produttore, o"
-
-#. Tag: para
-#: xml.xml:24
-#, no-c-format
-msgid "declare the Web Bean using XML."
-msgstr "dichiarare il Web Bean usando XML."
-
-#. Tag: para
-#: xml.xml:27
-#, no-c-format
-msgid "Many frameworks use XML to provide metadata relating to Java classes. However, Web Beans uses a very different approach to specifying the names of Java classes, fields or methods to most other frameworks. Instead of writing class and member names as the string values of XML elements and attributes, Web Beans lets you use the class or member name as the name of the XML element."
-msgstr "Molti framework utilizzano XML per scrivere metadati relazionati alle classi. Web Beans usa un approccio molto diverso rispetto agli altri framework per specificare i nomi delle classi Java, dei campi o dei metodi. Invece di scrivere i nomi delle classi o dei membri come valori stringa di elementi e atttributi XML, Web Beans consente di utilizzare il nome della classe o del membro come nome dell'elemento XML."
-
-#. Tag: para
-#: xml.xml:33
-#, no-c-format
-msgid "The advantage of this approach is that you can write an XML schema that prevents spelling errors in your XML document. It's even possible for a tool to generate the XML schema automatically from the compiled Java code. Or, an integrated development environment could perform the same validation without the need for the explicit intermediate generation step."
-msgstr "Il vantaggio di quest'approccio è che risulta possibile scrivere uno schemaXML che previene gli errori di scrittura nei documenti XML. E' comunque possibile per un tool generare lo schema XML in modo automatico dal codice Java compilato. Oppure un ambiente di sviluppo integrato può eseguire la stessa validazionesenza il bisogno di un passo di generazione intermedio ed esplicito."
-
-#. Tag: title
-#: xml.xml:40
-#, no-c-format
-msgid "Declaring Web Bean classes"
-msgstr "Dichiarare classi Web Bean"
-
-#. Tag: para
-#: xml.xml:42
-#, no-c-format
-msgid "For each Java package, Web Beans defines a corresponding XML namespace. The namespace is formed by prepending <literal>urn:java:</literal> to the Java package name. For the package <literal>com.mydomain.myapp</literal>, the XML namespace is <literal>urn:java:com.mydomain.myapp</literal>."
-msgstr "Per ogni pacchetto Java, Web Beans definisce un corrispondente namespace XML. Ilnamespace è formato aggiungendo il prefisso <literal>urn:java:</literal> al nomedel pacchetto Java. Per il pacchetto <literal>com.mydomain.myapp</literal>, il namespace XML è <literal>urn:java:com.mydomain.myapp</literal>."
-
-#. Tag: para
-#: xml.xml:47
-#, no-c-format
-msgid "Java types belonging to a package are referred to using an XML element in the namespace corresponding to the package. The name of the element is the name of the Java type. Fields and methods of the type are specified by child elements in the same namespace. If the type is an annotation, members are specified by attributes of the element."
-msgstr "I tipi Java appartenenti al pacchetto vengono riferiti usando un elemento XML nel namespace corrispondente al pacchetto. Il nome dell'elemento è un nome di tipo Java. I campi e metodi del tipo vengono specificati dagli elementi figlio nello stesso namespace. Se il tipo è un'annotazione, i membri sonospecificati dagli attributi dell'elemento."
-
-#. Tag: para
-#: xml.xml:53
-#, no-c-format
-msgid "For example, the element <literal>&lt;util:Date/&gt;</literal> in the following XML fragment refers to the class <literal>java.util.Date</literal>:"
-msgstr "Per esempio l'elemento <literal>&lt;util:Date/&gt;</literal> nel seguente frammento XML si riferisce alla classe <literal>java.util.Date</literal>:"
-
-#. Tag: programlisting
-#: xml.xml:56
-#, no-c-format
-msgid ""
-"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
-"          xmlns:util=\"urn:java:java.util\">\n"
-"\n"
-"    <util:Date/>\n"
-"\n"
-"</WebBeans>]]>"
-msgstr ""
-"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
-"          xmlns:util=\"urn:java:java.util\">\n"
-"\n"
-"    <util:Date/>\n"
-"\n"
-"</WebBeans>]]>"
-
-#. Tag: para
-#: xml.xml:58
-#, no-c-format
-msgid "And this is all the code we need to declare that <literal>Date</literal> is a simple Web Bean! An instance of <literal>Date</literal> may now be injected by any other Web Bean:"
-msgstr "E questo è tutto il codice per dichiarare che <literal>Date</literal> è un Web Bean semplice! Un'istanza di <literal>Date</literal> ora può essere iniettata da qualsiasi altro Web Bean:"
-
-#. Tag: programlisting
-#: xml.xml:62
-#, no-c-format
-msgid "<![CDATA[@Current Date date]]>"
-msgstr "<![CDATA[@Current Date date]]>"
-
-#. Tag: title
-#: xml.xml:67
-#, no-c-format
-msgid "Declaring Web Bean metadata"
-msgstr "Dichiarare metadati Web Bean"
-
-#. Tag: para
-#: xml.xml:69
-#, no-c-format
-msgid "We can declare the scope, deployment type and interceptor binding types using direct child elements of the Web Bean declaration:"
-msgstr "E' possibile dichiarare lo scope, il tipo di deploy ed i tipi di binding degli interceptor usando elementi figli diretti della dichiarazione Web Bean:"
-
-#. Tag: programlisting
-#: xml.xml:72
-#, no-c-format
-msgid ""
-"<![CDATA[<myapp:ShoppingCart>\n"
-"    <SessionScoped/>\n"
-"    <myfwk:Transactional requiresNew=\"true\"/>\n"
-"    <myfwk:Secure/>\n"
-"</myapp:ShoppingCart>]]>"
-msgstr ""
-"<![CDATA[<myapp:ShoppingCart>\n"
-"    <SessionScoped/>\n"
-"    <myfwk:Transactional requiresNew=\"true\"/>\n"
-"    <myfwk:Secure/>\n"
-"</myapp:ShoppingCart>]]>"
-
-#. Tag: para
-#: xml.xml:74
-#, no-c-format
-msgid "We use exactly the same approach to specify names and binding type:"
-msgstr "Si utilizza esattamente lo stesso approccio per specificare i nomi ed il tipo di binding:"
-
-#. Tag: programlisting
-#: xml.xml:76
-#, no-c-format
-msgid ""
-"<![CDATA[<util:Date>\n"
-"    <Named>currentTime</Named>\n"
-"</util:Date>\n"
-"\n"
-"<util:Date>\n"
-"    <SessionScoped/>\n"
-"    <myapp:Login/>\n"
-"    <Named>loginTime</Named>\n"
-"</util:Date>\n"
-"\n"
-"<util:Date>\n"
-"    <ApplicationScoped/>\n"
-"    <myapp:SystemStart/>\n"
-"    <Named>systemStartTime</Named>\n"
-"</util:Date>]]>"
-msgstr ""
-"<![CDATA[<util:Date>\n"
-"    <Named>currentTime</Named>\n"
-"</util:Date>\n"
-"\n"
-"<util:Date>\n"
-"    <SessionScoped/>\n"
-"    <myapp:Login/>\n"
-"    <Named>loginTime</Named>\n"
-"</util:Date>\n"
-"\n"
-"<util:Date>\n"
-"    <ApplicationScoped/>\n"
-"    <myapp:SystemStart/>\n"
-"    <Named>systemStartTime</Named>\n"
-"</util:Date>]]>"
-
-#. Tag: para
-#: xml.xml:78
-#, no-c-format
-msgid "Where <literal>@Login</literal> and <literal>@SystemStart</literal> are binding annotations types."
-msgstr "Dove <literal>@Login</literal> e <literal>@SystemStart</literal> sono tipi di annotazioni di binding."
-
-#. Tag: programlisting
-#: xml.xml:81
-#, no-c-format
-msgid ""
-"<![CDATA[@Current Date currentTime;\n"
-"@Login Date loginTime;\n"
-"@SystemStart Date systemStartTime;]]>"
-msgstr ""
-"<![CDATA[@Current Date currentTime;\n"
-"@Login Date loginTime;\n"
-"@SystemStart Date systemStartTime;]]>"
-
-#. Tag: para
-#: xml.xml:83
-#, no-c-format
-msgid "As usual, a Web Bean may support multiple binding types:"
-msgstr "Di nuovo un Web Bean può supportare tipi di binding multipli:"
-
-#. Tag: programlisting
-#: xml.xml:85
-#, no-c-format
-msgid ""
-"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
-"    <myapp:PayByCheque/>\n"
-"    <myapp:Asynchronous/>\n"
-"</myapp:AsynchronousChequePaymentProcessor>]]>"
-msgstr ""
-"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
-"    <myapp:PayByCheque/>\n"
-"    <myapp:Asynchronous/>\n"
-"</myapp:AsynchronousChequePaymentProcessor>]]>"
-
-#. Tag: para
-#: xml.xml:87
-#, no-c-format
-msgid "Interceptors and decorators are just simple Web Beans, so they may be declared just like any other simple Web Bean:"
-msgstr "Interceptor e decoratori sono solo eb Bean semplici, e quindi possono essere dichiarati come qualsiasi altro Web Bean semplice:"
-
-#. Tag: programlisting
-#: xml.xml:90
-#, no-c-format
-msgid ""
-"<![CDATA[<myfwk:TransactionInterceptor>\n"
-"    <Interceptor/>\n"
-"    <myfwk:Transactional/>\n"
-"</myfwk:TransactionInterceptor>]]>"
-msgstr ""
-"<![CDATA[<myfwk:TransactionInterceptor>\n"
-"    <Interceptor/>\n"
-"    <myfwk:Transactional/>\n"
-"</myfwk:TransactionInterceptor>]]>"
-
-#. Tag: title
-#: xml.xml:95
-#, no-c-format
-msgid "Declaring Web Bean members"
-msgstr "Dichiarare membri Web Bean"
-
-#. Tag: para
-#: xml.xml:97
-#, no-c-format
-msgid "TODO!"
-msgstr "DA FARE!"
-
-#. Tag: title
-#: xml.xml:104
-#, no-c-format
-msgid "Declaring inline Web Beans"
-msgstr "Dichiarazione inline dei Web Beans"
-
-#. Tag: para
-#: xml.xml:106
-#, no-c-format
-msgid "Web Beans lets us define a Web Bean at an injection point. For example:"
-msgstr "I Web Beans consentono di definire un Web Bean ad un certo punto di iniezione. Per esempio:"
-
-#. Tag: programlisting
-#: xml.xml:108
-#, no-c-format
-msgid ""
-"<![CDATA[<myapp:System>\n"
-"    <ApplicationScoped/>\n"
-"    <myapp:admin>\n"
-"        <myapp:Name>\n"
-"            <myapp:firstname>Gavin</myapp:firstname>\n"
-"            <myapp:lastname>King</myapp:lastname>\n"
-"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
-"        </myapp:Name>\n"
-"    </myapp:admin>\n"
-"</myapp:System>]]>"
-msgstr ""
-"<![CDATA[<myapp:System>\n"
-"    <ApplicationScoped/>\n"
-"    <myapp:admin>\n"
-"        <myapp:Name>\n"
-"            <myapp:firstname>Gavin</myapp:firstname>\n"
-"            <myapp:lastname>King</myapp:lastname>\n"
-"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
-"        </myapp:Name>\n"
-"    </myapp:admin>\n"
-"</myapp:System>]]>"
-
-#. Tag: para
-#: xml.xml:110
-#, no-c-format
-msgid "The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of scope <literal>@Dependent</literal> and class <literal>Name</literal>, with a set of initial field values. This Web Bean has a special, container-generated binding and is therefore injectable only to the specific injection point at which it is declared."
-msgstr "L'elemento <literal>&lt;Name&gt;</literal> dichiara un Web Bean semplice con scope <literal>@Dependent</literal> e classe <literal>Name</literal>, con un set di valori di campo iniziali. Questo Web Bean ha uno speciale binding generatore dal container e quindi è iniettabile solo allo specifico punto di iniezione al quale è stato dichiarato."
-
-#. Tag: para
-#: xml.xml:116
-#, no-c-format
-msgid "This simple but powerful feature allows the Web Beans XML format to be used to specify whole graphs of Java objects. It's not quite a full databinding solution, but it's close!"
-msgstr "Questa caratteristica semplice e potente consente formato XML di Web Bean di essere usato per specificare l'intero grafo di oggetti Java. Non è ancora una completa soluzione di databinding, ma ci si avvicina!"
-
-#. Tag: title
-#: xml.xml:123
-#, no-c-format
-msgid "Using a schema"
-msgstr "Uso di uno schema"
-
-# tradurre frase
-#. Tag: para
-#: xml.xml:125
-#, no-c-format
-msgid "If we want our XML document format to be authored by people who aren't Java developers, or who don't have access to our code, we need to provide a schema. There's nothing specific to Web Beans about writing or using the schema."
-msgstr "Se si vuole che il formato di documento XML sia scritto da persone che non sono sviluppatori Java o che non hanno accesso al codice, occorre fornire uno schema. There's nothing specific to Web Beans about writing or using the schema."
-
-#. Tag: programlisting
-#: xml.xml:130
-#, no-c-format
-msgid ""
-"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
-"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
-"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/jee/web-beans-1.0.xsd\n"
-"                              urn:java:com.mydomain.myapp http://mydomain.com/xsd/myapp-1.2.xsd\">\n"
-"\n"
-"    <myapp:System>\n"
-"        ...\n"
-"    </myapp:System>\n"
-"\n"
-"</WebBeans>]]>"
-msgstr ""
-"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
-"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
-"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/jee/web-beans-1.0.xsd\n"
-"                              urn:java:com.mydomain.myapp http://mydomain.com/xsd/myapp-1.2.xsd\">\n"
-"\n"
-"    <myapp:System>\n"
-"        ...\n"
-"    </myapp:System>\n"
-"\n"
-"</WebBeans>]]>"
-
-#. Tag: para
-#: xml.xml:132
-#, no-c-format
-msgid "Writing an XML schema is quite tedious. Therefore, the Web Beans RI project will provide a tool which automatically generates the XML schema from compiled Java code."
-msgstr "Scrivere unoschema XML è abbastanza noiso. Quindi il progetto Web Beans RI fornirà uno strumento per generare automaticamente lo schema XML dal codice Java compilato."
-

Copied: doc/trunk/reference/it-IT/next.po (from rev 638, doc/trunk/reference/it-IT/modules/next.po)
===================================================================
--- doc/trunk/reference/it-IT/next.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/next.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,39 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-20 01:10+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: next.xml:4
+#, no-c-format
+msgid "Next steps"
+msgstr "Prossimi passi"
+
+#. Tag: para
+#: next.xml:6
+#, no-c-format
+msgid "Because Web Beans is so new, there's not yet a lot of information available online."
+msgstr "Poiché Web Beans è così nuova, non è ancora disponibile molta informazione online."
+
+#. Tag: para
+#: next.xml:9
+#, no-c-format
+msgid "Of course, the Web Beans specification is the best source of more information about Web Beans. The spec is about 100 pages long, only twice the length of this article, and almost as readable. But, of course, it covers many details that we've skipped over. The spec is available from <literal>http://jcp.org/en/jsr/detail?id=299</literal>."
+msgstr "La specifica Web Beans è sicuramente la migliore fonte per avere informazioni su Web Beans. La specifica è lunga circa 100 pagine, circa quest'articolo e per lo più leggibile altrettanto facilmente. Ma sicuramente copre molti dettagli che sono stati saltati nel presente documento. La specifica è disponibile al seguente indirizzo <literal>http://jcp.org/en/jsr/detail?id=299</literal>."
+
+#. Tag: para
+#: next.xml:15
+#, no-c-format
+msgid "The Web Beans Reference implementation is being developed at <literal>http://seamframework.org/WebBeans</literal>. The RI development team and the Web Beans spec lead blog at <literal>http://in.relation.to</literal>. This article is substantially based upon a series of blog entries published there."
+msgstr "L'implementazione della documentazione Web Beans è stata sviluppata in <literal>http://seamframework.org/WebBeans</literal>. Il team di sviluppo di RI ed il blog per la specifica Web Beans si trova in <literal>http://in.relation.to</literal>. Quest'articolo è sostanzialmente basato su una serie di articoli pubblicati sul blog."
+


Property changes on: doc/trunk/reference/it-IT/next.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/part1.po (from rev 721, doc/trunk/reference/it-IT/modules/part1.po)
===================================================================
--- doc/trunk/reference/it-IT/part1.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/part1.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,189 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-24 19:21+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+# verificare:
+# 1. sovrappone
+# 2. ciclo di vita (dei componenti)
+#. Tag: para
+#: part1.xml:5
+#, no-c-format
+msgid "The Web Beans (JSR-299) specification defines a set of services for the Java EE environment that makes applications much easier to develop. Web Beans layers an enhanced lifecycle and interaction model over existing Java component types including JavaBeans and Enterprise Java Beans. As a complement to the traditional Java EE programming model, the Web Beans services provide:"
+msgstr "La specifica Web Beans (JSR-299) definisce un insieme di servizi per l'ambiente Java EE che rende molto più facile lo sviluppo di applicazioni. Web Beans sovrappone un più ricco modello di interazione e di gestione del ciclo di vita ai tipi di componenti java esistenti, Java Beans and Enterprise Java Beans inclusi. A complemento del tradizionale modello di programmazione Java EE, i servizi  Web Beans forniscono:"
+
+#. Tag: para
+#: part1.xml:14
+#, no-c-format
+msgid "an improved lifecycle for stateful components, bound to well-defined <emphasis>contexts</emphasis>,"
+msgstr "una migliore gestione del ciclo di vita dei componenti stateful, associata a <emphasis>contesti</emphasis> ben definiti"
+
+#. Tag: para
+#: part1.xml:18
+#, no-c-format
+msgid "a typesafe approach to <emphasis>dependency injection</emphasis>,"
+msgstr "un approccio typesafe alla <emphasis>dependency injection</emphasis>,"
+
+# facility=struttura?
+#. Tag: para
+#: part1.xml:21
+#, no-c-format
+msgid "interaction via an <emphasis>event notification</emphasis> facility, and"
+msgstr "interazioni basate su una struttura per <emphasis>la notifica degli eventi</emphasis>, e"
+
+#. Tag: para
+#: part1.xml:25
+#, no-c-format
+msgid "a better approach to binding <emphasis>interceptors</emphasis> to components, along with a new kind of interceptor, called a <emphasis>decorator</emphasis>, that is more appropriate for use in solving business problems."
+msgstr "un migliore approccio nell'associazione degli <emphasis>interceptors</emphasis> ai componenti, unitamente all'introduzione di un nuovo tipo di interceptor, chiamato <emphasis>decoratore</emphasis>, più adatto ad essere utilizzato nella soluzione di problemi legati alla business logic."
+
+#. Tag: para
+#: part1.xml:32
+#, no-c-format
+msgid "Dependency injection, together with contextual lifecycle management, saves the user of an unfamiliar API from having to ask and answer the following questions:"
+msgstr "La dependency injection, insieme alla gestione contestuale del ciclo di vita dei componenti, risparmia a chi utilizza un API con cui non ha familiarità la necessità di dover formulare le risposte relative alle seguenti domande:"
+
+#. Tag: para
+#: part1.xml:38
+#, no-c-format
+msgid "what is the lifecycle of this object?"
+msgstr "qual è il ciclo di vita di questo oggetto?"
+
+#. Tag: para
+#: part1.xml:41
+#, no-c-format
+msgid "how many simultaneous clients can it have?"
+msgstr "quanti client può simultaneamente avere?"
+
+#. Tag: para
+#: part1.xml:44
+#, no-c-format
+msgid "is it multithreaded?"
+msgstr "è multithreaded?"
+
+# ottenerne/ricavarne
+#. Tag: para
+#: part1.xml:47
+#, no-c-format
+msgid "where can I get one from?"
+msgstr "da dove posso ottenerne uno?"
+
+#. Tag: para
+#: part1.xml:50
+#, no-c-format
+msgid "do I need to explicitly destroy it?"
+msgstr "devo distruggerlo esplicitamente?"
+
+#. Tag: para
+#: part1.xml:53
+#, no-c-format
+msgid "where should I keep my reference to it when I'm not using it directly?"
+msgstr "dove dovrei tenerne il riferimento quando non lo sto usando direttamente?"
+
+#. Tag: para
+#: part1.xml:57
+#, no-c-format
+msgid "how can I add an indirection layer, so that the implementation of this object can vary at deployment time?"
+msgstr "come posso aggiungere un livello di indirezione, in modo che l'implementazione di tale oggetto possa variare deployment time?"
+
+# go about (dovrei comportarmi)???
+#. Tag: para
+#: part1.xml:61
+#, no-c-format
+msgid "how should I go about sharing this object between other objects?"
+msgstr "cosa dovrei fare per condividere questo oggetto con altri oggetti?"
+
+# implementazione concreta mi pare pleonastico
+#. Tag: para
+#: part1.xml:65
+#, no-c-format
+msgid "A Web Bean specifies only the type and semantics of other Web Beans it depends upon. It need not be aware of the actual lifecycle, concrete implementation, threading model or other clients of any Web Bean it depends upon. Even better, the concrete implementation, lifecycle and threading model of a Web Bean it depends upon may vary according to the deployment scenario, without affecting any client."
+msgstr "Un Web Bean specifica soltanto il tipo e la semantica degli altri Web Beans da cui dipende. Non ha bisogno di essere a conoscenza del reale ciclo di vita, della implementazione, del modello di threading o degli altri client dei Web Bean da cui dipende. Ancor meglio, l'implementazione, il ciclo di vita e il modello di threading di un Web Bean da cui dipende possono variare a secondo dello scenario di deployment, senza avere effetti su nessun client."
+
+# <emphasis>loose-coupling</emphasis> è da tradurre?
+# inerente o inerente a?
+#. Tag: para
+#: part1.xml:72
+#, no-c-format
+msgid "Events, interceptors and decorators enhance the <emphasis>loose-coupling</emphasis> that is inherent in this model:"
+msgstr "Eventi, interceptor e decoratori potenziano l'<emphasis>accoppiamento debole</emphasis> (loose-coupling) inerente a questo modello:"
+
+# notifiche o eventi?
+#. Tag: para
+#: part1.xml:77
+#, no-c-format
+msgid "<emphasis>event notifications</emphasis> decouple event producers from event consumers,"
+msgstr "le <emphasis>notifiche degli eventi</emphasis> disaccoppiano i produttori di eventi dai consumatori,"
+
+#. Tag: para
+#: part1.xml:81
+#, no-c-format
+msgid "<emphasis>interceptors</emphasis> decouple technical concerns from business logic, and"
+msgstr "gli <emphasis>interceptor</emphasis> disaccoppiano i problemi tecnici dalla business logic, e"
+
+#. Tag: para
+#: part1.xml:85
+#, no-c-format
+msgid "<emphasis>decorators</emphasis> allow business concerns to be compartmentalized."
+msgstr "i <emphasis>decoratori</emphasis> permettono di compartimentare i problemi di business logic."
+
+# loro consumatori di eventi? destinatari è meglio?
+#. Tag: para
+#: part1.xml:90
+#, no-c-format
+msgid "Most importantly, Web Beans provides all these facilities in a <emphasis>typesafe</emphasis> way. Web Beans never uses string-based identifiers to determine how collaborating objects fit together. And XML, though it remains an option, is rarely used. Instead, Web Beans uses the typing information that is already available in the Java object model, together with a new pattern, called <emphasis>binding annotations</emphasis>, to wire together Web Beans, their dependencies, their interceptors and decorators and their event consumers."
+msgstr "Soprattutto, Web Beans fornisce tutti questi strumenti in un modo <emphasis>typesafe</emphasis>. Web Beans non usa mai identificatori di tipo stringa per determinare come interagiscono oggetti che collaborano fra di loro. Sebbene resti un'opzione, il linguaggio XML è usato raramente. Invece Web Beans utilizza l'informazione di tipo già presente nel modello a oggetti di Java, insieme ad un nuovo pattern, chiamato <emphasis>binding annotations</emphasis>, per assemblare i Web Beans, le loro dipendenze, i loro interceptor e decoratori e i loro consumatori di eventi."
+
+#. Tag: para
+#: part1.xml:100
+#, no-c-format
+msgid "The Web Beans services are general and apply to the following types of components that exist in the Java EE environment:"
+msgstr "I servizi di Web Beans sono generali e applicabili ai seguenti tipi di componenti che esistono in ambiente Java EE:"
+
+#. Tag: para
+#: part1.xml:105
+#, no-c-format
+msgid "all JavaBeans,"
+msgstr "tutti i JavaBeans,"
+
+#. Tag: para
+#: part1.xml:108
+#, no-c-format
+msgid "all EJBs, and"
+msgstr "tutti gli EJB, e"
+
+#. Tag: para
+#: part1.xml:111
+#, no-c-format
+msgid "all Servlets."
+msgstr "tutti i Servlets."
+
+#. Tag: para
+#: part1.xml:115
+#, no-c-format
+msgid "Web Beans even provides the necessary integration points so that other kinds of components defined by future Java EE specifications or by non-standard frameworks may be cleanly integrated with Web Beans, take advantage of the Web Beans services, and interact with any other kind of Web Bean."
+msgstr "Web Beans fornisce anche i necessari punti di integrazione in modo che altri tipi di componenti  definiti da future specifiche Java EE o da framework non standard possano essere integrati in modo trasparente con Web Beans, avvantaggiarsi dei suoi servizi, e interagire con qualunque altro tipo di Web Bean."
+
+#. Tag: para
+#: part1.xml:120
+#, no-c-format
+msgid "Web Beans was influenced by a number of existing Java frameworks, including Seam, Guice and Spring. However, Web Beans has its own very distinct character: more typesafe than Seam, more stateful and less XML-centric than Spring, more web and enterprise-application capable than Guice."
+msgstr "Web Beans è stata influenzata da un buon numero di framework Java esistenti, inclusi Seam, Guice and Spring. Comunque, Web Beans ha un proprio chiaro carattere distintivo: è più sicuro nell'uso dei tipi (typesafe) di Seam, è più orientato allo stato (stateful) e meno basato su XML di Spring, e si sposa meglio alle applicazioni web ed enterprise di Guice."
+
+# dove EJB Lite sia disponibile in modo embeddable
+#. Tag: para
+#: part1.xml:125
+#, no-c-format
+msgid "Most importantly, Web Beans is a JCP standard that integrates cleanly with Java EE, and with any Java SE environment where embeddable EJB Lite is available."
+msgstr "Soprattutto, Web Beans è uno standard JCP che si integra in modo trasparente con Java EE, e con qualunque ambiente Java SE dove EJB Lite sia disponibile in modo embeddable."
+


Property changes on: doc/trunk/reference/it-IT/part1.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/part2.po (from rev 721, doc/trunk/reference/it-IT/modules/part2.po)
===================================================================
--- doc/trunk/reference/it-IT/part2.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/part2.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,84 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-24 19:23+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part2.xml:5
+#, no-c-format
+msgid "The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. We've already seen three means of achieving loose coupling:"
+msgstr "Il primo tema saliente di Web Beans è l'<emphasis>accoppiamento debole (loose coupling)</emphasis>. Abbiamo già visto tre modi per realizzarlo:"
+
+#. Tag: para
+#: part2.xml:10
+#, no-c-format
+msgid "<emphasis>deployment types</emphasis> enable deployment time polymorphism,"
+msgstr "i <emphasis>tipi di deployment</emphasis> rendono possibile il polimorfismo a deployment time,"
+
+#. Tag: para
+#: part2.xml:14
+#, no-c-format
+msgid "<emphasis>producer methods</emphasis> enable runtime polymorphism, and"
+msgstr "i <emphasis>metodi produttori</emphasis> rendono possibile il polimorfismo a runtime, e"
+
+# la gestione del ciclo di vita contestuale  o la gestione contestuale del ciclo di vita?
+#. Tag: para
+#: part2.xml:18
+#, no-c-format
+msgid "<emphasis>contextual lifecycle management</emphasis> decouples Web Bean lifecycles."
+msgstr "<emphasis>la gestione contestuale del ciclo di vita</emphasis> disaccoppia i cicli di vita dei Web Bean."
+
+#. Tag: para
+#: part2.xml:23
+#, no-c-format
+msgid "These techniques serve to enable loose coupling of client and server. The client is no longer tightly bound to an implementation of an API, nor is it required to manage the lifecycle of the server object. This approach lets <emphasis>stateful objects interact as if they were services</emphasis>."
+msgstr "Queste tecniche servono a realizzare l'accoppiamento debole (loose coupling) di client e server. Il client non è più strettamente legato all'implementazione di una API, né è tenuto a gestire il ciclo di vita dell'oggetto server. Questo approccio permette <emphasis>agli oggetti stateful di interagire come se fossero servizi</emphasis>."
+
+#  le funzionalità e gli strumenti sopraelencati
+#. Tag: para
+#: part2.xml:28
+#, no-c-format
+msgid "Loose coupling makes a system more <emphasis>dynamic</emphasis>. The system can respond to change in a well-defined manner. In the past, frameworks that attempted to provide the facilities listed above invariably did it by sacrificing type safety. Web Beans is the first technology that achieves this level of loose coupling in a typesafe way."
+msgstr "L'accoppiamento debole (loose coupling) rende un sistema più <emphasis>dinamico</emphasis>. Il sistema può rispondere ai cambiamenti in un modo ben definito. In passato, i framework che hanno cercato di fornire le funzionalità e gli strumenti sopraelencati, l'hanno puntualmente fatto a discapito della sicurezza dei tipi (type safety). Web Beans è la prima tecnologia a raggiungere questo livello di puntualmente accoppiamento debole (loose coupling) in modo sicuro rispetto all'uso dei tipi."
+
+# sostengono o ampliano o aiutano...
+#. Tag: para
+#: part2.xml:34
+#, no-c-format
+msgid "Web Beans provides three extra important facilities that further the goal of loose coupling:"
+msgstr "Web Beans fornisce tre strumenti extra importanti che ampliano l'obiettivo del loose coupling:"
+
+#. Tag: para
+#: part2.xml:39
+#, no-c-format
+msgid "<emphasis>interceptors</emphasis> decouple technical concerns from business logic,"
+msgstr "gli <emphasis>interceptor</emphasis> disaccoppiano i problemi tecnici dalla business logic,"
+
+#. Tag: para
+#: part2.xml:43
+#, no-c-format
+msgid "<emphasis>decorators</emphasis> may be used to decouple some business concerns, and"
+msgstr "i <emphasis>decoratori</emphasis> possono essere usati per disaccoppiare alcuni problemi relativi alla business logic, e"
+
+#. Tag: para
+#: part2.xml:47
+#, no-c-format
+msgid "<emphasis>event notifications</emphasis> decouple event producers from event consumers."
+msgstr "le <emphasis>notifiche degli eventi</emphasis> disaccoppiano i produttori di eventi dai consumatori."
+
+#. Tag: para
+#: part2.xml:52
+#, no-c-format
+msgid "Let's explore interceptors first."
+msgstr "Innanzitutto esploriamo gli interceptor."
+


Property changes on: doc/trunk/reference/it-IT/part2.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/part3.po (from rev 721, doc/trunk/reference/it-IT/modules/part3.po)
===================================================================
--- doc/trunk/reference/it-IT/part3.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/part3.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,122 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-24 19:30+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+# strong typing?
+#. Tag: para
+#: part3.xml:5
+#, no-c-format
+msgid "The second major theme of Web Beans is <emphasis>strong typing</emphasis>. The information about the dependencies, interceptors and decorators of a Web Bean, and the information about event consumers for an event producer, is contained in typesafe Java constructs that may be validated by the compiler."
+msgstr "Il secondo tema saliente di Web Beans è lo <emphasis>tipizzazione forte (strong typing)</emphasis>. Le informazioni riguardanti dipendenze, interceptor e decorator di un Web Bean, e le informazioni sui i consumatori relativi ad un produttore di eventi, sono contenute in costrutti Java sicuri rispetto ai tipi (typesafe) che possono essere validati dal compilatore."
+
+#. Tag: para
+#: part3.xml:10
+#, no-c-format
+msgid "You don't see string-based identifiers in Web Beans code, not because the framework is hiding them from you using clever defaulting rules&#151;so-called \"configuration by convention\"&#151;but because there are simply no strings there to begin with!"
+msgstr "Non si vedono identificatori di tipo stringa nel codice basato su Web Beans, non perché il framework li nasconde usando regole intelligenti nell'assegnamento dei valori di default&#151;la cosiddetta \"configurazione per convenzione (configuration by convention)\"&#151;ma semplicemente perché non ci sono stringhe, tanto per cominciare!"
+
+# senza che sia necessario realizzare dei tools appositi
+#. Tag: para
+#: part3.xml:15
+#, no-c-format
+msgid "The obvious benefit of this approach is that <emphasis>any</emphasis> IDE can provide autocompletion, validation and refactoring without the need for special tooling. But there is a second, less-immediately-obvious, benefit. It turns out that when you start thinking of identifying objects, events or interceptors via annotations instead of names, you have an opportunity to lift the semantic level of your code."
+msgstr "L'ovvio beneficio di questo approccio è che <emphasis>qualunque</emphasis> IDE può fornire autocompletamento, validazione e refactoring senza che sia necessario realizzare dei tools appositi. Ma c'è un secondo beneficio meno immediatamente ovvio. Si scopre che quando si incomincia a pensare di identificare oggetti, eventi o interceptor usando annotazioni invece di nomi, si ha l'opportunità di elevare il livello semantico del proprio codice."
+
+#. Tag: para
+#: part3.xml:21
+#, no-c-format
+msgid "Web Beans encourages you develop annotations that model concepts, for example,"
+msgstr "Web Beans incoraggia a sviluppare annotazioni che modellano concetti, per esempio,"
+
+#. Tag: para
+#: part3.xml:26
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>,"
+msgstr "<literal>@Asynchronous</literal>,"
+
+#. Tag: para
+#: part3.xml:29
+#, no-c-format
+msgid "<literal>@Mock</literal>,"
+msgstr "<literal>@Mock</literal>,"
+
+#. Tag: para
+#: part3.xml:32
+#, no-c-format
+msgid "<literal>@Secure</literal> or"
+msgstr "<literal>@Secure</literal> or"
+
+#. Tag: para
+#: part3.xml:35
+#, no-c-format
+msgid "<literal>@Updated</literal>,"
+msgstr "<literal>@Secure</literal> or"
+
+#. Tag: para
+#: part3.xml:39
+#, no-c-format
+msgid "instead of using compound names like"
+msgstr "invece di usare nomi composti come"
+
+#. Tag: para
+#: part3.xml:43
+#, no-c-format
+msgid "<literal>asyncPaymentProcessor</literal>,"
+msgstr "<literal>asyncPaymentProcessor</literal>,"
+
+#. Tag: para
+#: part3.xml:46
+#, no-c-format
+msgid "<literal>mockPaymentProcessor</literal>,"
+msgstr "<literal>mockPaymentProcessor</literal>,"
+
+#. Tag: para
+#: part3.xml:49
+#, no-c-format
+msgid "<literal>SecurityInterceptor</literal> or"
+msgstr "<literal>SecurityInterceptor</literal> or"
+
+#. Tag: para
+#: part3.xml:52
+#, no-c-format
+msgid "<literal>DocumentUpdatedEvent</literal>."
+msgstr "<literal>DocumentUpdatedEvent</literal>."
+
+# literate=elegante?
+#. Tag: para
+#: part3.xml:56
+#, no-c-format
+msgid "The annotations are reusable. They help describe common qualities of disparate parts of the system. They help us categorize and understand our code. They help us deal with common concerns in a common way. They make our code more literate and more understandable."
+msgstr "Le annotazioni sono riutilizzabili. Aiutano a descrivere caratteristiche comuni di parti diverse del sistema. Ci aiutano a categorizzare e comprendere il nostro stesso codice. Ci aiutano ad affrontare i concern comuni in un modo comune. Rendono il nostro codice più elegante e comprensibile."
+
+#. Tag: para
+#: part3.xml:61
+#, no-c-format
+msgid "Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A stereotype models a common <emphasis>role</emphasis> in your application architecture. It encapsulates various properties of the role, including scope, interceptor bindings, deployment type, etc, into a single reusable package."
+msgstr "Gli <emphasis>stereotipi (stereotypes)</emphasis> di Web Beans fanno fare un ulteriore passo in avanti a questa idea. Uno stereotipo descrive un <emphasis>ruolo</emphasis> comune nell'architettura di un'applicazione. Incapsula in un unico pacchetto riutilizzabile varie proprietà del ruolo stesso, inclusi lo scope, gli interceptor bindings, il tipo di deployment, etc, ."
+
+# literate=elegante (come in altri contesti)? oppure = letterato/informato/cosciente. Qui scelgo informato... nel senso di cosciente di se stesso.
+# l'XML=i descrittori XML, il codice XML?
+#. Tag: para
+#: part3.xml:66
+#, no-c-format
+msgid "Even Web Beans XML metadata is strongly typed! There's no compiler for XML, so Web Beans takes advantage of XML schemas to validate the Java types and attributes that appear in XML. This approach turns out to make the XML more literate, just like annotations made our Java code more literate."
+msgstr "Persino i metadati XML di Web Beans sono fortemente tipizzati (strongly typed)! Non esistendo un compilatore XML, Web Beans si basa sugli schemi XML per validare i tipi Java e gli attributi che compaiono nell'XML. Questo approccio finisce col rendere il codice XML più informato, proprio come le annotazioni rendono il codice Java + informato."
+
+#. Tag: para
+#: part3.xml:71
+#, no-c-format
+msgid "We're now ready to meet some more advanced features of Web Beans. Bear in mind that these features exist to make our code both easier to validate and more understandable. Most of the time you don't ever really <emphasis>need</emphasis> to use these features, but if you use them wisely, you'll come to appreciate their power."
+msgstr "Ora siamo pronti ad incontrare alcune caratteristiche più avanzate di Web Beans. Tenete a mente che tali caratteristiche esistono sia per rendere il nostro codice più facile da validare che per renderlo più comprensibile. La maggior parte delle volte non è necessario usare tali carattestiche, ma, se usate con accortezza, si arriverà ad apprezzerne l'efficacia."
+


Property changes on: doc/trunk/reference/it-IT/part3.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/part4.po (from rev 721, doc/trunk/reference/it-IT/modules/part4.po)
===================================================================
--- doc/trunk/reference/it-IT/part4.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/part4.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,34 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-24 19:34+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part4.xml:5
+#, no-c-format
+msgid "The third theme of Web Beans is <emphasis>integration</emphasis>. Web Beans was designed to work in concert with other technologies, helping the application developer fit the other technologies together. Web Beans is an open technology. It forms a part of the Java EE ecosystem, and is itself the foundation for a new ecosystem of portable extensions and integration with existing frameworks and technologies."
+msgstr "Il terzo tema di Web Beans è <emphasis>l'integrazione</emphasis>. Web Beans è stata progettata per funzionare in armonia con altre tecnologie, per aiutare lo sviluppatore a far funzionare assieme le altre tecnologie. Web Beans è una tecnologia aperta. Costituisce una parte dell'ecosistema Java EE, ed è essa stessa la fondazione di un nuovo ecosistema di estensioni portabili e di integrazioni con framework e tecnologie esistenti."
+
+# modelli a componenti o architetture a componenti?
+#. Tag: para
+#: part4.xml:12
+#, no-c-format
+msgid "We've already seen how Web Beans helps integrate EJB and JSF, allowing EJBs to be bound directly to JSF pages. That's just the beginning. Web Beans offers the same potential to diverse other technologies, such as Business Process Management engines, other Web Frameworks, and third-party component models. The Java EE platform will never be able to standardize all the interesting technologies that are used in the world of Java application development, but Web Beans makes it easier to use the technologies which are not yet part of the platform seamlessly within the Java EE environment."
+msgstr "Abbiamo già visto come Web Beans aiuti ad integrare EJB con JSF, permettendo agli EJB di essere legati direttamente alle pagine JSF. Questo non è che l'inizio. Web Beans offre le stesse potenzialità ad altre e diverse tecnologie, quali i motori di gestione di processi di business, altri Framework Web, e modelli a componenti di terze parti. La piattaforma Java EE non potrà mai standardizzare tutte le interessanti tecnologie utilizzate nel mondo dello sviluppo di applicazioni Java, ma Web Beans rende più facile usare in modo trasparente all'interno dell'ambiente Java EE tecnologie che non fanno ancora parte di tale ambiente."
+
+#. Tag: para
+#: part4.xml:21
+#, no-c-format
+msgid "We're about to see how to take full advantage of the Java EE platform in an application that uses Web Beans. We'll also briefly meet a set of SPIs that are provided to support portable extensions to Web Beans. You might not ever need to use these SPIs directly, but it's nice to know they are there if you need them. Most importantly, you'll take advantage of them indirectly, every time you use a third-party extension."
+msgstr "Stiamo per scoprire come sfruttare appieno la piattaforma Java EE in applicazioni che usano  Web Beans. Scorreremo anche velocemente un insieme di SPI (Service Provider Interface) fornite per permettere la realizzazione di estensioni portabili di Web Beans. Potrebbe non essere mai necessario usare queste SPI direttamente, ma è opportuno sapere che esistono, qualora possano servire. Soprattutto, le si sfrutterà in modo indiretto ogni volta che si utilizzeranno estensioni di terze parti."
+


Property changes on: doc/trunk/reference/it-IT/part4.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/producermethods.po (from rev 725, doc/trunk/reference/it-IT/modules/producermethods.po)
===================================================================
--- doc/trunk/reference/it-IT/producermethods.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/producermethods.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,223 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-21 10:30+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: producermethods.xml:5
+#, no-c-format
+msgid "Producer methods"
+msgstr "Metodi produttori"
+
+#. Tag: para
+#: producermethods.xml:7
+#, no-c-format
+msgid "Producer methods let us overcome certain limitations that arise when the Web Bean manager, instead of the application, is responsible for instantiating objects. They're also the easiest way to integrate objects which are not Web Beans into the Web Beans environment. (We'll meet a second approach in <xref linkend=\"xml\"/>.)"
+msgstr "I metodi produttori consentono di superare alcune limitazioni che sorgono quando il manager Web Bean è responsabile dell'istanziamento degli oggetti al posto dell'applicazione. Questi metodi sono anche il modo migliore per integrare gli oggetti che non sono Web Beans dentro l'ambiente Web Beans. (Si incontrerà un secondo approccio in <xref linkend=\"xml\"/>.)"
+
+#. Tag: para
+#: producermethods.xml:12
+#, no-c-format
+msgid "According to the spec:"
+msgstr "Secondo la specifica:"
+
+#. Tag: chapter
+#: producermethods.xml:12
+#, no-c-format
+msgid ""
+"<blockquote> <para>A Web Beans producer method acts as a source of objects to be injected, where:</para> <itemizedlist> <listitem> <para>the objects to be injected are not required to be instances of Web Beans,</para> </listitem> <listitem> <para>the concrete type of the objects to be injected may vary at runtime or</para> </listitem> <listitem> <para>the objects require some custom initialization that is not performed by the Web Bean constructor</para> </listitem> </itemizedlist> </blockquote> <para>For example, producer methods let us:</para> <itemizedlist> <listitem> <para>expose a JPA entity as a Web Bean,</para> </listitem> <listitem> <para>expose any JDK class as a Web Bean,</para> </listitem> <listitem> <para>define multiple Web Beans, with different scopes or initialization, for the same implementation class, or</para> </listitem> <listitem> <para>vary the implementation of an API type at runtime.</para> </listitem> </itemizedlist> <para>In particular, producer met!
 hods let us use runtime polymorphism with Web Beans. As we've seen, deployment types are a powerful solution to the problem of deployment-time polymorphism. But once the system is deployed, the Web Bean implementation is fixed. A producer method has no such limitation:</para> <programlisting role=\"JAVA\"><![CDATA[@SessionScoped\n"
+"public class Preferences {\n"
+"    \n"
+"    private PaymentStrategyType paymentStrategy;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    @Produces @Preferred \n"
+"    public PaymentStrategy getPaymentStrategy() {\n"
+"        switch (paymentStrategy) {\n"
+"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
+"            case CHEQUE: return new ChequePaymentStrategy();\n"
+"            case PAYPAL: return new PayPalPaymentStrategy();\n"
+"            default: return null;\n"
+"        } \n"
+"    }\n"
+"    \n"
+"}]]></programlisting> <para>Consider an injection point:</para> <programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy paymentStrat;]]></programlisting> <para>This injection point has the same type and binding annotations as the producer method, so it resolves to the producer method using the usual Web Beans injection rules. The producer method will be called by the Web Bean manager to obtain an instance to service this injection point.</para>."
+msgstr ""
+"<blockquote> <para>Un metodo produttore Web Bean agisce come sorgente di oggetti da iniettare, dove:</para> <itemizedlist> <listitem> <para>gli oggetti da iniettare non è richiesto siano istanze di Web Beans,</para> </listitem> <listitem> <para>il tipo concreto di oggetti da iniettare può variare a runtime o</para> </listitem> <listitem> <para>gli oggetti richiedono alcune inizializzazini personalizzate che non vengono eseguite dal costruttore Web Bean</para> </listitem> </itemizedlist> </blockquote> <para>Per esempio un metodo produttore consente di:</para> <itemizedlist> <listitem> <para>esporre un entity JPA comeWeb Bean,</para> </listitem> <listitem> <para>esporre qualsiasi classe JDK comeWeb Bean,</para> </listitem> <listitem> <para>definire Web Beans multipli, con scope o inizializzazione differenti, per la stessa implementazionedi classe, o</para> </listitem> <listitem> <para>variare l'implementazione di un tipo di API a runtime.</para> </listitem> </itemizedlist>!
  <para>In particolare, i metodi produttori consentono di usare un polimorfismo a runtime con i Web Beans. Come visto, i tipi di deploy sono soluzioni al problema del polimorfismo durante la fase di deploy. Ma una volta che il sistema viene deployato, l'implementazione del Web Bean viene fissata. Un metodo produttore non ha questi limiti:</para> <programlisting role=\"JAVA\"><![CDATA[@SessionScoped\n"
+"public class Preferences {\n"
+"    \n"
+"    private PaymentStrategyType paymentStrategy;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    @Produces @Preferred \n"
+"    public PaymentStrategy getPaymentStrategy() {\n"
+"        switch (paymentStrategy) {\n"
+"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
+"            case CHEQUE: return new ChequePaymentStrategy();\n"
+"            case PAYPAL: return new PayPalPaymentStrategy();\n"
+"            default: return null;\n"
+"        } \n"
+"    }\n"
+"    \n"
+"}]]></programlisting> <para>Si consideri un punto di iniezione:</para> <programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy paymentStrat;]]></programlisting> <para>Questo punto di iniezione ha lo stesso tipo e annotazioni di binding del metodo produttore, e quindi risolve i metodi produttori usando le regole di iniezione dei Web Beans. Il metodo produttore verrà chiamato dal manager Web Bean per ottenere un'istanza per per servire questo punto di iniezione.</para>"
+
+#. Tag: title
+#: producermethods.xml:68
+#, no-c-format
+msgid "Scope of a producer method"
+msgstr "Scope di un metodo produttore"
+
+#. Tag: para
+#: producermethods.xml:70
+#, no-c-format
+msgid "The scope of the producer method defaults to <literal>@Dependent</literal>, and so it will be called <emphasis>every time</emphasis> the Web Bean manager injects this field or any other field that resolves to the same producer method. Thus, there could be multiple instances of the <literal>PaymentStrategy</literal> object for each user session."
+msgstr "Lo scope dei metodi produttori è di default impostato a <literal>@Dependent</literal>, e quindi verrà chiamato <emphasis>ogni volta</emphasis> che il manager Web Bean inietta questo campo o qualsiasi altro campi che risolve lo stesso metodo produttore. Quindi ci potrebbero essere istanze multiple dell'oggetto <literal>PaymentStrategy</literal> per ogni sessione utente."
+
+#. Tag: para
+#: producermethods.xml:75
+#, no-c-format
+msgid "To change this behavior, we can add a <literal>@SessionScoped</literal> annotation to the method."
+msgstr "Per cambiare questo comportamento si può aggiungere un'annotazione <literal>@SessionScoped</literal> al metodo."
+
+#. Tag: programlisting
+#: producermethods.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy() {\n"
+"    ...\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy() {\n"
+"    ...\n"
+"}]]>"
+
+#. Tag: para
+#: producermethods.xml:80
+#, no-c-format
+msgid "Now, when the producer method is called, the returned <literal>PaymentStrategy</literal> will be bound to the session context. The producer method won't be called again in the same session."
+msgstr "Ora, quando il metodo produttore viene chiamato, il <literal>PaymentStrategy</literal> restituito verrà associato al contesto di sessione. Il metodo produttore non verrà più chiamato nella stessa sessione."
+
+#. Tag: title
+#: producermethods.xml:87
+#, no-c-format
+msgid "Injection into producer methods"
+msgstr "Iniezione nei metodi produttori"
+
+#. Tag: para
+#: producermethods.xml:89
+#, no-c-format
+msgid "There's one potential problem with the code above. The implementations of <literal>CreditCardPaymentStrategy</literal> are instantiated using the Java <literal>new</literal> operator. Objects instantiated directly by the application can't take advantage of dependency injection and don't have interceptors."
+msgstr "C'è un potenziale problema con il codice visto sopra. Le implementazioni di <literal>CreditCardPaymentStrategy</literal> vengono istanziate usando l'operatore Java <literal>new</literal>. Gli oggetti istanziati direttamente dall'applicazione non possono sfruttare la dependency injection e non hanno interceptor."
+
+#. Tag: para
+#: producermethods.xml:94
+#, no-c-format
+msgid "If this isn't what we want we can use dependency injection into the producer method to obtain Web Bean instances:"
+msgstr "Se questo non è ciò che si vuole, è possibile usare la dependency injection nel metodo produttore per ottenere istanze Web Bean:"
+
+#. Tag: programlisting
+#: producermethods.xml:97
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
+"                                          ChequePaymentStrategy cps,\n"
+"                                          PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
+"                                          ChequePaymentStrategy cps,\n"
+"                                          PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+
+#. Tag: para
+#: producermethods.xml:99
+#, no-c-format
+msgid "Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request scoped Web Bean? Then the producer method has the effect of \"promoting\" the current request scoped instance into session scope. This is almost certainly a bug! The request scoped object will be destroyed by the Web Bean manager before the session ends, but the reference to the object will be left \"hanging\" in the session scope. This error will <emphasis>not</emphasis> be detected by the Web Bean manager, so please take extra care when returning Web Bean instances from producer methods!"
+msgstr "Ma cosa succede se <literal>CreditCardPaymentStrategy</literal> è un Web Bean con scope di tipo richiesta? Il metodo produttore ha l'effetto di \"promuovere\" l'istanza corrente con scope di tipo richiesta a scope di tipo sessione. Questo è quasi certamente un bug! L'oggetto con scope richiesta verrà distrutto dal manager Web Bean prima che la sessione termini. Quest'errore <emphasis>non</emphasis> verrà rilevato dal manager Web Bean, quindi si faccia attenzione quando si restituiscono istanze Web Bean dai metodi produttori!"
+
+#. Tag: para
+#: producermethods.xml:107
+#, no-c-format
+msgid "There's at least three ways we could go about fixing this bug. We could change the scope of the <literal>CreditCardPaymentStrategy</literal> implementation, but this would affect other clients of that Web Bean. A better option would be to change the scope of the producer method to <literal>@Dependent</literal> or <literal>@RequestScoped</literal>."
+msgstr "Ci sono almeno 3 modi per correggere questo bug. Si può cambiare lo scope dell'implementazione di <literal>CreditCardPaymentStrategy</literal>, ma questo non influenzerebbe gli altri client di questo Web Bean. Un'opzione migliore sarebbe quella di cambiare lo scope del metodo produttore a <literal>@Dependent</literal> o <literal>@RequestScoped</literal>."
+
+#. Tag: para
+#: producermethods.xml:113
+#, no-c-format
+msgid "But a more common solution is to use the special <literal>@New</literal> binding annotation."
+msgstr "Ma una soluzione più comune è quella di usare la speciale annotazione di binding <literal>@New</literal>."
+
+#. Tag: title
+#: producermethods.xml:119
+#, no-c-format
+msgid "Use of <literal>@New</literal> with producer methods"
+msgstr "Uso di <literal>@New</literal> con i metodi produttori"
+
+#. Tag: para
+#: producermethods.xml:121
+#, no-c-format
+msgid "Consider the following producer method:"
+msgstr "Si consideri il seguente metodo produttore:"
+
+#. Tag: programlisting
+#: producermethods.xml:123
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy ccps,\n"
+"                                          @New ChequePaymentStrategy cps,\n"
+"                                          @New PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy ccps,\n"
+"                                          @New ChequePaymentStrategy cps,\n"
+"                                          @New PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+
+#. Tag: para
+#: producermethods.xml:125
+#, no-c-format
+msgid "Then a new <emphasis>dependent</emphasis> instance of <literal>CreditCardPaymentStrategy</literal> will be created, passed to the producer method, returned by the producer method and finally bound to the session context. The dependent object won't be destroyed until the <literal>Preferences</literal> object is destroyed, at the end of the session."
+msgstr "Quindi verrebbe creata una nuova istanza <emphasis>dipendente</emphasis> di <literal>CreditCardPaymentStrategy</literal>, passata al metodo produttore, ritornata al metodo produttore ed infine associata al contesto di sessione. L'oggetto dipendente non verrebbe distrutto finché l'oggetto <literal>Preferences</literal> non venga distrutto, cioè a fine sessione."
+


Property changes on: doc/trunk/reference/it-IT/producermethods.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/it-IT/ri-spi.mo
===================================================================
(Binary files differ)


Property changes on: doc/trunk/reference/it-IT/ri-spi.mo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: doc/trunk/reference/it-IT/ri-spi.po (from rev 726, doc/trunk/reference/it-IT/modules/ri-spi.po)
===================================================================
--- doc/trunk/reference/it-IT/ri-spi.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/ri-spi.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,328 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-05 00:28+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri-spi.xml:4
+#, no-c-format
+msgid "Integrating the Web Beans RI into other environments"
+msgstr "Integrazione di Web Beans RI in altri ambienti"
+
+#. Tag: para
+#: ri-spi.xml:6
+#, no-c-format
+msgid "Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI into other EE environments (for example another application server like Glassfish), into a servlet container (like Tomcat), or with an Embedded EJB3.1 implementation is fairly easy. In this Appendix we will briefly discuss the steps needed."
+msgstr "Attualmente Web Bean RI funziona solo in JBoss AS 5; l'integrazione di RI in altri ambienti EE (per esempio in un application server come Glassfish), in un servlet container (come Tomcat), o con un'implementazione EJB3.1 Embedded è abbastanza facile. In questo appendice si discuterà brevemente dei passi necessari."
+
+#. Tag: para
+#: ri-spi.xml:15
+#, no-c-format
+msgid "It should be possible to run Web Beans in an SE environment, but you'll to do more work, adding your own contexts and lifecycle. The Web Beans RI currently doesn't expose lifecycle extension points, so you would have to code directly against Web Beans RI classes."
+msgstr "Dovrebbe essere possibile far funzionare Web Beans in un ambiente SE, ma occorre molto lavoro per aggiungere i propri contesti ed il ciclo di vita. Web Beans RI attualmemnte non espone punti di estensione del ciclo di vita, così occorre codificare direttamente nelle classi Web Beans RI."
+
+#. Tag: title
+#: ri-spi.xml:24
+#, no-c-format
+msgid "The Web Beans RI SPI"
+msgstr "Web Beans RI SPI"
+
+#. Tag: para
+#: ri-spi.xml:26
+#, no-c-format
+msgid "The Web Beans SPI is located in <literal>webbeans-ri-spi</literal> module, and packaged as <literal>webbeans-ri-spi.jar</literal>."
+msgstr "Web Beans SPI è collocato nel modulo <literal>webbeans-ri-spi</literal>, ed è impacchettato come <literal>webbeans-ri-spi.jar</literal>.\""
+
+#. Tag: para
+#: ri-spi.xml:31
+#, no-c-format
+msgid "Currently, the only SPI to implement is the bootstrap spi:"
+msgstr "Attualmente l'unico SPI (Service Provider Interface) da implementare è l'spi di bootstrap:"
+
+#. Tag: programlisting
+#: ri-spi.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[public interface WebBeanDiscovery {\n"
+"   /**\n"
+"    * Gets list of all classes in classpath archives with web-beans.xml files\n"
+"    * \n"
+"    * @return An iterable over the classes \n"
+"    */\n"
+"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
+"   \n"
+"   /**\n"
+"    * Gets a list of all web-beans.xml files in the app classpath\n"
+"    * \n"
+"    * @return An iterable over the web-beans.xml files \n"
+"    */\n"
+"   public Iterable<URL> discoverWebBeansXml();\n"
+"   \n"
+"   /**\n"
+"    * Gets a descriptor for each EJB in the application\n"
+"    * \n"
+"    * @return The bean class to descriptor map \n"
+"    */\n"
+"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
+"   \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public interface WebBeanDiscovery {\n"
+"   /**\n"
+"    * Gets list of all classes in classpath archives with web-beans.xml files\n"
+"    * \n"
+"    * @return An iterable over the classes \n"
+"    */\n"
+"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
+"   \n"
+"   /**\n"
+"    * Gets a list of all web-beans.xml files in the app classpath\n"
+"    * \n"
+"    * @return An iterable over the web-beans.xml files \n"
+"    */\n"
+"   public Iterable<URL> discoverWebBeansXml();\n"
+"   \n"
+"   /**\n"
+"    * Gets a descriptor for each EJB in the application\n"
+"    * \n"
+"    * @return The bean class to descriptor map \n"
+"    */\n"
+"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
+"   \n"
+"}]]>"
+
+#. Tag: para
+#: ri-spi.xml:37
+#, no-c-format
+msgid "The discovery of Web Bean classes and <literal>web-bean.xml</literal> files is self-explanatory (the algorithm is described in Section 11.1 of the JSR-299 specification, and isn't repeated here)."
+msgstr "L'analisi dei file delle classi Web Bean e di <literal>web-bean.xml</literal> è molto istruttiva (l'algoritmo è descritto nella sezione 11.1 della specifica JSR-299 e non viene qua ripetuto)."
+
+#. Tag: para
+#: ri-spi.xml:43
+#, no-c-format
+msgid "The Web Beans RI also delegates EJB3 bean discovery to the container so that it doesn't have to scan for EJB3 annotations or parse <literal>ejb-jar.xml</literal>. For each EJB in the application an EJBDescriptor should be discovered:"
+msgstr "Web Beans RI delega al container la rilevazione dei bean EJB3 così da non essere necessario eseguire lo scan delle annotazioni EJB3 o fare il parsing di <literal>ejb-jar.xml</literal>. Per ciascun EJB nell'applicazione dovrebbe essere rilevato un EJBDescriptor:"
+
+#. Tag: programlisting
+#: ri-spi.xml:50
+#, no-c-format
+msgid ""
+"<![CDATA[public interface EjbDescriptor<T> {\n"
+"   \n"
+"   /**\n"
+"    * Gets the EJB type\n"
+"    * \n"
+"    * @return The EJB Bean class\n"
+"    */\n"
+"   public Class<T> getType();\n"
+"\n"
+"   /**\n"
+"    * Gets the local business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the local business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Gets the remote business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remote business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Get the remove methods of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remove methods\n"
+"    */\n"
+"   public Iterable<Method> getRemoveMethods();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is stateless\n"
+"    * \n"
+"    * @return True if stateless, false otherwise\n"
+"    */\n"
+"   public boolean isStateless();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is a EJB 3.1 Singleton\n"
+"    * \n"
+"    * @return True if the bean is a singleton, false otherwise\n"
+"    */\n"
+"   public boolean isSingleton();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is stateful\n"
+"    * \n"
+"    * @return True if the bean is stateful, false otherwise\n"
+"    */\n"
+"   public boolean isStateful();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is and MDB\n"
+"    * \n"
+"    * @return True if the bean is an MDB, false otherwise\n"
+"    */\n"
+"   public boolean isMessageDriven();\n"
+"\n"
+"   /**\n"
+"    * Gets the EJB name\n"
+"    * \n"
+"    * @return The name\n"
+"    */\n"
+"   public String getEjbName();\n"
+"   \n"
+"   /**\n"
+"    * @return The JNDI string which can be used to lookup a proxy which \n"
+"    * implements all local business interfaces \n"
+"    * \n"
+"    */\n"
+"   public String getLocalJndiName();\n"
+"   \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public interface EjbDescriptor<T> {\n"
+"   \n"
+"   /**\n"
+"    * Gets the EJB type\n"
+"    * \n"
+"    * @return The EJB Bean class\n"
+"    */\n"
+"   public Class<T> getType();\n"
+"\n"
+"   /**\n"
+"    * Gets the local business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the local business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Gets the remote business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remote business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Get the remove methods of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remove methods\n"
+"    */\n"
+"   public Iterable<Method> getRemoveMethods();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is stateless\n"
+"    * \n"
+"    * @return True if stateless, false otherwise\n"
+"    */\n"
+"   public boolean isStateless();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is a EJB 3.1 Singleton\n"
+"    * \n"
+"    * @return True if the bean is a singleton, false otherwise\n"
+"    */\n"
+"   public boolean isSingleton();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is stateful\n"
+"    * \n"
+"    * @return True if the bean is stateful, false otherwise\n"
+"    */\n"
+"   public boolean isStateful();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is and MDB\n"
+"    * \n"
+"    * @return True if the bean is an MDB, false otherwise\n"
+"    */\n"
+"   public boolean isMessageDriven();\n"
+"\n"
+"   /**\n"
+"    * Gets the EJB name\n"
+"    * \n"
+"    * @return The name\n"
+"    */\n"
+"   public String getEjbName();\n"
+"   \n"
+"   /**\n"
+"    * @return The JNDI string which can be used to lookup a proxy which \n"
+"    * implements all local business interfaces \n"
+"    * \n"
+"    */\n"
+"   public String getLocalJndiName();\n"
+"   \n"
+"}]]>"
+
+#. Tag: para
+#: ri-spi.xml:52
+#, no-c-format
+msgid "The contract described the JavaDoc is enough to implement an EJBDescriptor. In addition to these two interfaces, there is <literal>BusinessInterfaceDescriptor</literal> which represents a local business interface (encapsulating the interface class and jndi name)."
+msgstr "Il contratto descritto in JavaDoc è sufficiente per implementare un EJBDescriptor. In aggiunta a queste due interfacce, vi è <literal>BusinessInterfaceDescriptor</literal> a rappresentare un'interfaccia locale di business (che incapsula la classe d'interfaccia ed il nome jndi)."
+
+#. Tag: para
+#: ri-spi.xml:59
+#, no-c-format
+msgid "The Web Beans RI can be told to load your implementation of <literal>WebBeanDiscovery</literal> using the property <literal>org.jboss.webbeans.bootstrap.webBeanDiscovery</literal> with the fully qualified class name as the value. For example:"
+msgstr "Web Beans RI può essere istruita a caricare la propria implementazione di <literal>WebBeanDiscovery</literal> usando la proprietà <literal>org.jboss.webbeans.bootstrap.webBeanDiscovery</literal> con il nome della classe pienamente qualificato (fully qualified) come valore. Per esempio:"
+
+#. Tag: programlisting
+#: ri-spi.xml:66
+#, no-c-format
+msgid "org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration.jbossas.WebBeanDiscoveryImpl"
+msgstr "org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration.jbossas.WebBeanDiscoveryImpl"
+
+#. Tag: para
+#: ri-spi.xml:68
+#, no-c-format
+msgid "The property can either be specified as a system property, or in a properties file <literal>META-INF/web-beans-ri.properties</literal>."
+msgstr "La proprietà può essere specificata come proprietà di sistema o nel file di proprietà <literal>META-INF/web-beans-ri.properties</literal>."
+
+#. Tag: title
+#: ri-spi.xml:76
+#, no-c-format
+msgid "The contract with the container"
+msgstr "Il contratto con il container"
+
+# rivedere la frase
+#. Tag: para
+#: ri-spi.xml:78
+#, no-c-format
+msgid "There are a number of requirements that the Web Beans RI places on the container for correct functioning that fall outside implementation of APIs"
+msgstr "Ci sono un numero di requisiti che Web Beans RI pone nel container per il corretto funzionamento al di fuori dell'implementazione delle API"
+
+#. Tag: term
+#: ri-spi.xml:86
+#, no-c-format
+msgid "Classloader isolation"
+msgstr "Isolamento del classloader"
+
+#. Tag: para
+#: ri-spi.xml:90
+#, no-c-format
+msgid "If you are integrating the Web Beans into an environment that supports deployment of applications, you must enable, automatically, or through user configuation, classloader isolation for each Web Beans application"
+msgstr "Se si integra Web Beans in un ambiente che supporta il deploy di applicazioni, occorre abilitare, automaticamente o attraverso la configurazione utente, l'isolamento del classloader for ogni applicazione Web Beans"
+
+#. Tag: term
+#: ri-spi.xml:99
+#, no-c-format
+msgid "The <literal>webbeans-ri.jar</literal>"
+msgstr "<literal>webbeans-ri.jar</literal>"
+
+#. Tag: para
+#: ri-spi.xml:103
+#, no-c-format
+msgid "If you are integrating the Web Beans into an environment that supports deployment of applications, you must insert the <literal>webbeans-ri.jar</literal> into the applications isolated classloader. It cannot be loaded from a shared classloader."
+msgstr "Se si integra Web Beans in un ambiente che supporta il deploy di applicazioni, occorre inserire <literal>webbeans-ri.jar</literal> nel classloader isolato delle applicazioni. Non può essere caricato da un classloader condiviso."
+


Property changes on: doc/trunk/reference/it-IT/ri-spi.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/ri.po (from rev 638, doc/trunk/reference/it-IT/modules/ri.po)
===================================================================
--- doc/trunk/reference/it-IT/ri.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/ri.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1379 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-20 14:01+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri.xml:4
+#, no-c-format
+msgid "The Web Beans Reference Implementation"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans Reference Implementation is being developed at <ulink url="
+"\"http://seamframework.org/WebBeans\">the Seam project</ulink>. You can "
+"download the latest developer release of Web Beans from the <ulink url="
+"\"http://seamframework.org/Download\">the downloads page</ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:13
+#, no-c-format
+msgid ""
+"The Web Beans RI comes with a two deployable example applications: "
+"<literal>webbeans-numberguess</literal>, a war example, containing only "
+"simple beans, and <literal>webbeans-translator</literal> an ear example, "
+"containing enterprise beans. To run the examples you'll need the following:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:22
+#, no-c-format
+msgid "the latest release of the Web Beans RI,"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:25
+#, no-c-format
+msgid "JBoss AS 5.0.0.GA, and"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:28
+#, no-c-format
+msgid "Ant 1.7.0."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:32
+#, no-c-format
+msgid ""
+"Currently, the Web Beans RI only runs on JBoss Application Server 5. You'll "
+"need to download JBoss AS 5.0.0.GA from <ulink url=\"http://www.jboss.org/"
+"jbossas/downloads/\">jboss.org</ulink>, and unzip it. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd /Applications\n"
+"$ unzip ~/jboss-5.0.0.GA.zip]]>"
+msgstr ""
+"<![CDATA[$ cd /Applications\n"
+"$ unzip ~/jboss-5.0.0.GA.zip]]>"
+
+#. Tag: para
+#: ri.xml:41
+#, no-c-format
+msgid ""
+"Next, download the Web Beans RI from <ulink url=\"http://seamframework.org/"
+"Download\">seamframework.org</ulink>, and unzip it. For example"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd ~/\n"
+"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
+msgstr ""
+"<![CDATA[$ cd ~/\n"
+"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
+
+#. Tag: para
+#: ri.xml:50
+#, no-c-format
+msgid ""
+"Next, we need to tell Web Beans where JBoss is located. Edit <literal>jboss-"
+"as/build.properties</literal> and set the <literal>jboss.home</literal> "
+"property. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:56
+#, no-c-format
+msgid "jboss.home=/Applications/jboss-5.0.0.GA"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:58
+#, no-c-format
+msgid ""
+"As Web Beans is a new piece of software, you need to update JBoss AS to run "
+"the Web Beans RI. Future versions of JBoss AS will include these updates, "
+"and this step won't be necessary."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:65
+#, no-c-format
+msgid ""
+"Currently, two updates are needed. Firstly, a new deployer, "
+"<literal>webbeans.deployer</literal> is added. This adds supports for Web "
+"Bean archives to JBoss AS, and allows the Web Beans RI to query the EJB3 "
+"container and discover which EJBs are installed in your application. "
+"Secondly, an update to JBoss EJB3 is needed."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:74
+#, no-c-format
+msgid ""
+"To install the update, you'll need Ant 1.7.0 installed, and the "
+"<literal>ANT_HOME</literal> environment variable set. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:79
+#, no-c-format
+msgid ""
+"$ unzip apache-ant-1.7.0.zip\n"
+"$ export ANT_HOME=~/apache-ant-1.7.0"
+msgstr ""
+"$ unzip apache-ant-1.7.0.zip\n"
+"$ export ANT_HOME=~/apache-ant-1.7.0"
+
+#. Tag: para
+#: ri.xml:81
+#, no-c-format
+msgid ""
+"Then, you can install the update. The update script will use Maven to "
+"download the Web Beans and EJB3 automatically."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:86
+#, no-c-format
+msgid ""
+"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
+"$ ant update"
+msgstr ""
+"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
+"$ ant update"
+
+#. Tag: para
+#: ri.xml:88
+#, no-c-format
+msgid "Now, you're ready to deploy your first example!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:93
+#, no-c-format
+msgid ""
+"The build scripts for the examples offer a number of targets, these are:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:99
+#, no-c-format
+msgid "<literal>ant restart</literal> - deploy the example in exploded format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:105
+#, no-c-format
+msgid ""
+"<literal>ant explode</literal> - update an exploded example, without "
+"restarting the deployment"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:111
+#, no-c-format
+msgid ""
+"<literal>ant deploy</literal> - deploy the example in compressed jar format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:116
+#, no-c-format
+msgid "<literal>ant undeploy</literal> - remove the example from the server"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:121
+#, no-c-format
+msgid "<literal>ant clean</literal> - clean the example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:128
+#, no-c-format
+msgid "To deploy the numberguess example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:132
+#, no-c-format
+msgid ""
+"$ cd examples/numberguess\n"
+"ant deploy"
+msgstr ""
+"$ cd examples/numberguess\n"
+"ant deploy"
+
+#. Tag: para
+#: ri.xml:134
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and enjoy hours of fun at <ulink url="
+"\"http://localhost:8080/webbeans-numberguess\"></ulink>!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:139
+#, no-c-format
+msgid ""
+"The Web Beans RI includes a second simple example that will translate your "
+"text into Latin. The numberguess example is a war example, and uses only "
+"simple beans; the translator example is an ear example, and includes "
+"enterprise beans, packaged in an EJB module. To try it out:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:146
+#, fuzzy, no-c-format
+msgid ""
+"$ cd examples/translator\n"
+"ant deploy"
+msgstr ""
+"$ cd examples/traslator\n"
+"ant deploy"
+
+#. Tag: para
+#: ri.xml:148
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and visit <ulink url=\"http://"
+"localhost:8080/webbeans-translator\"></ulink>!"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:154
+#, no-c-format
+msgid "The numberguess example"
+msgstr "Esempio di indovina-numeri"
+
+#. Tag: para
+#: ri.xml:156
+#, no-c-format
+msgid ""
+"In the numberguess application you get given 10 attempts to guess a number "
+"between 1 and 100. After each attempt, you will be told whether you are too "
+"high, or too low."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:162
+#, no-c-format
+msgid ""
+"The numberguess example is comprised of a number of Web Beans, configuration "
+"files, and Facelet JSF pages, packaged as a war. Let's start with the "
+"configuration files."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:168
+#, no-c-format
+msgid ""
+"All the configuration files for this example are located in <literal>WEB-INF/"
+"</literal>, which is stored in <literal>WebContent</literal> in the source "
+"tree. First, we have <literal>faces-config.xml</literal>, in which we tell "
+"JSF to use Facelets:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
+"<faces-config version=\"1.2\"\n"
+"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
+"    \n"
+"    <application>\n"
+"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
+"    </application>\n"
+"\n"
+"</faces-config>]]>"
+msgstr ""
+"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
+"<faces-config version=\"1.2\"\n"
+"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
+"    \n"
+"    <application>\n"
+"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
+"    </application>\n"
+"\n"
+"</faces-config>]]>"
+
+#. Tag: para
+#: ri.xml:178
+#, no-c-format
+msgid ""
+"There is an empty <literal>web-beans.xml</literal> file, which marks this "
+"application as a Web Beans application."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:183
+#, no-c-format
+msgid "Finally there is <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: section
+#: ri.xml:185
+#, fuzzy, no-c-format
+msgid ""
+"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
+"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
+"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
+"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
+"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"\n"
+"<web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
+"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
+"   \n"
+"   <display-name>Web Beans Numbergues example</display-name>\n"
+"\n"
+"   <!-- JSF -->\n"
+"\n"
+"   <servlet>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
+"      <load-on-startup>1</load-on-startup>\n"
+"   </servlet>\n"
+"\n"
+"   <servlet-mapping>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <url-pattern>*.jsf</url-pattern>\n"
+"   </servlet-mapping>\n"
+"   \n"
+"   <context-param>\n"
+"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
+"      <param-value>.xhtml</param-value>\n"
+"   </context-param>\n"
+"\n"
+"   <session-config>\n"
+"      <session-timeout>10</session-timeout>\n"
+"   </session-config>\n"
+"   \n"
+"    <listener>\n"
+"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
+"class>\n"
+"    </listener>\n"
+"\n"
+"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
+"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
+"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
+"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
+"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
+"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
+"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
+"session timeout of 10 minutes </para> </callout> <callout arearefs="
+"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
+"Beans services can be used in the servlet request </para> </callout> </"
+"calloutlist> </programlistingco> <note> <para> The only configuration "
+"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
+"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
+"the Web Beans RI with any Servlet based web framework; just configure the "
+"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
+"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
+"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
+"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
+"\"30\"/> <area id=\"submit\" coords=\"33\"/> </areaspec> <programlisting><!"
+"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
+"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
+"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
+"\n"
+"  <ui:composition template=\"template.xhtml\">\n"
+"    <ui:define name=\"content\">\n"
+"       <h1>Guess a number...</h1>\n"
+"       <h:form id=\"NumberGuessMain\">\n"
+"          <div style=\"color: red\">\n"
+"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
+"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
+"number gt game.guess and game.guess ne 0}\"/>\n"
+"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
+"number lt game.guess and game.guess ne 0}\"/>\n"
+"          </div>\n"
+"   \n"
+"          <div>\n"
+"             I'm thinking of a number between #{game.smallest} and #{game."
+"biggest}.\n"
+"             You have #{game.remainingGuesses} guesses.\n"
+"          </div>\n"
+"     \n"
+"          <div>\n"
+"             Your guess: \n"
+"             <h:inputText id=\"inputGuess\" \n"
+"                          value=\"#{game.guess}\" \n"
+"                          required=\"true\" \n"
+"                          size=\"3\" \n"
+"                          disabled=\"#{game.number eq game.guess}\">\n"
+"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
+"                                     minimum=\"#{game.smallest}\"/>\n"
+"             </h:inputText>\n"
+"            <h:commandButton id=\"GuessButton\"  \n"
+"                             value=\"Guess\" \n"
+"                             action=\"#{game.check}\" \n"
+"                             disabled=\"#{game.number eq game.guess}\"/>\n"
+"          </div>\n"
+"          <div>\n"
+"            <h:commandButton id=\"RestartButton\" value=\"Reset\" action=\"#"
+"{game.reset}\" immediate=\"true\" />\n"
+"          </div>\n"
+"       </h:form>\n"
+"    </ui:define>\n"
+"  </ui:composition>\n"
+"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
+"<para> Facelets is a templating language for JSF, here we are wrapping our "
+"page in a template which defines the header. </para> </callout> <callout "
+"arearefs=\"messages\"> <para> There are a number of messages which can be "
+"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
+"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
+"range of numbers they can guess gets smaller - this sentance changes to make "
+"sure they know what range to guess in. </para> </callout> <callout arearefs="
+"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
+"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
+"range validator is used to make sure the user doesn't accidentally input a "
+"number outside of the range in which they can guess - if the validator "
+"wasn't here, the user might use up a guess on an out of range number. </"
+"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
+"must be a way for the user to send their guess to the server. Here we bind "
+"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
+"programlistingco>"
+msgstr ""
+"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
+"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
+"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
+"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
+"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"\n"
+"<web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
+"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
+"   \n"
+"   <display-name>Web Beans Numbergues example</display-name>\n"
+"\n"
+"   <!-- JSF -->\n"
+"\n"
+"   <servlet>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
+"      <load-on-startup>1</load-on-startup>\n"
+"   </servlet>\n"
+"\n"
+"   <servlet-mapping>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <url-pattern>*.jsf</url-pattern>\n"
+"   </servlet-mapping>\n"
+"   \n"
+"   <context-param>\n"
+"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
+"      <param-value>.xhtml</param-value>\n"
+"   </context-param>\n"
+"\n"
+"   <session-config>\n"
+"      <session-timeout>10</session-timeout>\n"
+"   </session-config>\n"
+"   \n"
+"    <listener>\n"
+"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
+"class>\n"
+"    </listener>\n"
+"\n"
+"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
+"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
+"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
+"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
+"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
+"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
+"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
+"session timeout of 10 minutes </para> </callout> <callout arearefs="
+"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
+"Beans services can be used in the servlet request </para> </callout> </"
+"calloutlist> </programlistingco> <note> <para> The only configuration "
+"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
+"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
+"the Web Beans RI with any Servlet based web framework; just configure the "
+"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
+"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
+"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
+"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
+"\"29\"/> <area id=\"submit\" coords=\"32\"/> </areaspec> <programlisting><!"
+"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
+"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
+"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
+"\n"
+"  <ui:composition template=\"template.xhtml\">\n"
+"    <ui:define name=\"content\">\n"
+"       <h1>Guess a number...</h1>\n"
+"       <h:form id=\"NumberGuessMain\">\n"
+"          <div style=\"color: red\">\n"
+"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
+"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
+"number gt game.guess}\"/>\n"
+"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
+"number lt game.guess}\"/>\n"
+"          </div>\n"
+"   \n"
+"          <div>\n"
+"             I'm thinking of a number between #{game.smallest} and #{game."
+"biggest}.\n"
+"             You have #{game.remainingGuesses} guesses.\n"
+"          </div>\n"
+"     \n"
+"          <div>\n"
+"             Your guess: \n"
+"             <h:inputText id=\"inputGuess\" \n"
+"                          value=\"#{game.guess}\" \n"
+"                          required=\"true\" \n"
+"                          size=\"3\">\n"
+"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
+"                                     minimum=\"#{game.smallest}\"/>\n"
+"             </h:inputText>\n"
+"            <h:commandButton id=\"GuessButton\" \n"
+"                             value=\"Guess\" \n"
+"                             action=\"#{game.check}\"/>\n"
+"          </div>\n"
+"   \n"
+"       </h:form>\n"
+"    </ui:define>\n"
+"  </ui:composition>\n"
+"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
+"<para> Facelets is a templating language for JSF, here we are wrapping our "
+"page in a template which defines the header. </para> </callout> <callout "
+"arearefs=\"messages\"> <para> There are a number of messages which can be "
+"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
+"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
+"range of numbers they can guess gets smaller - this sentance changes to make "
+"sure they know what range to guess in. </para> </callout> <callout arearefs="
+"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
+"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
+"range validator is used to make sure the user doesn't accidentally input a "
+"number outside of the range in which they can guess - if the validator "
+"wasn't here, the user might use up a guess on an out of range number. </"
+"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
+"must be a way for the user to send their guess to the server. Here we bind "
+"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
+"programlistingco>"
+
+#. Tag: para
+#: ri.xml:298
+#, no-c-format
+msgid ""
+"The example exists of 4 classes, the first two of which are binding types. "
+"First, there is the <literal>@Random</literal> binding type, used for "
+"injecting a random number:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:304
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface Random {}]]>"
+msgstr ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface Random {}]]>"
+
+#. Tag: para
+#: ri.xml:306
+#, no-c-format
+msgid ""
+"There is also the <literal>@MaxNumber</literal> binding type, used for "
+"injecting the maximum number that can be injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface MaxNumber {}\n"
+"]]>"
+msgstr ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface MaxNumber {}\n"
+"]]>"
+
+#. Tag: para
+#: ri.xml:313
+#, no-c-format
+msgid ""
+"The <literal>Generator</literal> class is responsible for creating the "
+"random number, via a producer method. It also exposes the maximum possible "
+"number via a producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:319
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"   \n"
+"   private java.util.Random random = new java.util.Random( System."
+"currentTimeMillis() );\n"
+"   \n"
+"   private int maxNumber = 100;\n"
+"   \n"
+"   java.util.Random getRandom()\n"
+"   {\n"
+"      return random;\n"
+"   }\n"
+"   \n"
+"   @Produces @Random int next() { \n"
+"      return getRandom().nextInt(maxNumber); \n"
+"   }\n"
+"   \n"
+"   @Produces @MaxNumber int getMaxNumber()\n"
+"   {\n"
+"      return maxNumber;\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"   \n"
+"   private java.util.Random random = new java.util.Random( System."
+"currentTimeMillis() );\n"
+"   \n"
+"   private int maxNumber = 100;\n"
+"   \n"
+"   java.util.Random getRandom()\n"
+"   {\n"
+"      return random;\n"
+"   }\n"
+"   \n"
+"   @Produces @Random int next() { \n"
+"      return getRandom().nextInt(maxNumber); \n"
+"   }\n"
+"   \n"
+"   @Produces @MaxNumber int getMaxNumber()\n"
+"   {\n"
+"      return maxNumber;\n"
+"   }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: ri.xml:321
+#, no-c-format
+msgid ""
+"You'll notice that the <literal>Generator</literal> is application scoped; "
+"therefore we don't get a different random each time."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:326
+#, no-c-format
+msgid ""
+"The final Web Bean in the application is the session scoped <literal>Game</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:331
+#, no-c-format
+msgid ""
+"You'll note that we've used the <literal>@Named</literal> annotation, so "
+"that we can use the bean through EL in the JSF page. Finally, we've used "
+"constructor injection to initialize the game with a random number. And of "
+"course, we need to tell the player when they've won, so we give feedback "
+"with a <literal>FacesMessage</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:339
+#, no-c-format
+msgid ""
+"<![CDATA[package org.jboss.webbeans.examples.numberguess;\n"
+"\n"
+"\n"
+"import javax.annotation.PostConstruct;\n"
+"import javax.faces.application.FacesMessage;\n"
+"import javax.faces.context.FacesContext;\n"
+"import javax.webbeans.AnnotationLiteral;\n"
+"import javax.webbeans.Current;\n"
+"import javax.webbeans.Initializer;\n"
+"import javax.webbeans.Named;\n"
+"import javax.webbeans.SessionScoped;\n"
+"import javax.webbeans.manager.Manager;\n"
+"\n"
+"@Named\n"
+"@SessionScoped\n"
+"public class Game\n"
+"{\n"
+"   private int number;\n"
+"   \n"
+"   private int guess;\n"
+"   private int smallest;\n"
+"   private int biggest;\n"
+"   private int remainingGuesses;\n"
+"   \n"
+"   @Current Manager manager;\n"
+"   \n"
+"   public Game()\n"
+"   {\n"
+"   }\n"
+"   \n"
+"   @Initializer\n"
+"   Game(@MaxNumber int maxNumber)\n"
+"   {      \n"
+"      this.biggest = maxNumber;\n"
+"   }\n"
+"\n"
+"   public int getNumber()\n"
+"   {\n"
+"      return number;\n"
+"   }\n"
+"   \n"
+"   public int getGuess()\n"
+"   {\n"
+"      return guess;\n"
+"   }\n"
+"   \n"
+"   public void setGuess(int guess)\n"
+"   {\n"
+"      this.guess = guess;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getRemainingGuesses()\n"
+"   {\n"
+"      return remainingGuesses;\n"
+"   }\n"
+"   \n"
+"   public String check()\n"
+"   {\n"
+"      if (guess>number)\n"
+"      {\n"
+"         biggest = guess - 1;\n"
+"      }\n"
+"      if (guess<number)\n"
+"      {\n"
+"         smallest = guess + 1;\n"
+"      }\n"
+"      if (guess == number)\n"
+"      {\n"
+"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
+"(\"Correct!\"));\n"
+"      }\n"
+"      remainingGuesses--;\n"
+"      return null;\n"
+"   }\n"
+"   \n"
+"   @PostConstruct\n"
+"   public void reset()\n"
+"   {\n"
+"      this.smallest = 0;\n"
+"      this.guess = 0;\n"
+"      this.remainingGuesses = 10;\n"
+"      this.number = manager.getInstanceByType(Integer.class, new "
+"AnnotationLiteral<Random>(){});\n"
+"   }\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:343
+#, no-c-format
+msgid "The translator example"
+msgstr "Esempio di traduttore"
+
+#. Tag: para
+#: ri.xml:345
+#, no-c-format
+msgid ""
+"The translator example will take any sentences you enter, and translate them "
+"to Latin."
+msgstr ""
+"L'esempio del traduttore prende le frasi che vengono inserite e le traduce "
+"in latino."
+
+#. Tag: para
+#: ri.xml:350
+#, no-c-format
+msgid ""
+"The translator example is built as an ear, and contains EJBs and enterprise "
+"beans. As a result, it's structure is more complex than the numberguess "
+"example."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:357
+#, no-c-format
+msgid ""
+"EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will make "
+"this structure much simpler!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:363
+#, no-c-format
+msgid ""
+"First, let's take a look at the ear aggregator, which is located in "
+"<literal>webbeans-translator-ear</literal> module. Maven automatically "
+"generates the <literal>application.xml</literal> and <literal>jboss-app.xml</"
+"literal> for us:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:370
+#, no-c-format
+msgid ""
+"<![CDATA[<plugin>\n"
+"   <groupId>org.apache.maven.plugins</groupId>\n"
+"   <artifactId>maven-ear-plugin</artifactId>\n"
+"   <configuration>\n"
+"      <modules>\n"
+"         <webModule>\n"
+"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
+"            <artifactId>webbeans-translator-war</artifactId>\n"
+"            <contextRoot>/webbeans-translator</contextRoot>\n"
+"         </webModule>\n"
+"      </modules>\n"
+"      <jboss>\n"
+"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
+"loader-repository>\n"
+"      </jboss>\n"
+"   </configuration>\n"
+"</plugin>]]>"
+msgstr ""
+"<![CDATA[<plugin>\n"
+"   <groupId>org.apache.maven.plugins</groupId>\n"
+"   <artifactId>maven-ear-plugin</artifactId>\n"
+"   <configuration>\n"
+"      <modules>\n"
+"         <webModule>\n"
+"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
+"            <artifactId>webbeans-translator-war</artifactId>\n"
+"            <contextRoot>/webbeans-translator</contextRoot>\n"
+"         </webModule>\n"
+"      </modules>\n"
+"      <jboss>\n"
+"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
+"loader-repository>\n"
+"      </jboss>\n"
+"   </configuration>\n"
+"</plugin>]]>"
+
+#. Tag: para
+#: ri.xml:372
+#, no-c-format
+msgid ""
+"We're doing a couple of things here - firstly we set the context path, which "
+"gives us a nice url (<ulink url=\"http://localhost:8080/webbeans-translator"
+"\">http://localhost:8080/webbeans-translator</ulink>) and we also enable "
+"class loader isolation for JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:380
+#, no-c-format
+msgid ""
+"If you aren't using Maven to generate these files, you would need "
+"<literal>META-INF/jboss-app.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:385
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<!DOCTYPE jboss-app\n"
+"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
+"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
+"<jboss-app>\n"
+"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
+"repository>\n"
+"</jboss-app>]]>"
+msgstr ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<!DOCTYPE jboss-app\n"
+"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
+"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
+"<jboss-app>\n"
+"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
+"repository>\n"
+"</jboss-app>]]>"
+
+#. Tag: para
+#: ri.xml:387
+#, no-c-format
+msgid "and <literal>META-INF/application.xml</literal>:"
+msgstr "e <literal>META-INF/application.xml</literal>:"
+
+#. Tag: programlisting
+#: ri.xml:391
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\">\n"
+"  <display-name>webbeans-translator-ear</display-name>\n"
+"  <description>Ear Example for the reference implementation of JSR 299: Web "
+"Beans</description>\n"
+"  \n"
+"  <module>\n"
+"    <web>\n"
+"      <web-uri>webbeans-translator.war</web-uri>\n"
+"      <context-root>/webbeans-translator</context-root>\n"
+"    </web>\n"
+"  </module>\n"
+"  <module>\n"
+"    <ejb>webbeans-translator.jar</ejb>\n"
+"  </module>\n"
+"</application>]]>"
+msgstr ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\">\n"
+"  <display-name>webbeans-translator-ear</display-name>\n"
+"  <description>Ear Example for the reference implementation of JSR 299: Web "
+"Beans</description>\n"
+"  \n"
+"  <module>\n"
+"    <web>\n"
+"      <web-uri>webbeans-translator.war</web-uri>\n"
+"      <context-root>/webbeans-translator</context-root>\n"
+"    </web>\n"
+"  </module>\n"
+"  <module>\n"
+"    <ejb>webbeans-translator.jar</ejb>\n"
+"  </module>\n"
+"</application>]]>"
+
+#. Tag: para
+#: ri.xml:394
+#, no-c-format
+msgid ""
+"Next, lets look at the war. Just as in the numberguess example, we have a "
+"<literal>faces-config.xml</literal> (to enabled Facelets) and a <literal>web."
+"xml</literal> (to enable JSF and attach Web Beans services to the servlet "
+"container) in <literal>WebContent/WEB-INF</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:401
+#, no-c-format
+msgid ""
+"More intersting is the facelet used to translate text. Just as in the "
+"numberguess example we have a template, which surrounds the form (ommitted "
+"here for brevity):"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:407
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
+"            \n"
+"   <table>\n"
+"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
+"         <td>\n"
+"            Your text\n"
+"         </td>\n"
+"         <td>\n"
+"            Translation\n"
+"         </td>\n"
+"      </tr>\n"
+"      <tr>\n"
+"         <td>\n"
+"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
+"required=\"true\" rows=\"5\" cols=\"80\" />\n"
+"         </td>\n"
+"         <td>\n"
+"            <h:outputText value=\"#{translator.translatedText}\" />\n"
+"         </td>\n"
+"      </tr>\n"
+"   </table>\n"
+"   <div>\n"
+"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
+"{translator.translate}\"/>\n"
+"   </div>\n"
+"   \n"
+"</h:form>]]>"
+msgstr ""
+"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
+"            \n"
+"   <table>\n"
+"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
+"         <td>\n"
+"            Your text\n"
+"         </td>\n"
+"         <td>\n"
+"            Translation\n"
+"         </td>\n"
+"      </tr>\n"
+"      <tr>\n"
+"         <td>\n"
+"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
+"required=\"true\" rows=\"5\" cols=\"80\" />\n"
+"         </td>\n"
+"         <td>\n"
+"            <h:outputText value=\"#{translator.translatedText}\" />\n"
+"         </td>\n"
+"      </tr>\n"
+"   </table>\n"
+"   <div>\n"
+"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
+"{translator.translate}\"/>\n"
+"   </div>\n"
+"   \n"
+"</h:form>]]>"
+
+#. Tag: para
+#: ri.xml:409
+#, no-c-format
+msgid ""
+"The user can enter some text in the lefthand textarea, and hit the translate "
+"button to see the result to the right."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:414
+#, no-c-format
+msgid ""
+"Finally, let's look at the ejb module, <literal>webbeans-translator-ejb</"
+"literal>. There are two configuration files in <literal>src/main/resources/"
+"META-INF</literal>, an empty <literal>web-beans.xml</literal>, used to mark "
+"the archive as containing Web Beans, and <literal>ejb-jar.xml</literal>. Web "
+"Beans provides injection and initializtion services for all EJBs, and uses "
+"<literal>ejb-jar.xml</literal> to enable this, you'll need this in any EJB "
+"project which uses Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:426
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
+"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\">\n"
+"         \n"
+"   <interceptors>\n"
+"     <interceptor>\n"
+"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"     </interceptor>\n"
+"   </interceptors>\n"
+"   \n"
+"   <assembly-descriptor>\n"
+"      <interceptor-binding>\n"
+"         <ejb-name>*</ejb-name>\n"
+"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"      </interceptor-binding>\n"
+"   </assembly-descriptor>\n"
+"   \n"
+"</ejb-jar>]]>"
+msgstr ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
+"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\">\n"
+"         \n"
+"   <interceptors>\n"
+"     <interceptor>\n"
+"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"     </interceptor>\n"
+"   </interceptors>\n"
+"   \n"
+"   <assembly-descriptor>\n"
+"      <interceptor-binding>\n"
+"         <ejb-name>*</ejb-name>\n"
+"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"      </interceptor-binding>\n"
+"   </assembly-descriptor>\n"
+"   \n"
+"</ejb-jar>]]>"
+
+#. Tag: para
+#: ri.xml:428
+#, no-c-format
+msgid ""
+"We've saved the most interesting bit to last, the code! The project has two "
+"simple beans, <literal>SentanceParser</literal> and <literal>TextTranslator</"
+"literal> and two enterprise beans, <literal>TanslatorControllerBean</"
+"literal> and <literal>SentenceTranslator</literal>. You should be getting "
+"quite familiar with what a Web Bean looks like by now, so we'll just "
+"highlight the most interesting bits here."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:438
+#, no-c-format
+msgid ""
+"Both <literal>SentanceParser</literal> and <literal>TextTranslator</literal> "
+"are dependent beans, and <literal>TextTranslator</literal> uses constructor "
+"initialization:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:444
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator { \n"
+"   private SentenceParser sentenceParser; \n"
+"   private Translator sentenceTranslator; \n"
+"   \n"
+"   @Initializer\n"
+"   TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) \n"
+"   { \n"
+"      this.sentenceParser = sentenceParser; \n"
+"      this.sentenceTranslator = sentenceTranslator;]]>"
+msgstr ""
+"<![CDATA[public class TextTranslator { \n"
+"   private SentenceParser sentenceParser; \n"
+"   private Translator sentenceTranslator; \n"
+"   \n"
+"   @Initializer\n"
+"   TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) \n"
+"   { \n"
+"      this.sentenceParser = sentenceParser; \n"
+"      this.sentenceTranslator = sentenceTranslator;]]>"
+
+#. Tag: para
+#: ri.xml:446
+#, no-c-format
+msgid ""
+"<literal>TextTranslator</literal> is a stateless bean (with a local business "
+"interface), where the magic happens - of course, we couldn't develop a full "
+"translator, but we gave it a good go!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:452
+#, no-c-format
+msgid ""
+"Finally, there is UI orientated controller, that collects the text from the "
+"user, and dispatches it to the translator. This is a request scoped, named, "
+"stateful session bean, which injects the translator."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:458
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful\n"
+"@RequestScoped\n"
+"@Named(\"translator\")\n"
+"public class TranslatorControllerBean implements TranslatorController\n"
+"{\n"
+"   \n"
+"   @Current TextTranslator translator;]]>"
+msgstr ""
+"<![CDATA[@Stateful\n"
+"@RequestScoped\n"
+"@Named(\"translator\")\n"
+"public class TranslatorControllerBean implements TranslatorController\n"
+"{\n"
+"   \n"
+"   @Current TextTranslator translator;]]>"
+
+#. Tag: para
+#: ri.xml:460
+#, no-c-format
+msgid "The bean also has getters and setters for all the fields on the page."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:464
+#, no-c-format
+msgid "As this is a stateful session bean, we have to have a remove method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:468
+#, no-c-format
+msgid ""
+"<![CDATA[   @Remove\n"
+"   public void remove()\n"
+"   {\n"
+"      \n"
+"   }]]>"
+msgstr ""
+"<![CDATA[   @Remove\n"
+"   public void remove()\n"
+"   {\n"
+"      \n"
+"   }]]>"
+
+#. Tag: para
+#: ri.xml:470
+#, no-c-format
+msgid ""
+"The Web Beans manager will call the remove method for you when the bean is "
+"destroyed; in this case at the end of the request."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:476
+#, no-c-format
+msgid ""
+"That concludes our short tour of the Web Beans RI examples. For more on the "
+"RI, or to help out, please visit <ulink url=\"http://www.seamframework.org/"
+"WebBeans/Development\">http://www.seamframework.org/WebBeans/Development</"
+"ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:482
+#, no-c-format
+msgid ""
+"We need help in all areas - bug fixing, writing new features, writing "
+"examples and translating this reference guide."
+msgstr ""
+
+#~ msgid ""
+#~ "<![CDATA[@Named\n"
+#~ "@SessionScoped\n"
+#~ "public class Game {\n"
+#~ "   private int number;\n"
+#~ "   \n"
+#~ "   private int guess;\n"
+#~ "   private int smallest;\n"
+#~ "   private int biggest;\n"
+#~ "   private int remainingGuesses;\n"
+#~ "   \n"
+#~ "   public Game() {}\n"
+#~ "   \n"
+#~ "   @Initializer\n"
+#~ "   Game(@Random int number, @MaxNumber int maxNumber) {\n"
+#~ "      this.number = number;\n"
+#~ "      this.smallest = 1;\n"
+#~ "      this.biggest = maxNumber;\n"
+#~ "      this.remainingGuesses = 10;\n"
+#~ "   }\n"
+#~ "\n"
+#~ "   // Getters and setters for fields\n"
+#~ "   \n"
+#~ "   public String check() {\n"
+#~ "      if (guess>number) {\n"
+#~ "         biggest = guess - 1;\n"
+#~ "      }\n"
+#~ "      if (guess<number) {\n"
+#~ "         smallest = guess + 1;\n"
+#~ "      }\n"
+#~ "      if (guess == number) {\n"
+#~ "         FacesContext.getCurrentInstance().addMessage(null, new "
+#~ "FacesMessage(\"Correct!\"));\n"
+#~ "      }\n"
+#~ "      remainingGuesses--;\n"
+#~ "      return null;\n"
+#~ "   }\n"
+#~ "   \n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[@Named\n"
+#~ "@SessionScoped\n"
+#~ "public class Game {\n"
+#~ "   private int number;\n"
+#~ "   \n"
+#~ "   private int guess;\n"
+#~ "   private int smallest;\n"
+#~ "   private int biggest;\n"
+#~ "   private int remainingGuesses;\n"
+#~ "   \n"
+#~ "   public Game() {}\n"
+#~ "   \n"
+#~ "   @Initializer\n"
+#~ "   Game(@Random int number, @MaxNumber int maxNumber) {\n"
+#~ "      this.number = number;\n"
+#~ "      this.smallest = 1;\n"
+#~ "      this.biggest = maxNumber;\n"
+#~ "      this.remainingGuesses = 10;\n"
+#~ "   }\n"
+#~ "\n"
+#~ "   // Getters and setters for fields\n"
+#~ "   \n"
+#~ "   public String check() {\n"
+#~ "      if (guess>number) {\n"
+#~ "         biggest = guess - 1;\n"
+#~ "      }\n"
+#~ "      if (guess<number) {\n"
+#~ "         smallest = guess + 1;\n"
+#~ "      }\n"
+#~ "      if (guess == number) {\n"
+#~ "         FacesContext.getCurrentInstance().addMessage(null, new "
+#~ "FacesMessage(\"Correct!\"));\n"
+#~ "      }\n"
+#~ "      remainingGuesses--;\n"
+#~ "      return null;\n"
+#~ "   }\n"
+#~ "   \n"
+#~ "}]]>"


Property changes on: doc/trunk/reference/it-IT/ri.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/scopescontexts.po (from rev 732, doc/trunk/reference/it-IT/modules/scopescontexts.po)
===================================================================
--- doc/trunk/reference/it-IT/scopescontexts.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/scopescontexts.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,517 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-26 13:03+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: scopescontexts.xml:4
+#, no-c-format
+msgid "Scopes and contexts"
+msgstr "Scope e contesti"
+
+#. Tag: para
+#: scopescontexts.xml:6
+#, no-c-format
+msgid "So far, we've seen a few examples of <emphasis>scope type annotations</emphasis>. The scope of a Web Bean determines the lifecycle of instances of the Web Bean. The scope also determines which clients refer to which instances of the Web Bean. According to the Web Beans specification, a scope determines:"
+msgstr "Finora si sono visti pochi esempi di <emphasis>annotazioni di tipi di scope</emphasis>. Gli scope di un Web Bean determinano il ciclo di vita del Web Bean. Lo scope determina anche quali client fanno riferimento a quali istanze di Web Bean. Secondo la specifica Web Bean, uno scope determina:"
+
+#. Tag: para
+#: scopescontexts.xml:14
+#, no-c-format
+msgid "When a new instance of any Web Bean with that scope is created"
+msgstr "Quando una nuova istanza di un Web Bean con tale scope viene creata"
+
+#. Tag: para
+#: scopescontexts.xml:17
+#, no-c-format
+msgid "When an existing instance of any Web Bean with that scope is destroyed"
+msgstr "Quando un'istanza esistente di un Web Bean con tale scope viene distrutta"
+
+#. Tag: para
+#: scopescontexts.xml:20
+#, no-c-format
+msgid "Which injected references refer to any instance of a Web Bean with that scope"
+msgstr "Quali riferimenti iniettati puntano a istanze di un Web Bean con tale scope"
+
+#. Tag: para
+#: scopescontexts.xml:25
+#, no-c-format
+msgid "For example, if we have a session scoped Web Bean, <literal>CurrentUser</literal>, all Web Beans that are called in the context of the same <literal>HttpSession</literal> will see the same instance of <literal>CurrentUser</literal>. This instance will be automatically created the first time a <literal>CurrentUser</literal> is needed in that session, and automatically destroyed when the session ends."
+msgstr "Per esempio, se esiste un Web Bean con scope di sessione, <literal>CurrentUser</literal>, tutti i Web Bean che vengono chiamati nel contesto della medesima <literal>HttpSession</literal> vedranno la stessa istanza di <literal>CurrentUser</literal>. Quest'istanza verrà automaticamente creata la prima volta che in tale sessione occorre <literal>CurrentUser</literal>, e verrà distrutta automaticamente quando la sessione termina. "
+
+#. Tag: title
+#: scopescontexts.xml:32
+#, no-c-format
+msgid "Scope types"
+msgstr "Tipi di scope"
+
+#. Tag: para
+#: scopescontexts.xml:34
+#, no-c-format
+msgid "Web Beans features an <emphasis>extensible context model</emphasis>. It is possible to define new scopes by creating a new scope type annotation:"
+msgstr "Web Bean fornisce un <emphasis>modello di contesto estensibile</emphasis>. E' possibile definire nuovi scope creando una nuova annotazione di un tipo di scope."
+
+#. Tag: programlisting
+#: scopescontexts.xml:37
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD})\n"
+"@ScopeType\n"
+"public @interface ClusterScoped {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD})\n"
+"@ScopeType\n"
+"public @interface ClusterScoped {}]]>"
+
+#. Tag: para
+#: scopescontexts.xml:39
+#, no-c-format
+msgid "Of course, that's the easy part of the job. For this scope type to be useful, we will also need to define a <literal>Context</literal> object that implements the scope! Implementing a <literal>Context</literal> is usually a very technical task, intended for framework development only."
+msgstr "Sicuramente questa è la parte facile del lavoro. Affinché questo tipo di scope sia utile, avremo bisogno di definire un oggetto <literal>Contesto</literal> che implementi lo scope! Implementare un <literal>Contesto</literal> è compito molto tecnico, inteso solo per lo sviluppo di framework."
+
+#. Tag: para
+#: scopescontexts.xml:44
+#, no-c-format
+msgid "We can apply a scope type annotation to a Web Bean implementation class to specify the scope of the Web Bean:"
+msgstr "Si può applicare un'annotazione con un tipo scope ad una classe di implementazione Web Bean per specificare lo scope del Web Bean:"
+
+#. Tag: programlisting
+#: scopescontexts.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[@ClusterScoped\n"
+"public class SecondLevelCache { ... }]]>"
+msgstr ""
+"<![CDATA[@ClusterScoped\n"
+"public class SecondLevelCache { ... }]]>"
+
+#. Tag: para
+#: scopescontexts.xml:58
+#, no-c-format
+msgid "Usually, you'll use one of Web Beans' built-in scopes."
+msgstr "Solitamente si userà uno degli scopi predefiniti di Web Beans."
+
+#. Tag: title
+#: scopescontexts.xml:63
+#, no-c-format
+msgid "Built-in scopes"
+msgstr "Scope predefiniti"
+
+#. Tag: para
+#: scopescontexts.xml:65
+#, no-c-format
+msgid "Web Beans defines four built-in scopes:"
+msgstr "Web Beans definisce quattro scope predefiniti:"
+
+#. Tag: literal
+#: scopescontexts.xml:69
+#, no-c-format
+msgid "@RequestScoped"
+msgstr "@RequestScoped"
+
+#. Tag: literal
+#: scopescontexts.xml:72
+#, no-c-format
+msgid "@SessionScoped"
+msgstr "@SessionScoped"
+
+#. Tag: literal
+#: scopescontexts.xml:75
+#, no-c-format
+msgid "@ApplicationScoped"
+msgstr "@ApplicationScoped"
+
+#. Tag: literal
+#: scopescontexts.xml:78
+#, no-c-format
+msgid "@ConversationScoped"
+msgstr "@ConversationScoped"
+
+#. Tag: para
+#: scopescontexts.xml:82
+#, no-c-format
+msgid "For a web application that uses Web Beans:"
+msgstr "Per un'applicazione web che impiega Web Beans:"
+
+#. Tag: para
+#: scopescontexts.xml:86
+#, no-c-format
+msgid "any servlet request has access to active request, session and application scopes, and, additionally"
+msgstr "qualsiasi richiesta servlet ha accesso a scope attivi di richiesta, sessione e applicazione e, in aggiunta"
+
+#. Tag: para
+#: scopescontexts.xml:90
+#, no-c-format
+msgid "any JSF request has access to an active conversation scope."
+msgstr "qualsiasi richiesta JSF ha accesso allo scope attivo di conversazione."
+
+#. Tag: para
+#: scopescontexts.xml:94
+#, no-c-format
+msgid "The request and application scopes are also active:"
+msgstr "Gli scope di richiesta ed applicazione sono pure attivi:"
+
+#. Tag: para
+#: scopescontexts.xml:98
+#, no-c-format
+msgid "during invocations of EJB remote methods,"
+msgstr "durante le invocazioni a metodi remoti EJB,"
+
+#. Tag: para
+#: scopescontexts.xml:101
+#, no-c-format
+msgid "during EJB timeouts,"
+msgstr "durante i timeout EJB,"
+
+#. Tag: para
+#: scopescontexts.xml:104
+#, no-c-format
+msgid "during message delivery to a message-driven bean, and"
+msgstr "durante la consegna dei messaggi a bean message-drive, e"
+
+#. Tag: para
+#: scopescontexts.xml:107
+#, no-c-format
+msgid "during web service invocations."
+msgstr "durante invocazioni web service."
+
+#. Tag: para
+#: scopescontexts.xml:111
+#, no-c-format
+msgid "If the application tries to invoke a Web Bean with a scope that does not have an active context, a <literal>ContextNotActiveException</literal> is thrown by the Web Bean manager at runtime."
+msgstr "Se l'applicazione prova ad invocare un Web Bean con scope che non ha un contesto attivo, una <literal>ContextNotActiveException</literal> viene lanciata a runtime dal manager Web Bean."
+
+#. Tag: para
+#: scopescontexts.xml:115
+#, no-c-format
+msgid "Three of the four built-in scopes should be extremely familiar to every Java EE developer, so let's not waste time discussing them here. One of the scopes, however, is new."
+msgstr "Tre dei quattro scope predefiniti dovrebbero essere estremamente familiari ad ogni sviluppatore Java EE, quindi non si procede oltre nella discussione. Uno degli scope è comunque nuovo."
+
+#. Tag: title
+#: scopescontexts.xml:122
+#, no-c-format
+msgid "The conversation scope"
+msgstr "Lo scope conversazione"
+
+#. Tag: para
+#: scopescontexts.xml:124
+#, no-c-format
+msgid "The Web Beans conversation scope is a bit like the traditional session scope in that it holds state associated with a user of the system, and spans multiple requests to the server. However, unlike the session scope, the conversation scope:"
+msgstr "Lo scope di conversazione di Web Beans è un pò come il tradizionale scope di sessione in cui viene mantenuto lo stato associato all'utente del sistema, e vengono create richiest multiple al server. Comunque, a differenza dello scope di sessione, lo scope di conversazione:"
+
+#. Tag: para
+#: scopescontexts.xml:130
+#, no-c-format
+msgid "is demarcated explicitly by the application, and"
+msgstr "è demarcato esplicitamente dall'applicazione, e"
+
+#. Tag: para
+#: scopescontexts.xml:133
+#, no-c-format
+msgid "holds state associated with a particular web browser tab in a JSF application."
+msgstr "mantiene lo stato associato ad un particolare tab del browser in un'applicazione JSF."
+
+#. Tag: para
+#: scopescontexts.xml:138
+#, no-c-format
+msgid "A conversation represents a task, a unit of work from the point of view of the user. The conversation context holds state associated with what the user is currently working on. If the user is doing multiple things at the same time, there are multiple conversations."
+msgstr "Una conversazione rappresenta un task, un'unità di lavoro dal punto di vista dell'utente. Il contesto di conversazione mantiene uno stato associato all'utente che sta lavorando. Se l'utente sta facendo più cose contemporaneamente ci saranno più conversazioni."
+
+#. Tag: para
+#: scopescontexts.xml:143
+#, no-c-format
+msgid "The conversation context is active during any JSF request. However, most conversations are destroyed at the end of the request. If a conversation should hold state across multiple requests, it must be explicitly promoted to a <emphasis>long-running conversation</emphasis>."
+msgstr "Il contesto di conversazione è attivo durante ogni richiesta JSF. Comunque, la maggior parte delle conversazioni vengono distrutte alla fine della richiesta. Se una conversazione deve mantenere lo stato nel corso richieste multiple, deve esplicitamente essere promossa a <emphasis>conversazione long-running</emphasis>."
+
+#. Tag: title
+#: scopescontexts.xml:149
+#, no-c-format
+msgid "Conversation demarcation"
+msgstr "Demarcazione della conversazione"
+
+#. Tag: para
+#: scopescontexts.xml:151
+#, no-c-format
+msgid "Web Beans provides a built-in Web Bean for controlling the lifecyle of conversations in a JSF application. This Web Bean may be obtained by injection:"
+msgstr "Web Beans fornisce un Web Bean predefinito per controllare il ciclo di vita delle conversazioni in un'applicazione JSF. QUesto Web Bean può essere ottenuto per iniezione:"
+
+#. Tag: programlisting
+#: scopescontexts.xml:154
+#, no-c-format
+msgid "@Current Conversation conversation;"
+msgstr "@Current Conversation conversation;"
+
+#. Tag: para
+#: scopescontexts.xml:156
+#, no-c-format
+msgid "To promote the conversation associated with the current request to a long-running conversation, call the <literal>begin()</literal> method from application code. To schedule the current long-running conversation context for destruction at the end of the current request, call <literal>end()</literal>."
+msgstr "Per promuovere a long-running la conversazione associata alla richiesta corrente, occorre chiamare il metodo <literal>begin()</literal> dal codice dell'applicazione. Per schedulare la distruzione del contesto attuale della conversazione long-running, si chiami <literal>end()</literal>."
+
+#. Tag: para
+#: scopescontexts.xml:161
+#, no-c-format
+msgid "In the following example, a conversation-scoped Web Bean controls the conversation with which it is associated:"
+msgstr "Nel seguente esempio un Web Bean con scope di conversazione controlla la conversazione alla quale è associato:"
+
+#. Tag: programlisting
+#: scopescontexts.xml:164
+#, no-c-format
+msgid ""
+"@ConversationScoped @Stateful\n"
+"public class OrderBuilder {\n"
+"\n"
+"    private Order order;\n"
+"    private @Current Conversation conversation;\n"
+"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
+"    \n"
+"    @Produces public Order getOrder() {\n"
+"        return order;\n"
+"    }\n"
+"\n"
+"    public Order createOrder() {\n"
+"        order = new Order();\n"
+"        conversation.begin();\n"
+"        return order;\n"
+"    }\n"
+"    \n"
+"    public void addLineItem(Product product, int quantity) {\n"
+"        order.add( new LineItem(product, quantity) );\n"
+"    }\n"
+"\n"
+"    public void saveOrder(Order order) {\n"
+"        em.persist(order);\n"
+"        conversation.end();\n"
+"    }\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"    \n"
+"}"
+msgstr ""
+"@ConversationScoped @Stateful\n"
+"public class OrderBuilder {\n"
+"\n"
+"    private Order order;\n"
+"    private @Current Conversation conversation;\n"
+"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
+"    \n"
+"    @Produces public Order getOrder() {\n"
+"        return order;\n"
+"    }\n"
+"\n"
+"    public Order createOrder() {\n"
+"        order = new Order();\n"
+"        conversation.begin();\n"
+"        return order;\n"
+"    }\n"
+"    \n"
+"    public void addLineItem(Product product, int quantity) {\n"
+"        order.add( new LineItem(product, quantity) );\n"
+"    }\n"
+"\n"
+"    public void saveOrder(Order order) {\n"
+"        em.persist(order);\n"
+"        conversation.end();\n"
+"    }\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: scopescontexts.xml:166
+#, no-c-format
+msgid "This Web Bean is able to control its own lifecycle through use of the <literal>Conversation</literal> API. But some other Web Beans have a lifecycle which depends completely upon another object."
+msgstr "Questo Web Bean è capace di controlla il proprio ciclo di vita attraverso l'uso della API <literal>Conversation</literal>. Ma altri Web BEan hanno un ciclo di vita che dipende completamente da un altro oggetto."
+
+#. Tag: title
+#: scopescontexts.xml:173
+#, no-c-format
+msgid "Conversation propagation"
+msgstr "Propagazione della conversazione"
+
+#. Tag: para
+#: scopescontexts.xml:175
+#, no-c-format
+msgid "The conversation context automatically propagates with any JSF faces request (JSF form submission). It does not automatically propagate with non-faces requests, for example, navigation via a link."
+msgstr "Il contesto di conversazione viene automaticamente propagato con ogni richiesta JSF faces (invio di form JSF). Non si propaga in modo automatico con richiesta non-faces, per esempio, navigazione tramite un link."
+
+#. Tag: para
+#: scopescontexts.xml:179
+#, no-c-format
+msgid "We can force the conversation to propagate with a non-faces request by including the unique identifier of the conversation as a request parameter. The Web Beans specification reserves the request parameter named <literal>cid</literal> for this use. The unique identifier of the conversation may be obtained from the <literal>Conversation</literal> object, which has the Web Beans name <literal>conversation</literal>."
+msgstr "E' possibile forzare la conversazione da propagare tramite richiesta non-faces attraverso l'inclusione di un identificatore univoco della conversazione come parametro di richiesta. La specifica Web Bean riserva un parametro di richiesta chiamato <literal>cid</literal> per tale uso. L'identificatore univoco della conversazione può essere ottenuto dall'oggetto <literal>Conversation</literal>, che ha il nome Web Beans <literal>conversation</literal>."
+
+#. Tag: para
+#: scopescontexts.xml:186
+#, no-c-format
+msgid "Therefore, the following link propagates the conversation:"
+msgstr "Quindi il seguente link propaga la conversazione:"
+
+#. Tag: programlisting
+#: scopescontexts.xml:188
+#, no-c-format
+msgid "<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]>"
+msgstr "<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]>"
+
+#. Tag: para
+#: scopescontexts.xml:190
+#, no-c-format
+msgid "The Web Bean manager is also required to propagate conversations across any redirect, even if the conversation is not marked long-running. This makes it very easy to implement the common POST-then-redirect pattern, without resort to fragile constructs such as a \"flash\" object. In this case, the Web Bean manager automatically adds a request parameter to the redirect URL."
+msgstr "Il manager Web Bean deve propagare le conversazioni attraverso i redirect, anche se la conversazione non è marcata long-running. Questo rende facile implementare il comune pattern POST-then-redirect, senza impiegare fragili costrutti quali oggetti \"flash\". In questo caso il manager Web Bean aggiunge automaticamente un parametro di richiesta all'URL di redirect."
+
+#. Tag: title
+#: scopescontexts.xml:200
+#, no-c-format
+msgid "Conversation timeout"
+msgstr "Timeout della conversazione"
+
+#. Tag: para
+#: scopescontexts.xml:202
+#, no-c-format
+msgid "The Web Bean manager is permitted to destroy a conversation and all state held in its context at any time in order to preserve resources. A Web Bean manager implementation will normally do this on the basis of some kind of timeout&#151;though this is not required by the Web Beans specification. The timeout is the period of inactivity before the conversation is destroyed."
+msgstr "Al manager Web Bean è permesso di distruggere una conversazione e tutto lo stato mantenuto nel contesto in qualsiasi momento al fine di preservare le risorse. Un'implementazione di un manager Web Bean eseguirà questo sulla base di un qualche timeout&#151;sebbene non sia richiesto dalla specifica Web Beans. Il timeout è il periodo di inattività prima che la conversazione venga distrutta."
+
+#. Tag: para
+#: scopescontexts.xml:208
+#, no-c-format
+msgid "The <literal>Conversation</literal> object provides a method to set the timeout. This is a hint to the Web Bean manager, which is free to ignore the setting."
+msgstr "L'oggetto <literal>Conversation</literal> fornisce un metodo per impostare iltimeout. Questo è solo un suggerimento al manager Web Bean, che è libero di ignorare quest'impostazione."
+
+#. Tag: programlisting
+#: scopescontexts.xml:212
+#, no-c-format
+msgid "conversation.setTimeout(timeoutInMillis);"
+msgstr "conversation.setTimeout(timeoutInMillis);"
+
+#. Tag: title
+#: scopescontexts.xml:219
+#, no-c-format
+msgid "The dependent pseudo-scope"
+msgstr "Pseudo-scope dipendente"
+
+#. Tag: para
+#: scopescontexts.xml:221
+#, no-c-format
+msgid "In addition to the four built-in scopes, Web Beans features the so-called <emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a Web Bean which does not explicitly declare a scope type."
+msgstr "In aggiunta ai quattro scope predefiniti, Web Bean fornisce il cosiddetto <emphasis>pseudo-scope dipendente</emphasis>. Questo è lo scope di default per un Web Bean che non dichiara esplicitamente un tipo di scope."
+
+#. Tag: para
+#: scopescontexts.xml:225
+#, no-c-format
+msgid "For example, this Web Bean has the scope type <literal>@Dependent</literal>:"
+msgstr "Per esempio questo Web Bean ha uno scope di tipo <literal>@Dependent</literal>:"
+
+#. Tag: programlisting
+#: scopescontexts.xml:227
+#, no-c-format
+msgid "<![CDATA[public class Calculator { ... }]]>"
+msgstr "<![CDATA[public class Calculator { ... }]]>"
+
+#. Tag: para
+#: scopescontexts.xml:229
+#, no-c-format
+msgid "When an injection point of a Web Bean resolves to a dependent Web Bean, a new instance of the dependent Web Bean is created every time the first Web Bean is instantiated. Instances of dependent Web Beans are never shared between different Web Beans or different injection points. They are <emphasis>dependent objects</emphasis> of some other Web Bean instance."
+msgstr "Quando un punto di iniezione di un Web Bean risolve verso un Web Bean dipendente, viene creata una nuova istanza di Web Bean dipendente ogni volta che il primo Web Bean viene istanziato. Le istanze dei Web Beans dipendenti non vengono mai condivise tra Web Bean differenti o punti di iniezione differenti. Sono <emphasis>oggetti dipendenti</emphasis> di altre istanze Web Bean."
+
+#. Tag: para
+#: scopescontexts.xml:235
+#, no-c-format
+msgid "Dependent Web Bean instances are destroyed when the instance they depend upon is destroyed."
+msgstr "Istanze Web Bean dipendenti vengono distrutte quando viene distrutta l'istanza da cui dipendono."
+
+#. Tag: para
+#: scopescontexts.xml:243
+#, no-c-format
+msgid "Web Beans makes it easy to obtain a dependent instance of a Java class or EJB bean, even if the class or EJB bean is already declared as a Web Bean with some other scope type."
+msgstr "Web Beans facilità l'ottenimento di un'istanza dipendente di una classe Java o bean EJB, anche se la classe o bean EJB sono già dichiarati come Web Bean con qualche altro tipo di scope."
+
+#. Tag: title
+#: scopescontexts.xml:248
+#, no-c-format
+msgid "The <literal>@New</literal> annotation"
+msgstr "Annotazione <literal>@New</literal>"
+
+#. Tag: para
+#: scopescontexts.xml:250
+#, no-c-format
+msgid "The built-in <literal>@New</literal> binding annotation allows <emphasis>implicit</emphasis> definition of a dependent Web Bean at an injection point. Suppose we declare the following injected field:"
+msgstr "L'annotazione predefinita di binding <literal>@New</literal> consente la definizione<emphasis>implicita</emphasis> di un Web Bean dipendente in un punti di iniezione. Si supponga di dichiarare il seguentecampo iniettato:"
+
+#. Tag: programlisting
+#: scopescontexts.xml:254
+#, no-c-format
+msgid "<![CDATA[@New Calculator calculator;]]>"
+msgstr "<![CDATA[@New Calculator calculator;]]>"
+
+#. Tag: para
+#: scopescontexts.xml:256
+#, no-c-format
+msgid "Then a Web Bean with scope <literal>@Dependent</literal>, binding type <literal>@New</literal>, API type <literal>Calculator</literal>, implementation class <literal>Calculator</literal> and deployment type <literal>@Standard</literal> is implicitly defined."
+msgstr "Allora viene implicitamente definito il Web Bean con scope <literal>@Dependent</literal>, tipo di binding  <literal>@New</literal>, tipo di API <literal>Calculator</literal>, classe di implementazione <literal>Calculator</literal> e tipo di deploy <literal>@Standard</literal>."
+
+#. Tag: para
+#: scopescontexts.xml:261
+#, no-c-format
+msgid "This is true even if <literal>Calculator</literal> is <emphasis>already</emphasis> declared with a different scope type, for example:"
+msgstr "Questo è vero se <literal>Calculator</literal> è <emphasis>già</emphasis> dichiarato con un tipo di scope differente, per esempio:"
+
+#. Tag: programlisting
+#: scopescontexts.xml:264
+#, no-c-format
+msgid ""
+"<![CDATA[@ConversationScoped\n"
+"public class Calculator { ... }]]>"
+msgstr ""
+"<![CDATA[@ConversationScoped\n"
+"public class Calculator { ... }]]>"
+
+#. Tag: para
+#: scopescontexts.xml:266
+#, no-c-format
+msgid "So the following injected attributes each get a different instance of <literal>Calculator</literal>:"
+msgstr "Quindi i seguenti attributi iniettati ricevono ciascuno un'istanza di <literal>Calculator</literal>:"
+
+#. Tag: programlisting
+#: scopescontexts.xml:269
+#, no-c-format
+msgid ""
+"<![CDATA[public class PaymentCalc {\n"
+"\n"
+"    @Current Calculator calculator;\n"
+"    @New Calculator newCalculator;\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class PaymentCalc {\n"
+"\n"
+"    @Current Calculator calculator;\n"
+"    @New Calculator newCalculator;\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: scopescontexts.xml:271
+#, no-c-format
+msgid "The <literal>calculator</literal> field has a conversation-scoped instance of <literal>Calculator</literal> injected. The <literal>newCalculator</literal> field has a new instance of <literal>Calculator</literal> injected, with a lifecycle that is bound to the owning <literal>PaymentCalc</literal>."
+msgstr "Il campo <literal>calculator</literal> ha iniettata un'istanza con scope conversazionale di <literal>Calculator</literal>. Il campo <literal>newCalculator</literal> ha iniettata un nuova istanza di <literal>Calculator</literal>, con ciclo di vita che è legato a <literal>PaymentCalc</literal>."
+
+#. Tag: para
+#: scopescontexts.xml:276
+#, no-c-format
+msgid "This feature is particularly useful with producer methods, as we'll see in the next chapter."
+msgstr "Questa caratteristica è particolarmente utile con i metodi produttori, come si vedrà nel prossimo capitolo."
+


Property changes on: doc/trunk/reference/it-IT/scopescontexts.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/it-IT/specialization.mo
===================================================================
(Binary files differ)


Property changes on: doc/trunk/reference/it-IT/specialization.mo
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Copied: doc/trunk/reference/it-IT/specialization.po (from rev 728, doc/trunk/reference/it-IT/modules/specialization.po)
===================================================================
--- doc/trunk/reference/it-IT/specialization.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/specialization.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,249 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-05 00:30+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: specialization.xml:4
+#, no-c-format
+msgid "Specialization"
+msgstr "Specializzazione"
+
+#. Tag: para
+#: specialization.xml:6
+#, no-c-format
+msgid "We've already seen how the Web Beans dependency injection model lets us <emphasis>override</emphasis> the implementation of an API at deployment time. For example, the following enterprise Web Bean provides an implementation of the API <literal>PaymentProcessor</literal> in production:"
+msgstr "Si è già visto come il modello di dependency injection di Web Beans consenta l'<emphasis>override</emphasis> dell'implementazione di un API a deployment time. Per esempio, il seguente Web Bean enterprise fornisce un'implementazione di un API <literal>PaymentProcessor</literal> in produzione:"
+
+#. Tag: programlisting
+#: specialization.xml:11
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless\n"
+"public class CreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+"@CreditCard @Stateless\n"
+"public class CreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: specialization.xml:13
+#, no-c-format
+msgid "But in our staging environment, we override that implementation of <literal>PaymentProcessor</literal> with a different Web Bean:"
+msgstr "Ma in quest'ambiente di prova si procede con l'override dell'implementazione di <literal>PaymentProcessor</literal> con un Web Bean differente:"
+
+#. Tag: programlisting
+#: specialization.xml:16
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless @Staging\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+"@CreditCard @Stateless @Staging\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: specialization.xml:18
+#, no-c-format
+msgid "What we've tried to do with <literal>StagingCreditCardPaymentProcessor</literal> is to completely replace <literal>AsyncPaymentProcessor</literal> in a particular deployment of the system. In that deployment, the deployment type <literal>@Staging</literal> would have a higher priority than the default deployment type <literal>@Production</literal>, and therefore clients with the following injection point:"
+msgstr "Quello che si è cercato di fare con  <literal>StagingCreditCardPaymentProcessor</literal> è sostituire completamente <literal>AsyncPaymentProcessor</literal> in un particolare deployment del sistema. In tale deployment, il tipo di deploy <literal>@Staging</literal> avrebbe più alta priorità del tipo di deploy di default <literal>@Production</literal>, e quindi client con il seguente punto di iniezione:"
+
+#. Tag: programlisting
+#: specialization.xml:24
+#, no-c-format
+msgid "@CreditCard PaymentProcessor ccpp"
+msgstr "@CreditCard PaymentProcessor ccpp"
+
+#. Tag: para
+#: specialization.xml:26
+#, no-c-format
+msgid "Would receive an instance of <literal>StagingCreditCardPaymentProcessor</literal>."
+msgstr "riceverebbero un'istanza di <literal>StagingCreditCardPaymentProcessor</literal>."
+
+#. Tag: para
+#: specialization.xml:28
+#, no-c-format
+msgid "Unfortunately, there are several traps we can easily fall into:"
+msgstr "Sfortunatamente ci sono parecchie trappole in cui è facile cadere:"
+
+#. Tag: para
+#: specialization.xml:32
+#, no-c-format
+msgid "the higher-priority Web Bean may not implement all the API types of the Web Bean that it attempts to override,"
+msgstr "il Web Bean con più alta priorità potrebbe non implementare tutti i tipi di API del Web Bean di cui tenta di fare override,"
+
+#. Tag: para
+#: specialization.xml:36
+#, no-c-format
+msgid "the higher-priority Web Bean may not declare all the binding types of the Web Bean that it attempts to override,"
+msgstr "il Web Bean con più alta priorità potrebbe non dichiare tutti i tipi di binding del Web Bean di cui tenta di fare override,"
+
+#. Tag: para
+#: specialization.xml:40
+#, no-c-format
+msgid "the higher-priority Web Bean might not have the same name as the Web Bean that it attempts to override, or"
+msgstr "il Web Bean con più alta priorità potrebbe non avere lo stesso nome del Web Bean di cui tenta di fare override, oppure"
+
+#. Tag: para
+#: specialization.xml:44
+#, no-c-format
+msgid "the Web Bean that it attempts to override might declare a producer method, disposal method or observer method."
+msgstr "il Web Bean di cui tenta di fare override potrebbe dichiarare un metodo produttore, metodo distruttore o metodo osservatore."
+
+#. Tag: para
+#: specialization.xml:49
+#, no-c-format
+msgid "In each of these cases, the Web Bean that we tried to override could still be called at runtime. Therefore, overriding is somewhat prone to developer error."
+msgstr "In ciascuno di questi casi, il Web Bean di cui si tenta l'override potrebbe ancora venire chiamato a runtime. Quindi, l'override è qualcosa di incline all'errore per lo sviluppatore."
+
+#. Tag: para
+#: specialization.xml:52
+#, no-c-format
+msgid "Web Beans provides a special feature, called <emphasis>specialization</emphasis>, that helps the developer avoid these traps. Specialization looks a little esoteric at first, but it's easy to use in practice, and you'll really appreciate the extra security it provides."
+msgstr "Web Beans fornisce una funzionalità speciale chiamata <emphasis>specializzazione</emphasis>, che aiuta lo sviluppatore ad evitare queste trappole. La specializzazione sembra inizialmente un pò esoterica, ma in pratica è facile da usare, e si apprezzerà veramente la sicurezza extra che fornisce. "
+
+#. Tag: title
+#: specialization.xml:58
+#, no-c-format
+msgid "Using specialization"
+msgstr "Usare la specializzazione"
+
+#. Tag: para
+#: specialization.xml:60
+#, no-c-format
+msgid "Specialization is a feature that is specific to simple and enterprise Web Beans. To make use of specialization, the higher-priority Web Bean must:"
+msgstr "La specializzazione è una funzionalità specifica dei Web Bean semplici ed enterprise. Per fare uso della specializzazione il Web Bean a più alta priorità deve:"
+
+#. Tag: para
+#: specialization.xml:65
+#, no-c-format
+msgid "be a direct subclass of the Web Bean it overrides, and"
+msgstr "essere un diretta sottoclasse del Web Bean di cui fa l'override, e"
+
+#. Tag: para
+#: specialization.xml:68
+#, no-c-format
+msgid "be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or an enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, and"
+msgstr "essere un semplice Web Bean se il Web Bean di cui fare override è un semplice Web Bean o un Web Bean Enterprise se il Web Bean di cui fa override è un Web Bean Enterprise, e"
+
+#. Tag: para
+#: specialization.xml:73
+#, no-c-format
+msgid "be annotated <literal>@Specializes</literal>."
+msgstr "essere annotato con <literal>@Specializes</literal>."
+
+#. Tag: programlisting
+#: specialization.xml:77
+#, no-c-format
+msgid ""
+"@Stateless @Staging @Specializes\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        extends CreditCardPaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Stateless @Staging @Specializes\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        extends CreditCardPaymentProcessor {\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: specialization.xml:79
+#, no-c-format
+msgid "We say that the higher-priority Web Bean <emphasis>specializes</emphasis> its superclass."
+msgstr "Si dice che il Web Bean a più alta priorità <emphasis>specializza</emphasis> la sua superclasse."
+
+#. Tag: title
+#: specialization.xml:85
+#, no-c-format
+msgid "Advantages of specialization"
+msgstr "Vantaggi della specializzazione"
+
+#. Tag: para
+#: specialization.xml:87
+#, no-c-format
+msgid "When specialization is used:"
+msgstr "Quando viene usata la specializzazione:"
+
+#. Tag: para
+#: specialization.xml:91
+#, no-c-format
+msgid "the binding types of the superclass are automatically inherited by the Web Bean annotated <literal>@Specializes</literal>, and"
+msgstr "i tipi di binding della superclasse vengono automaticamente ereditati dal Web Bean annotato con <literal>@Specializes</literal>, e"
+
+#. Tag: para
+#: specialization.xml:95
+#, no-c-format
+msgid "the Web Bean name of the superclass is automatically inherited by the Web Bean annotated <literal>@Specializes</literal>, and"
+msgstr "il nome del Web Bean della superclasse è automaticamente ereditato dal Web Bean annotato con <literal>@Specializes</literal>, e"
+
+#. Tag: para
+#: specialization.xml:99
+#, no-c-format
+msgid "producer methods, disposal methods and observer methods declared by the superclass are called upon an instance of the Web Bean annotated <literal>@Specializes</literal>."
+msgstr "i metodi produttori, metodi distruttori e metodi osservatori dichiarati dalla superclasse vengono chiamati da un'istanza del Web Bean annotato con <literal>@Specializes</literal>."
+
+#. Tag: para
+#: specialization.xml:105
+#, no-c-format
+msgid "In our example, the binding type <literal>@CreditCard</literal> of <literal>CreditCardPaymentProcessor</literal> is inherited by <literal>StagingCreditCardPaymentProcessor</literal>."
+msgstr "Nel nostro esempio, il tipo di binding <literal>@CreditCard</literal> di <literal>CreditCardPaymentProcessor</literal> viene ereditato da <literal>StagingCreditCardPaymentProcessor</literal>."
+
+#. Tag: para
+#: specialization.xml:109
+#, no-c-format
+msgid "Furthermore, the Web Bean manager will validate that:"
+msgstr "Inoltre il manager Web Bean validerà che:"
+
+#. Tag: para
+#: specialization.xml:113
+#, no-c-format
+msgid "all API types of the superclass are API types of the Web Bean annotated <literal>@Specializes</literal> (all local interfaces of the superclass enterprise bean are also local interfaces of the subclass),"
+msgstr "tutti i tipi di API della superclasse sono tipi di API del Web Bean annotato con <literal>@Specializes</literal> (tutte le interfacce locali del bean enterprise della superclasse sono anch'essi interfacce della sottoclasse),"
+
+#. Tag: para
+#: specialization.xml:119
+#, no-c-format
+msgid "the deployment type of the Web Bean annotated <literal>@Specializes</literal> has a higher precedence than the deployment type of the superclass, and"
+msgstr "il tipo di deploy di un Web Bean annotato con <literal>@Specializes</literal> ha una precedenza più alta di un tipo di deploy della superclasse, e"
+
+#. Tag: para
+#: specialization.xml:124
+#, no-c-format
+msgid "there is no other enabled Web Bean that also specializes the superclass."
+msgstr "non esiste nessun altro Web Bean che specializza la superclasse."
+
+#. Tag: para
+#: specialization.xml:129
+#, no-c-format
+msgid "If any of these conditions are violated, the Web Bean manager throws an exception at initialization time."
+msgstr "Se una di queste condizioni viene violata, il manager Web Bean lancia un'eccezione in fase di inizializzazione."
+
+#. Tag: para
+#: specialization.xml:132
+#, no-c-format
+msgid "Therefore, we can be certain that the superclass will <emphasis>never</emphasis> be called in any deployment of the system where the Web Bean annotated <literal>@Specializes</literal> is deployed and enabled."
+msgstr "Quindi, si può essere certi che la superclasse non verrà <emphasis>mai</emphasis> chiamata in alcun deploy del sistema in cui viene deployato ed abilitato il Web Bean annotato con <literal>@Specializes</literal>."
+


Property changes on: doc/trunk/reference/it-IT/specialization.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/stereotypes.po (from rev 731, doc/trunk/reference/it-IT/modules/stereotypes.po)
===================================================================
--- doc/trunk/reference/it-IT/stereotypes.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/stereotypes.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,359 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-25 22:17+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: stereotypes.xml:4
+#, no-c-format
+msgid "Stereotypes"
+msgstr "Stereotipi"
+
+#. Tag: para
+#: stereotypes.xml:6
+#, no-c-format
+msgid "According to the Web Beans specification:"
+msgstr "Secondo la specifica Web Beans:"
+
+#. Tag: para
+#: stereotypes.xml:10
+#, no-c-format
+msgid "In many systems, use of architectural patterns produces a set of recurring Web Bean roles. A stereotype allows a framework developer to identify such a role and declare some common metadata for Web Beans with that role in a central place."
+msgstr "In molti sistemi l'uso di pattern architetturali produce un set di ruoli Web Bean ricorrenti. Uno stereotipo consente allo sviluppatore di framework di identificare tale ruolo e di dichiarare alcuni metadati comuni per i Web Bean con tale ruolo come parte principale."
+
+#. Tag: para
+#: stereotypes.xml:14
+#, no-c-format
+msgid "A stereotype encapsulates any combination of:"
+msgstr "Uno stereotipo incapsula qualsiasi combinazione di:"
+
+#. Tag: para
+#: stereotypes.xml:18
+#, no-c-format
+msgid "a default deployment type,"
+msgstr "un tipo di deploy di default,"
+
+#. Tag: para
+#: stereotypes.xml:21
+#, no-c-format
+msgid "a default scope type,"
+msgstr "un tipo di scope di default,"
+
+#. Tag: para
+#: stereotypes.xml:24
+#, no-c-format
+msgid "a restriction upon the Web Bean scope,"
+msgstr "una restrizione sullo scope del Web Bean,"
+
+#. Tag: para
+#: stereotypes.xml:27
+#, no-c-format
+msgid "a requirement that the Web Bean implement or extend a certain type, and"
+msgstr "un requisito che il Web Bean implementi o estenda un certo tipo, e"
+
+#. Tag: para
+#: stereotypes.xml:30
+#, no-c-format
+msgid "a set of interceptor binding annotations."
+msgstr "un set di annotazioni di interceptor binding."
+
+#. Tag: para
+#: stereotypes.xml:34
+#, no-c-format
+msgid "A stereotype may also specify that all Web Beans with the stereotype have defaulted Web Bean names."
+msgstr "Uno stereotipo può anche specificare che tutti i Web Beans con tale stereotipo abbiano nomi Web Bean di default."
+
+#. Tag: para
+#: stereotypes.xml:37
+#, no-c-format
+msgid "A Web Bean may declare zero, one or multiple stereotypes."
+msgstr "Un Web Bean può dichiarare zero, uno o più stereotipi."
+
+#. Tag: para
+#: stereotypes.xml:41
+#, no-c-format
+msgid "A stereotype is a Java annotation type. This stereotype identifies action classes in some MVC framework:"
+msgstr "Uno stereotipo è un tipo di annotazione Java. Questo stereotipo identifica le classi di azione in alcuni framework MVC:"
+
+#. Tag: programlisting
+#: stereotypes.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+
+#. Tag: para
+#: stereotypes.xml:46
+#, no-c-format
+msgid "We use the stereotype by applying the annotation to a Web Bean."
+msgstr "Lo stereotipo viene impiegato applicando l'annotazione al Web Bean."
+
+#. Tag: programlisting
+#: stereotypes.xml:48
+#, no-c-format
+msgid ""
+"<![CDATA[@Action \n"
+"public class LoginAction { ... }]]>"
+msgstr ""
+"<![CDATA[@Action \n"
+"public class LoginAction { ... }]]>"
+
+#. Tag: title
+#: stereotypes.xml:51
+#, no-c-format
+msgid "Default scope and deployment type for a stereotype"
+msgstr "Scope di default e tipo di deploy per uno stereotipo"
+
+#. Tag: para
+#: stereotypes.xml:53
+#, no-c-format
+msgid "A stereotype may specify a default scope and/or default deployment type for Web Beans with that stereotype. For example, if the deployment type <literal>@WebTier</literal> identifies Web Beans that should only be deployed when the system executes as a web application, we might specify the following defaults for action classes:"
+msgstr "Uno stereotipo può specificare uno scope di default e/o un tipo di deploy di default per Web Bean con tale stereotipo. Per esempio, se il tipo di deploy <literal>@WebTier</literal> identifica Web Bean che dovrebbero essere deployati quando il sistema viene eseguito come applicazione web, si potrebbero specificare i seguenti valori di default per le classi d'azione:"
+
+#. Tag: programlisting
+#: stereotypes.xml:59
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+
+#. Tag: para
+#: stereotypes.xml:61
+#, no-c-format
+msgid "Of course, a particular action may still override these defaults if necessary:"
+msgstr "Certamente una particolare azione può comunque fare l'override di questi valore se necessario:"
+
+#. Tag: programlisting
+#: stereotypes.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[@Dependent @Mock @Action \n"
+"public class MockLoginAction { ... }]]>"
+msgstr ""
+"<![CDATA[@Dependent @Mock @Action \n"
+"public class MockLoginAction { ... }]]>"
+
+#. Tag: para
+#: stereotypes.xml:66
+#, no-c-format
+msgid "If we want to force all actions to a particular scope, we can do that too."
+msgstr "Se si vuole forzare tutte le azioni ad un particolare scope, è possibile."
+
+#. Tag: title
+#: stereotypes.xml:72
+#, no-c-format
+msgid "Restricting scope and type with a stereotype"
+msgstr "Restringere lo scope ed il tipo con uno stereotipo"
+
+#. Tag: para
+#: stereotypes.xml:74
+#, no-c-format
+msgid "Suppose that we wish to prevent actions from declaring certain scopes. Web Beans lets us explicitly specify the set of allowed scopes for Web Beans with a certain stereotype. For example:"
+msgstr "Si supponga di voler prevenire le azioni dal dichiarare certi scope. Web Beans consente esplicitamente di specificare un set di scope consentiti per Web Bean con certi stereotipi. Per esempio:"
+
+#. Tag: programlisting
+#: stereotypes.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(supportedScopes=RequestScoped.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(supportedScopes=RequestScoped.class)\n"
+"public @interface Action {}]]>"
+
+#. Tag: para
+#: stereotypes.xml:80
+#, no-c-format
+msgid "If a particular action class attempts to specify a scope other than the Web Beans request scope, an exception will be thrown by the Web Bean manager at initialization time."
+msgstr "Se una particolare classe d'azione tenta di specificare uno scope diverso dallo scope di richiesta Web Bean, verrà lanciata un'eccezione dal manager Web Bean in fase di inizializzazione."
+
+#. Tag: para
+#: stereotypes.xml:84
+#, no-c-format
+msgid "We can also force all Web Bean with a certain stereotype to implement an interface or extend a class:"
+msgstr "Tutti i Web Bean con certi stereotipi possono venire forzati ad implementare un'interfaccia o ad estendere una classe:"
+
+#. Tag: programlisting
+#: stereotypes.xml:87
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(requiredTypes=AbstractAction.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(requiredTypes=AbstractAction.class)\n"
+"public @interface Action {}]]>"
+
+#. Tag: para
+#: stereotypes.xml:89
+#, no-c-format
+msgid "If a particular action class does not extend the class <literal>AbstractAction</literal>, an exception will be thrown by the Web Bean manager at initialization time."
+msgstr "Se una particolare classe d'azione non estende la classe <literal>AbstractAction</literal>, verrà lanciata un'eccezione dal manager Web Bean in fase di inizializzazione."
+
+#. Tag: title
+#: stereotypes.xml:96
+#, no-c-format
+msgid "Interceptor bindings for stereotypes"
+msgstr "Interceptor binding per gli stereotipi"
+
+#. Tag: para
+#: stereotypes.xml:98
+#, no-c-format
+msgid "A stereotype may specify a set of interceptor bindings to be inherited by all Web Beans with that stereotype."
+msgstr "Uno stereotipo può specificare un set di interceptor binding da ereditare da tutti i Web Bean con quello stereotipo."
+
+#. Tag: programlisting
+#: stereotypes.xml:101
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+
+#. Tag: para
+#: stereotypes.xml:103
+#, no-c-format
+msgid "This helps us get technical concerns even further away from the business code!"
+msgstr "Questo aiuta ad ottenere concern tecnici anche lontano dal codice di business!"
+
+#. Tag: title
+#: stereotypes.xml:109
+#, no-c-format
+msgid "Name defaulting with stereotypes"
+msgstr "Assegnare nomi di default con gli stereotipi"
+
+#. Tag: para
+#: stereotypes.xml:111
+#, no-c-format
+msgid "Finally, we can specify that all Web Beans with a certain stereotype have a Web Bean name, defaulted by the Web Bean manager. Actions are often referenced in JSP pages, so they're a perfect use case for this feature. All we need to do is add an empty <literal>@Named</literal> annotation:"
+msgstr "Infine è possibile specificare che tutti i Web Bean con certi stereotipi abbiamo un certo nome Web Bean, messo di default dal manager Web Bean. Le azioni sono spesso referenziate nelle pagine JSP, e quindi sono un caso d'uso perfetto per questa funzionalità. Basta aggiungere un'annotazione vuota <literal>@Named</literal>:"
+
+#. Tag: programlisting
+#: stereotypes.xml:116
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@Named\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@Named\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+
+#. Tag: para
+#: stereotypes.xml:118
+#, no-c-format
+msgid "Now, <literal>LoginAction</literal> will have the name <literal>loginAction</literal>."
+msgstr "Ora, <literal>LoginAction</literal> avrà nome <literal>loginAction</literal>."
+
+#. Tag: title
+#: stereotypes.xml:124
+#, no-c-format
+msgid "Standard stereotypes"
+msgstr "Stereotipi standard"
+
+#. Tag: para
+#: stereotypes.xml:126
+#, no-c-format
+msgid "We've already met two standard stereotypes defined by the Web Beans specification: <literal>@Interceptor</literal> and <literal>@Decorator</literal>."
+msgstr "Si sono già visti due stereotipi standard definiti dalla specifica Web Bean: <literal>@Interceptor</literal> e <literal>@Decorator</literal>."
+
+#. Tag: para
+#: stereotypes.xml:129
+#, no-c-format
+msgid "Web Beans defines one further standard stereotype:"
+msgstr "Web Bean definisce un ulteriore stereotipo standard:"
+
+#. Tag: programlisting
+#: stereotypes.xml:131
+#, no-c-format
+msgid ""
+"<![CDATA[@Named \n"
+"@RequestScoped \n"
+"@Stereotype \n"
+"@Target({TYPE, METHOD}) \n"
+"@Retention(RUNTIME) \n"
+"public @interface Model {} ]]>"
+msgstr ""
+"<![CDATA[@Named \n"
+"@RequestScoped \n"
+"@Stereotype \n"
+"@Target({TYPE, METHOD}) \n"
+"@Retention(RUNTIME) \n"
+"public @interface Model {} ]]>"
+
+#. Tag: para
+#: stereotypes.xml:133
+#, no-c-format
+msgid "This stereotype is intended for use with JSF. Instead of using JSF managed beans, just annotate a Web Bean <literal>@Model</literal>, and use it directly in your JSF page."
+msgstr "Questo stereotipo è inteso per l'uso con JSF. Invece di usare bean gestiti da JSF, basta annotare un Web Bean con <literal>@Model</literal>, e usarlo direttamente nelle pagine JSF."
+


Property changes on: doc/trunk/reference/it-IT/stereotypes.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/it-IT/xml.po (from rev 728, doc/trunk/reference/it-IT/modules/xml.po)
===================================================================
--- doc/trunk/reference/it-IT/xml.po	                        (rev 0)
+++ doc/trunk/reference/it-IT/xml.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,360 @@
+# Language it-IT translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-25 15:29+0100\n"
+"Last-Translator: Nicola Benaglia <nico.benaz at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: xml.xml:4
+#, no-c-format
+msgid "Defining Web Beans using XML"
+msgstr "Definire i Web Beans tramite XML"
+
+#. Tag: para
+#: xml.xml:6
+#, no-c-format
+msgid "So far, we've seen plenty of examples of Web Beans declared using annotations. However, there are a couple of occasions when we can't use annotations to define the Web Bean:"
+msgstr "Finora si sono visti molti esempi di Web Bean dichiarati usando annotazioni. Comunque ci sono varie occasioni in cui non è possibile usare le annotazioni per definire un Web Bean:"
+
+#. Tag: para
+#: xml.xml:12
+#, no-c-format
+msgid "when the implementation class comes from some preexisting library, or"
+msgstr "quando la classe d'implementazione proviene da qualche libreria preesistente, o"
+
+#. Tag: para
+#: xml.xml:15
+#, no-c-format
+msgid "when there should be multiple Web Beans with the same implementation class."
+msgstr "quando devrebbero esserci Web Beans multipli con la stessa classe d'implementazione."
+
+#. Tag: para
+#: xml.xml:20
+#, no-c-format
+msgid "In either of these cases, Web Beans gives us two options:"
+msgstr "In entrambi i casi Web Beans fornisce due opzioni:"
+
+#. Tag: para
+#: xml.xml:23
+#, no-c-format
+msgid "write a producer method, or"
+msgstr "scrivere un metodo produttore, o"
+
+#. Tag: para
+#: xml.xml:24
+#, no-c-format
+msgid "declare the Web Bean using XML."
+msgstr "dichiarare il Web Bean usando XML."
+
+#. Tag: para
+#: xml.xml:27
+#, no-c-format
+msgid "Many frameworks use XML to provide metadata relating to Java classes. However, Web Beans uses a very different approach to specifying the names of Java classes, fields or methods to most other frameworks. Instead of writing class and member names as the string values of XML elements and attributes, Web Beans lets you use the class or member name as the name of the XML element."
+msgstr "Molti framework utilizzano XML per scrivere metadati relazionati alle classi. Web Beans usa un approccio molto diverso rispetto agli altri framework per specificare i nomi delle classi Java, dei campi o dei metodi. Invece di scrivere i nomi delle classi o dei membri come valori stringa di elementi e atttributi XML, Web Beans consente di utilizzare il nome della classe o del membro come nome dell'elemento XML."
+
+#. Tag: para
+#: xml.xml:33
+#, no-c-format
+msgid "The advantage of this approach is that you can write an XML schema that prevents spelling errors in your XML document. It's even possible for a tool to generate the XML schema automatically from the compiled Java code. Or, an integrated development environment could perform the same validation without the need for the explicit intermediate generation step."
+msgstr "Il vantaggio di quest'approccio è che risulta possibile scrivere uno schemaXML che previene gli errori di scrittura nei documenti XML. E' comunque possibile per un tool generare lo schema XML in modo automatico dal codice Java compilato. Oppure un ambiente di sviluppo integrato può eseguire la stessa validazionesenza il bisogno di un passo di generazione intermedio ed esplicito."
+
+#. Tag: title
+#: xml.xml:40
+#, no-c-format
+msgid "Declaring Web Bean classes"
+msgstr "Dichiarare classi Web Bean"
+
+#. Tag: para
+#: xml.xml:42
+#, no-c-format
+msgid "For each Java package, Web Beans defines a corresponding XML namespace. The namespace is formed by prepending <literal>urn:java:</literal> to the Java package name. For the package <literal>com.mydomain.myapp</literal>, the XML namespace is <literal>urn:java:com.mydomain.myapp</literal>."
+msgstr "Per ogni pacchetto Java, Web Beans definisce un corrispondente namespace XML. Ilnamespace è formato aggiungendo il prefisso <literal>urn:java:</literal> al nomedel pacchetto Java. Per il pacchetto <literal>com.mydomain.myapp</literal>, il namespace XML è <literal>urn:java:com.mydomain.myapp</literal>."
+
+#. Tag: para
+#: xml.xml:47
+#, no-c-format
+msgid "Java types belonging to a package are referred to using an XML element in the namespace corresponding to the package. The name of the element is the name of the Java type. Fields and methods of the type are specified by child elements in the same namespace. If the type is an annotation, members are specified by attributes of the element."
+msgstr "I tipi Java appartenenti al pacchetto vengono riferiti usando un elemento XML nel namespace corrispondente al pacchetto. Il nome dell'elemento è un nome di tipo Java. I campi e metodi del tipo vengono specificati dagli elementi figlio nello stesso namespace. Se il tipo è un'annotazione, i membri sonospecificati dagli attributi dell'elemento."
+
+#. Tag: para
+#: xml.xml:53
+#, no-c-format
+msgid "For example, the element <literal>&lt;util:Date/&gt;</literal> in the following XML fragment refers to the class <literal>java.util.Date</literal>:"
+msgstr "Per esempio l'elemento <literal>&lt;util:Date/&gt;</literal> nel seguente frammento XML si riferisce alla classe <literal>java.util.Date</literal>:"
+
+#. Tag: programlisting
+#: xml.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:util=\"urn:java:java.util\">\n"
+"\n"
+"    <util:Date/>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:util=\"urn:java:java.util\">\n"
+"\n"
+"    <util:Date/>\n"
+"\n"
+"</WebBeans>]]>"
+
+#. Tag: para
+#: xml.xml:58
+#, no-c-format
+msgid "And this is all the code we need to declare that <literal>Date</literal> is a simple Web Bean! An instance of <literal>Date</literal> may now be injected by any other Web Bean:"
+msgstr "E questo è tutto il codice per dichiarare che <literal>Date</literal> è un Web Bean semplice! Un'istanza di <literal>Date</literal> ora può essere iniettata da qualsiasi altro Web Bean:"
+
+#. Tag: programlisting
+#: xml.xml:62
+#, no-c-format
+msgid "<![CDATA[@Current Date date]]>"
+msgstr "<![CDATA[@Current Date date]]>"
+
+#. Tag: title
+#: xml.xml:67
+#, no-c-format
+msgid "Declaring Web Bean metadata"
+msgstr "Dichiarare metadati Web Bean"
+
+#. Tag: para
+#: xml.xml:69
+#, no-c-format
+msgid "We can declare the scope, deployment type and interceptor binding types using direct child elements of the Web Bean declaration:"
+msgstr "E' possibile dichiarare lo scope, il tipo di deploy ed i tipi di binding degli interceptor usando elementi figli diretti della dichiarazione Web Bean:"
+
+#. Tag: programlisting
+#: xml.xml:72
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:ShoppingCart>\n"
+"    <SessionScoped/>\n"
+"    <myfwk:Transactional requiresNew=\"true\"/>\n"
+"    <myfwk:Secure/>\n"
+"</myapp:ShoppingCart>]]>"
+msgstr ""
+"<![CDATA[<myapp:ShoppingCart>\n"
+"    <SessionScoped/>\n"
+"    <myfwk:Transactional requiresNew=\"true\"/>\n"
+"    <myfwk:Secure/>\n"
+"</myapp:ShoppingCart>]]>"
+
+#. Tag: para
+#: xml.xml:74
+#, no-c-format
+msgid "We use exactly the same approach to specify names and binding type:"
+msgstr "Si utilizza esattamente lo stesso approccio per specificare i nomi ed il tipo di binding:"
+
+#. Tag: programlisting
+#: xml.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[<util:Date>\n"
+"    <Named>currentTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <SessionScoped/>\n"
+"    <myapp:Login/>\n"
+"    <Named>loginTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:SystemStart/>\n"
+"    <Named>systemStartTime</Named>\n"
+"</util:Date>]]>"
+msgstr ""
+"<![CDATA[<util:Date>\n"
+"    <Named>currentTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <SessionScoped/>\n"
+"    <myapp:Login/>\n"
+"    <Named>loginTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:SystemStart/>\n"
+"    <Named>systemStartTime</Named>\n"
+"</util:Date>]]>"
+
+#. Tag: para
+#: xml.xml:78
+#, no-c-format
+msgid "Where <literal>@Login</literal> and <literal>@SystemStart</literal> are binding annotations types."
+msgstr "Dove <literal>@Login</literal> e <literal>@SystemStart</literal> sono tipi di annotazioni di binding."
+
+#. Tag: programlisting
+#: xml.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@Current Date currentTime;\n"
+"@Login Date loginTime;\n"
+"@SystemStart Date systemStartTime;]]>"
+msgstr ""
+"<![CDATA[@Current Date currentTime;\n"
+"@Login Date loginTime;\n"
+"@SystemStart Date systemStartTime;]]>"
+
+#. Tag: para
+#: xml.xml:83
+#, no-c-format
+msgid "As usual, a Web Bean may support multiple binding types:"
+msgstr "Di nuovo un Web Bean può supportare tipi di binding multipli:"
+
+#. Tag: programlisting
+#: xml.xml:85
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
+"    <myapp:PayByCheque/>\n"
+"    <myapp:Asynchronous/>\n"
+"</myapp:AsynchronousChequePaymentProcessor>]]>"
+msgstr ""
+"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
+"    <myapp:PayByCheque/>\n"
+"    <myapp:Asynchronous/>\n"
+"</myapp:AsynchronousChequePaymentProcessor>]]>"
+
+#. Tag: para
+#: xml.xml:87
+#, no-c-format
+msgid "Interceptors and decorators are just simple Web Beans, so they may be declared just like any other simple Web Bean:"
+msgstr "Interceptor e decoratori sono solo eb Bean semplici, e quindi possono essere dichiarati come qualsiasi altro Web Bean semplice:"
+
+#. Tag: programlisting
+#: xml.xml:90
+#, no-c-format
+msgid ""
+"<![CDATA[<myfwk:TransactionInterceptor>\n"
+"    <Interceptor/>\n"
+"    <myfwk:Transactional/>\n"
+"</myfwk:TransactionInterceptor>]]>"
+msgstr ""
+"<![CDATA[<myfwk:TransactionInterceptor>\n"
+"    <Interceptor/>\n"
+"    <myfwk:Transactional/>\n"
+"</myfwk:TransactionInterceptor>]]>"
+
+#. Tag: title
+#: xml.xml:95
+#, no-c-format
+msgid "Declaring Web Bean members"
+msgstr "Dichiarare membri Web Bean"
+
+#. Tag: para
+#: xml.xml:97
+#, no-c-format
+msgid "TODO!"
+msgstr "DA FARE!"
+
+#. Tag: title
+#: xml.xml:104
+#, no-c-format
+msgid "Declaring inline Web Beans"
+msgstr "Dichiarazione inline dei Web Beans"
+
+#. Tag: para
+#: xml.xml:106
+#, no-c-format
+msgid "Web Beans lets us define a Web Bean at an injection point. For example:"
+msgstr "I Web Beans consentono di definire un Web Bean ad un certo punto di iniezione. Per esempio:"
+
+#. Tag: programlisting
+#: xml.xml:108
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:System>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:admin>\n"
+"        <myapp:Name>\n"
+"            <myapp:firstname>Gavin</myapp:firstname>\n"
+"            <myapp:lastname>King</myapp:lastname>\n"
+"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
+"        </myapp:Name>\n"
+"    </myapp:admin>\n"
+"</myapp:System>]]>"
+msgstr ""
+"<![CDATA[<myapp:System>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:admin>\n"
+"        <myapp:Name>\n"
+"            <myapp:firstname>Gavin</myapp:firstname>\n"
+"            <myapp:lastname>King</myapp:lastname>\n"
+"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
+"        </myapp:Name>\n"
+"    </myapp:admin>\n"
+"</myapp:System>]]>"
+
+#. Tag: para
+#: xml.xml:110
+#, no-c-format
+msgid "The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of scope <literal>@Dependent</literal> and class <literal>Name</literal>, with a set of initial field values. This Web Bean has a special, container-generated binding and is therefore injectable only to the specific injection point at which it is declared."
+msgstr "L'elemento <literal>&lt;Name&gt;</literal> dichiara un Web Bean semplice con scope <literal>@Dependent</literal> e classe <literal>Name</literal>, con un set di valori di campo iniziali. Questo Web Bean ha uno speciale binding generatore dal container e quindi è iniettabile solo allo specifico punto di iniezione al quale è stato dichiarato."
+
+#. Tag: para
+#: xml.xml:116
+#, no-c-format
+msgid "This simple but powerful feature allows the Web Beans XML format to be used to specify whole graphs of Java objects. It's not quite a full databinding solution, but it's close!"
+msgstr "Questa caratteristica semplice e potente consente formato XML di Web Bean di essere usato per specificare l'intero grafo di oggetti Java. Non è ancora una completa soluzione di databinding, ma ci si avvicina!"
+
+#. Tag: title
+#: xml.xml:123
+#, no-c-format
+msgid "Using a schema"
+msgstr "Uso di uno schema"
+
+# tradurre frase
+#. Tag: para
+#: xml.xml:125
+#, no-c-format
+msgid "If we want our XML document format to be authored by people who aren't Java developers, or who don't have access to our code, we need to provide a schema. There's nothing specific to Web Beans about writing or using the schema."
+msgstr "Se si vuole che il formato di documento XML sia scritto da persone che non sono sviluppatori Java o che non hanno accesso al codice, occorre fornire uno schema. There's nothing specific to Web Beans about writing or using the schema."
+
+#. Tag: programlisting
+#: xml.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
+"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/jee/web-beans-1.0.xsd\n"
+"                              urn:java:com.mydomain.myapp http://mydomain.com/xsd/myapp-1.2.xsd\">\n"
+"\n"
+"    <myapp:System>\n"
+"        ...\n"
+"    </myapp:System>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
+"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/jee/web-beans-1.0.xsd\n"
+"                              urn:java:com.mydomain.myapp http://mydomain.com/xsd/myapp-1.2.xsd\">\n"
+"\n"
+"    <myapp:System>\n"
+"        ...\n"
+"    </myapp:System>\n"
+"\n"
+"</WebBeans>]]>"
+
+#. Tag: para
+#: xml.xml:132
+#, no-c-format
+msgid "Writing an XML schema is quite tedious. Therefore, the Web Beans RI project will provide a tool which automatically generates the XML schema from compiled Java code."
+msgstr "Scrivere unoschema XML è abbastanza noiso. Quindi il progetto Web Beans RI fornirà uno strumento per generare automaticamente lo schema XML dal codice Java compilato."
+


Property changes on: doc/trunk/reference/it-IT/xml.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/ja-JP/Author_Group.po
===================================================================
--- doc/trunk/reference/ja-JP/Author_Group.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/Author_Group.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,60 @@
+# Language ja-JP translations for Introduction_to_Web_Beans package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Introduction_to_Web_Beans VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-04 23:18+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:4
+#, no-c-format
+msgid "<firstname>Gavin</firstname> <surname>King</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red Hat "
+"Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: author
+#: Author_Group.xml:12
+#, no-c-format
+msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:15
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) Reference Implementation lead </jobtitle> "
+"<orgname>Red Hat Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:21
+#, no-c-format
+msgid "<firstname>Nicola</firstname> <surname>Benaglia</surname>"
+msgstr ""
+
+#. Tag: contrib
+#: Author_Group.xml:24 Author_Group.xml:29
+#, no-c-format
+msgid "Italian Translation"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:26
+#, no-c-format
+msgid "<firstname>Francesco</firstname> <surname>Milesi</surname>"
+msgstr ""

Copied: doc/trunk/reference/ja-JP/Book_Info.po (from rev 638, doc/trunk/reference/ja-JP/modules/Book_Info.po)
===================================================================
--- doc/trunk/reference/ja-JP/Book_Info.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/Book_Info.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,28 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:29+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:4
+#, no-c-format
+msgid "Introduction to Web Beans"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:5
+#, no-c-format
+msgid ""
+"The new Java standard for dependency injection and contextual state "
+"management"
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/Book_Info.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/decorators.po (from rev 638, doc/trunk/reference/ja-JP/modules/decorators.po)
===================================================================
--- doc/trunk/reference/ja-JP/decorators.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/decorators.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,243 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: decorators.xml:4
+#, no-c-format
+msgid "Decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:6
+#, no-c-format
+msgid ""
+"Interceptors are a powerful way to capture and separate concerns which are "
+"<emphasis>orthogonal</emphasis> to the type system. Any interceptor is able "
+"to intercept invocations of any Java type. This makes them perfect for "
+"solving technical concerns such as transaction management and security. "
+"However, by nature, interceptors are unaware of the actual semantics of the "
+"events they intercept. Thus, interceptors aren't an appropriate tool for "
+"separating business-related concerns."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:14
+#, no-c-format
+msgid ""
+"The reverse is true of <emphasis>decorators</emphasis>. A decorator "
+"intercepts invocations only for a certain Java interface, and is therefore "
+"aware of all the semantics attached to that interface. This makes decorators "
+"a perfect tool for modeling some kinds of business concerns. It also means "
+"that a decorator doesn't have the generality of an interceptor. Decorators "
+"aren't able to solve technical concerns that cut across many disparate types."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:22
+#, no-c-format
+msgid "Suppose we have an interface that represents accounts:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:24
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Account {\n"
+"    public BigDecimal getBalance();\n"
+"    public User getOwner();\n"
+"    public void withdraw(BigDecimal amount);\n"
+"    public void deposit(BigDecimal amount);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:26
+#, no-c-format
+msgid ""
+"Several different Web Beans in our system implement the <literal>Account</"
+"literal> interface. However, we have a common legal requirement that, for "
+"any kind of account, large transactions must be recorded by the system in a "
+"special log. This is a perfect job for a decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:32
+#, no-c-format
+msgid ""
+"A decorator is a simple Web Bean that implements the type it decorates and "
+"is annotated <literal>@Decorator</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Decorator\n"
+"public abstract class LargeTransactionDecorator \n"
+"        implements Account {\n"
+"    \n"
+"    @Decorates Account account;\n"
+"    \n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    public void withdraw(BigDecimal amount) {\n"
+"        account.withdraw(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedWithdrawl(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"    public void deposit(BigDecimal amount);\n"
+"        account.deposit(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedDeposit(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:37
+#, no-c-format
+msgid ""
+"Unlike other simple Web Beans, a decorator may be an abstract class. If "
+"there's nothing special the decorator needs to do for a particular method of "
+"the decorated interface, you don't need to implement that method."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:43
+#, no-c-format
+msgid "Delegate attributes"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:45
+#, no-c-format
+msgid ""
+"All decorators have a <emphasis>delegate attribute</emphasis>. The type and "
+"binding types of the delegate attribute determine which Web Beans the "
+"decorator is bound to. The delegate attribute type must implement or extend "
+"all interfaces implemented by the decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:50
+#, no-c-format
+msgid ""
+"This delegate attribute specifies that the decorator is bound to all Web "
+"Beans that implement <literal>Account</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:53
+#, no-c-format
+msgid "<![CDATA[@Decorates Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:55
+#, no-c-format
+msgid ""
+"A delegate attribute may specify a binding annotation. Then the decorator "
+"will only be bound to Web Beans with the same binding."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:58
+#, no-c-format
+msgid "<![CDATA[@Decorates @Foreign Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:60
+#, no-c-format
+msgid "A decorator is bound to any Web Bean which:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:64
+#, no-c-format
+msgid "has the type of the delegate attribute as an API type, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:67
+#, no-c-format
+msgid "has all binding types that are declared by the delegate attribute."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:71
+#, no-c-format
+msgid ""
+"The decorator may invoke the delegate attribute, which has much the same "
+"effect as calling <literal>InvocationContext.proceed()</literal> from an "
+"interceptor."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:78
+#, no-c-format
+msgid "Enabling decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:80
+#, no-c-format
+msgid ""
+"We need to <emphasis>enable</emphasis> our decorator in <literal>web-beans."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:83
+#, no-c-format
+msgid ""
+"<![CDATA[<Decorators>\n"
+"    <myapp:LargeTransactionDecorator/>\n"
+"</Decorators>]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:85
+#, no-c-format
+msgid ""
+"This declaration serves the same purpose for decorators that the "
+"<literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:90
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all decorators in our system, "
+"ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:94
+#, no-c-format
+msgid "it lets us enable or disable decorator classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:98
+#, no-c-format
+msgid ""
+"Interceptors for a method are called before decorators that apply to that "
+"method."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/decorators.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/ee.po (from rev 638, doc/trunk/reference/ja-JP/modules/ee.po)
===================================================================
--- doc/trunk/reference/ja-JP/ee.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/ee.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,329 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ee.xml:4
+#, no-c-format
+msgid "Java EE integration"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is fully integrated into the Java EE environment. Web Beans have "
+"access to Java EE resources and JPA persistence contexts. They may be used "
+"in Unified EL expressions in JSF and JSP pages. They may even be injected "
+"into some objects, such as Servlets and Message-Driven Beans, which are not "
+"Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:12
+#, no-c-format
+msgid "Injecting Java EE resources into a Web Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:14
+#, no-c-format
+msgid ""
+"All simple and enterprise Web Beans may take advantage of Java EE dependency "
+"injection using <literal>@Resource</literal>, <literal>@EJB</literal> and "
+"<literal>@PersistenceContext</literal>. We've already seen a couple of "
+"examples of this, though we didn't pay much attention at the time:"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:19
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"    \n"
+"    ...\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:23
+#, no-c-format
+msgid ""
+"The Java EE <literal>@PostConstruct</literal> and <literal>@PreDestroy</"
+"literal> callbacks are also supported for all simple and enterprise Web "
+"Beans. The <literal>@PostConstruct</literal> method is called after "
+"<emphasis>all</emphasis> injection has been performed."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:28
+#, no-c-format
+msgid ""
+"There is one restriction to be aware of here: <literal>@PersistenceContext"
+"(type=EXTENDED)</literal> is not supported for simple Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:35
+#, no-c-format
+msgid "Calling a Web Bean from a Servlet"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:37
+#, no-c-format
+msgid ""
+"It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject the "
+"Web Bean using Web Beans field or initializer method injection."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:40
+#, no-c-format
+msgid ""
+"public class Login extends HttpServlet {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @Current Login login;\n"
+"\n"
+"    @Override\n"
+"    public void service(HttpServletRequest request, HttpServletResponse "
+"response)\n"
+"        throws ServletException, IOException {\n"
+"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
+"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
+"        login.login();\n"
+"        if ( login.isLoggedIn() ) {\n"
+"            response.sendRedirect(\"/home.jsp\");\n"
+"        }\n"
+"        else {\n"
+"            response.sendRedirect(\"/loginError.jsp\");\n"
+"        }\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:42
+#, no-c-format
+msgid ""
+"The Web Beans client proxy takes care of routing method invocations from the "
+"Servlet to the correct instances of <literal>Credentials</literal> and "
+"<literal>Login</literal> for the current request and HTTP session."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:49
+#, no-c-format
+msgid "Calling a Web Bean from a Message-Driven Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:51
+#, no-c-format
+msgid ""
+"Web Beans injection applies to all EJBs, even when they aren't under the "
+"control of the Web Bean manager (if they were obtained by direct JNDI "
+"lookup, or injection using <literal>@EJB</literal>, for example. In "
+"particular, you can use Web Beans injection in Message-Driven Beans, which "
+"are not considered Web Beans because you can't inject them."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:57
+#, no-c-format
+msgid ""
+"You can even use Web Beans interceptor bindings for Message-Driven Beans."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:59
+#, no-c-format
+msgid ""
+"@Transactional @MessageDriven\n"
+"public class ProcessOrder implements MessageListener {\n"
+"\n"
+"    @Current Inventory inventory;\n"
+"    @PersistenceContext EntityManager em;\n"
+"\n"
+"    public void onMessage(Message message) {\n"
+"        ...\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:61
+#, no-c-format
+msgid ""
+"Thus, receiving messages is super-easy in a Web Beans environment. But "
+"beware that there is no session or conversation context available when a "
+"message is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</"
+"literal> and <literal>@ApplicationScoped</literal> Web Beans are available."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:66
+#, no-c-format
+msgid "It's also easy to send messages using Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:71
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:73
+#, no-c-format
+msgid ""
+"Sending messages using JMS can be quite complex, because of the number of "
+"different objects you need to deal with. For queues we have <literal>Queue</"
+"literal>, <literal>QueueConnectionFactory</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> and "
+"<literal>QueueSender</literal>. For topics we have <literal>Topic</literal>, "
+"<literal>TopicConnectionFactory</literal>, <literal>TopicConnection</"
+"literal>, <literal>TopicSession</literal> and <literal>TopicPublisher</"
+"literal>. Each of these objects has its own lifecycle and threading model "
+"that we need to worry about."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:82
+#, no-c-format
+msgid ""
+"Web Beans takes care of all this for us. All we need to do is declare the "
+"queue or topic in <literal>web-beans.xml</literal>, specifying an associated "
+"binding type and connection factory."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:86
+#, no-c-format
+msgid ""
+"<![CDATA[<Queue>\n"
+"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
+"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:OrderProcessor/>    \n"
+"</Queue>]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:88
+#, no-c-format
+msgid ""
+"<![CDATA[<Topic>\n"
+"    <destination>java:comp/env/jms/StockPrices</destination>\n"
+"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:StockPrices/>    \n"
+"</Topic>]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:90
+#, no-c-format
+msgid ""
+"Now we can just inject the <literal>Queue</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> or "
+"<literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, "
+"<literal>TopicConnection</literal>, <literal>TopicSession</literal> or "
+"<literal>TopicPublisher</literal> for a topic."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:96
+#, no-c-format
+msgid ""
+"@OrderProcessor QueueSender orderSender;\n"
+"@OrderProcessor QueueSession orderSession;\n"
+"\n"
+"public void sendMessage() {\n"
+"    MapMessage msg = orderSession.createMapMessage();\n"
+"    ...\n"
+"    orderSender.send(msg);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:98
+#, no-c-format
+msgid ""
+"@StockPrices TopicPublisher pricePublisher;\n"
+"@StockPrices TopicSession priceSession;\n"
+"\n"
+"public void sendMessage(String price) {\n"
+"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:100
+#, no-c-format
+msgid ""
+"The lifecycle of the injected JMS objects is completely controlled by the "
+"Web Bean manager."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:106
+#, no-c-format
+msgid "Packaging and deployment"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:108
+#, no-c-format
+msgid ""
+"Web Beans doesn't define any special deployment archive. You can package Web "
+"Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the "
+"application classpath. However, each archive that contains Web Beans must "
+"include a file named <literal>web-beans.xml</literal> in the <literal>META-"
+"INF</literal> or <literal>WEB-INF</literal> directory. The file may be "
+"empty. Web Beans deployed in archives that do not have a <literal>web-beans."
+"xml</literal> file will not be available for use in the application."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:116
+#, no-c-format
+msgid ""
+"For Java SE execution, Web Beans may be deployed in any location in which "
+"EJBs may be deployed for execution by the embeddable EJB Lite container. "
+"Again, each location must contain a <literal>web-beans.xml</literal> file."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/ee.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/events.po (from rev 638, doc/trunk/reference/ja-JP/modules/events.po)
===================================================================
--- doc/trunk/reference/ja-JP/events.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/events.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,649 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: events.xml:4
+#, no-c-format
+msgid "Events"
+msgstr ""
+
+#. Tag: para
+#: events.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans event notification facility allows Web Beans to interact in a "
+"totally decoupled manner. Event <emphasis>producers</emphasis> raise events "
+"that are then delivered to event <emphasis>observers</emphasis> by the Web "
+"Bean manager. This basic schema might sound like the familiar observer/"
+"observable pattern, but there are a couple of twists:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:14
+#, no-c-format
+msgid ""
+"not only are event producers decoupled from observers; observers are "
+"completely decoupled from producers,"
+msgstr ""
+
+#. Tag: para
+#: events.xml:18
+#, no-c-format
+msgid ""
+"observers can specify a combination of \"selectors\" to narrow the set of "
+"event notifications they will receive, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:22
+#, no-c-format
+msgid ""
+"observers can be notified immediately, or can specify that delivery of the "
+"event should be delayed until the end of the current transaction"
+msgstr ""
+
+#. Tag: title
+#: events.xml:28
+#, no-c-format
+msgid "Event observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:30
+#, no-c-format
+msgid ""
+"An <emphasis>observer method</emphasis> is a method of a Web Bean with a "
+"parameter annotated <literal>@Observes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:33
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:35
+#, no-c-format
+msgid ""
+"The annotated parameter is called the <emphasis>event parameter</emphasis>. "
+"The type of the event parameter is the observed <emphasis>event type</"
+"emphasis>. Observer methods may also specify \"selectors\", which are just "
+"instances of Web Beans binding types. When a binding type is used as an "
+"event selector, it is called an <emphasis>event binding type</emphasis>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Updated { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:43
+#, no-c-format
+msgid ""
+"We specify the event bindings of the observer method by annotating the event "
+"parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:46 events.xml:190
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:48
+#, no-c-format
+msgid ""
+"An observer method need not specify any event bindings&#151;in this case it "
+"is interested in <emphasis>all</emphasis> events of a particular type. If it "
+"does specify event bindings, it is only interested in events which also have "
+"those event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:53
+#, no-c-format
+msgid ""
+"The observer method may have additional parameters, which are injected "
+"according to the usual Web Beans method parameter injection semantics:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document, User user) { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:61
+#, no-c-format
+msgid "Event producers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:63
+#, no-c-format
+msgid ""
+"The event producer may obtain an <emphasis>event notifier</emphasis> object "
+"by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:66
+#, no-c-format
+msgid "<![CDATA[@Observable Event<Document> documentEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:68
+#, no-c-format
+msgid ""
+"The <literal>@Observable</literal> annotation implicitly defines a Web Bean "
+"with scope <literal>@Dependent</literal> and deployment type "
+"<literal>@Standard</literal>, with an implementation provided by the Web "
+"Bean manager."
+msgstr ""
+
+#. Tag: para
+#: events.xml:72
+#, no-c-format
+msgid ""
+"A producer raises events by calling the <literal>fire()</literal> method of "
+"the <literal>Event</literal> interface, passing an <emphasis>event object</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:75
+#, no-c-format
+msgid "<![CDATA[documentEvent.fire(document);]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:77
+#, no-c-format
+msgid ""
+"An event object may be an instance of any Java class that has no type "
+"variables or wildcard type parameters. The event will be delivered to every "
+"observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:83 events.xml:107 events.xml:126
+#, no-c-format
+msgid "has an event parameter to which the event object is assignable, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:86
+#, no-c-format
+msgid "specifies no event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:90
+#, no-c-format
+msgid ""
+"The Web Bean manager simply calls all the observer methods, passing the "
+"event object as the value of the event parameter. If any observer method "
+"throws an exception, the Web Bean manager stops calling observer methods, "
+"and the exception is rethrown by the <literal>fire()</literal> method."
+msgstr ""
+
+#. Tag: para
+#: events.xml:95
+#, no-c-format
+msgid ""
+"To specify a \"selector\", the event producer may pass an instance of the "
+"event binding type to the <literal>fire()</literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>()"
+"{} );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:100
+#, no-c-format
+msgid ""
+"The helper class <literal>AnnotationLiteral</literal> makes it possible to "
+"instantiate binding types inline, since this is otherwise difficult to do in "
+"Java."
+msgstr ""
+
+#. Tag: para
+#: events.xml:103
+#, no-c-format
+msgid "The event will be delivered to every observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:110
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal>."
+msgstr ""
+
+#. Tag: para
+#: events.xml:115
+#, no-c-format
+msgid ""
+"Alternatively, event bindings may be specified by annotating the event "
+"notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:118
+#, no-c-format
+msgid "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:120
+#, no-c-format
+msgid ""
+"Then every event fired via this instance of <literal>Event</literal> has the "
+"annotated event binding. The event will be delivered to every observer "
+"method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:129
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal> or the annotated event bindings "
+"of the event notifier injection point."
+msgstr ""
+
+#. Tag: title
+#: events.xml:138
+#, no-c-format
+msgid "Registering observers dynamically"
+msgstr ""
+
+#. Tag: para
+#: events.xml:140
+#, no-c-format
+msgid ""
+"It's often useful to register an event observer dynamically. The application "
+"may implement the <literal>Observer</literal> interface and register an "
+"instance with an event notifier by calling the <literal>observe()</literal> "
+"method."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:144
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } } );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:146
+#, no-c-format
+msgid ""
+"Event binding types may be specified by the event notifier injection point "
+"or by passing event binding type instances to the <literal>observe()</"
+"literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:149
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } }, \n"
+"                                                new "
+"AnnotationLiteral<Updated>(){} );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:154
+#, no-c-format
+msgid "Event bindings with members"
+msgstr ""
+
+#. Tag: para
+#: events.xml:156
+#, no-c-format
+msgid "An event binding type may have annotation members:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:158
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Role {\n"
+"    RoleType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:160
+#, no-c-format
+msgid ""
+"The member value is used to narrow the messages delivered to the observer:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:164
+#, no-c-format
+msgid ""
+"Event binding type members may be specified statically by the event "
+"producer, via annotations at the event notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:167
+#, no-c-format
+msgid "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:169
+#, no-c-format
+msgid ""
+"Alternatively, the value of the event binding type member may be determined "
+"dynamically by the event producer. We start by writing an abstract subclass "
+"of <literal>AnnotationLiteral</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:172
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class RoleBinding \n"
+"    extends AnnotationLiteral<Role> \n"
+"    implements Role {}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:174
+#, no-c-format
+msgid ""
+"The event producer passes an instance of this class to <literal>fire()</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value"
+"() { return user.getRole(); } } );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:181
+#, no-c-format
+msgid "Multiple event bindings"
+msgstr ""
+
+#. Tag: para
+#: events.xml:183
+#, no-c-format
+msgid "Event binding types may be combined, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:185
+#, no-c-format
+msgid ""
+"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
+"...\n"
+"if (document.isBlog()) blogEvent.fire(document, new "
+"AnnotationLiteral<Updated>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:187
+#, no-c-format
+msgid ""
+"When this event occurs, all of the following observer methods will be "
+"notified:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:189
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:191
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:192
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }}}]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:197
+#, no-c-format
+msgid "Transactional observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:199
+#, no-c-format
+msgid ""
+"Transactional observers receive their event notifications during the before "
+"or after completion phase of the transaction in which the event was raised. "
+"For example, the following observer method needs to refresh a query result "
+"set that is cached in the application context, but only when transactions "
+"that update the <literal>Category</literal> tree succeed:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:205
+#, no-c-format
+msgid ""
+"<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes "
+"CategoryUpdateEvent event) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:207
+#, no-c-format
+msgid "There are three kinds of transactional observers:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:211
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionSuccess</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction "
+"completes successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:216
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionFailure</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction fails "
+"to complete successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:221
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionCompletion</literal> observers are called during "
+"the after completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:225
+#, no-c-format
+msgid ""
+"<literal>@BeforeTransactionCompletion</literal> observers are called during "
+"the before completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:230
+#, no-c-format
+msgid ""
+"Transactional observers are very important in a stateful object model like "
+"Web Beans, because state is often held for longer than a single atomic "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: events.xml:233
+#, no-c-format
+msgid ""
+"Imagine that we have cached a JPA query result set in the application scope:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:235
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    List<Product> products;\n"
+"\n"
+"    @Produces @Catalog \n"
+"    List<Product> getCatalog() {\n"
+"        if (products==null) {\n"
+"            products = em.createQuery(\"select p from Product p where p."
+"deleted = false\")\n"
+"                .getResultList();\n"
+"        }\n"
+"        return products;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:237
+#, no-c-format
+msgid ""
+"From time to time, a <literal>Product</literal> is created or deleted. When "
+"this occurs, we need to refresh the <literal>Product</literal> catalog. But "
+"we should wait until <emphasis>after</emphasis> the transaction completes "
+"successfully before performing this refresh!"
+msgstr ""
+
+#. Tag: para
+#: events.xml:242
+#, no-c-format
+msgid ""
+"The Web Bean that creates and deletes <literal>Product</literal>s could "
+"raise events, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:245
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class ProductManager {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    @Observable Event<Product> productEvent;\n"
+"\n"
+"    public void delete(Product product) {\n"
+"        em.delete(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
+"    }\n"
+"    \n"
+"    public void persist(Product product) {\n"
+"        em.persist(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:247
+#, no-c-format
+msgid ""
+"And now <literal>Catalog</literal> can observe the events after successful "
+"completion of the transaction:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:250
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Created Product "
+"product) {\n"
+"        products.add(product);\n"
+"    }\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product "
+"product) {\n"
+"        products.remove(product);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/events.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/example.po (from rev 638, doc/trunk/reference/ja-JP/modules/example.po)
===================================================================
--- doc/trunk/reference/ja-JP/example.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/example.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,172 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example.xml:4
+#, no-c-format
+msgid "JSF web application example"
+msgstr ""
+
+#. Tag: para
+#: example.xml:6
+#, no-c-format
+msgid ""
+"Let's illustrate these ideas with a full example. We're going to implement "
+"user login/logout for an application that uses JSF. First, we'll define a "
+"Web Bean to hold the username and password entered during login:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:11
+#, no-c-format
+msgid ""
+"<![CDATA[@Named @RequestScoped\n"
+"public class Credentials {\n"
+"        \n"
+"    private String username;\n"
+"    private String password;\n"
+"    \n"
+"    public String getUsername() { return username; }\n"
+"    public void setUsername(String username) { this.username = username; }\n"
+"    \n"
+"    public String getPassword() { return password; }\n"
+"    public void setPassword(String password) { this.password = password; }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:13
+#, no-c-format
+msgid "This Web Bean is bound to the login prompt in the following JSF form:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:15
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form>\n"
+"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
+"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
+"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
+"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
+"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
+"    </h:panelGrid>\n"
+"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!"
+"login.loggedIn}\"/>\n"
+"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#"
+"{login.loggedIn}\"/>\n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:17
+#, no-c-format
+msgid ""
+"The actual work is done by a session scoped Web Bean that maintains "
+"information about the currently logged-in user and exposes the "
+"<literal>User</literal> entity to other Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"\n"
+"    private User user;\n"
+"    \n"
+"    public void login() {\n"
+"            \n"
+"        List<User> results = userDatabase.createQuery(\n"
+"           \"select u from User u where u.username=:username and u.password=:"
+"password\")\n"
+"           .setParameter(\"username\", credentials.getUsername())\n"
+"           .setParameter(\"password\", credentials.getPassword())\n"
+"           .getResultList();\n"
+"        \n"
+"        if ( !results.isEmpty() ) {\n"
+"           user = results.get(0);\n"
+"        }\n"
+"        \n"
+"    }\n"
+"    \n"
+"    public void logout() {\n"
+"        user = null;\n"
+"    }\n"
+"    \n"
+"    public boolean isLoggedIn() {\n"
+"       return user!=null;\n"
+"    }\n"
+"    \n"
+"    @Produces @LoggedIn User getCurrentUser() {\n"
+"        return user;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:23
+#, no-c-format
+msgid "Of course, <literal>@LoggedIn</literal> is a binding annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:25
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD})\n"
+"@BindingType\n"
+"public @interface LoggedIn {}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:27
+#, no-c-format
+msgid "Now, any other Web Bean can easily inject the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class DocumentEditor {\n"
+"\n"
+"    @Current Document document;\n"
+"    @LoggedIn User currentUser;\n"
+"    @PersistenceContext EntityManager docDatabase;\n"
+"    \n"
+"    public void save() {\n"
+"        document.setCreatedBy(currentUser);\n"
+"        docDatabase.persist(document);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:31
+#, no-c-format
+msgid ""
+"Hopefully, this example gives a flavor of the Web Bean programming model. In "
+"the next chapter, we'll explore Web Beans dependency injection in greater "
+"depth."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/example.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/extend.po (from rev 638, doc/trunk/reference/ja-JP/modules/extend.po)
===================================================================
--- doc/trunk/reference/ja-JP/extend.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/extend.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,252 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: extend.xml:4
+#, no-c-format
+msgid "Extending Web Beans"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is intended to be a platform for frameworks, extensions and "
+"integration with other technologies. Therefore, Web Beans exposes a set of "
+"SPIs for the use of developers of portable extensions to Web Beans. For "
+"example, the following kinds of extensions were envisaged by the designers "
+"of Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:14
+#, no-c-format
+msgid "integration with Business Process Management engines,"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:17
+#, no-c-format
+msgid ""
+"integration with third-party frameworks such as Spring, Seam, GWT or Wicket, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:21
+#, no-c-format
+msgid "new technology based upon the Web Beans programming model."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:25
+#, no-c-format
+msgid ""
+"The nerve center for extending Web Beans is the <literal>Manager</literal> "
+"object."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:29
+#, no-c-format
+msgid "The <literal>Manager</literal> object"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:31
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> interface lets us register and obtain Web "
+"Beans, interceptors, decorators, observers and contexts programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:34
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Manager\n"
+"{\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... "
+"bindings);\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public Set<Bean<?>> resolveByName(String name);\n"
+"\n"
+"   public Object getInstanceByName(String name);\n"
+"\n"
+"   public <T> T getInstance(Bean<T> bean);\n"
+"\n"
+"   public void fireEvent(Object event, Annotation... bindings);\n"
+"\n"
+"   public Context getContext(Class<? extends Annotation> scopeType);\n"
+"\n"
+"   public Manager addContext(Context context);\n"
+"\n"
+"   public Manager addBean(Bean<?> bean);\n"
+"\n"
+"   public Manager addInterceptor(Interceptor interceptor);\n"
+"\n"
+"   public Manager addDecorator(Decorator decorator);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer, Class<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer,\n"
+"         TypeLiteral<T> eventType, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... "
+"bindings);\n"
+"\n"
+"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
+"         Annotation... interceptorBindings);\n"
+"\n"
+"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
+"         Annotation... bindings);\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:36
+#, no-c-format
+msgid "We can obtain an instance of <literal>Manager</literal> via injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:38
+#, no-c-format
+msgid "@Current Manager manager"
+msgstr ""
+
+#. Tag: title
+#: extend.xml:43
+#, no-c-format
+msgid "The <literal>Bean</literal> class"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:45
+#, no-c-format
+msgid ""
+"Instances of the abstract class <literal>Bean</literal> represent Web Beans. "
+"There is an instance of <literal>Bean</literal> registered with the "
+"<literal>Manager</literal> object for every Web Bean in the application."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:50
+#, no-c-format
+msgid ""
+"public abstract class Bean&lt;T&gt; {\n"
+"    \n"
+"    private final Manager manager;\n"
+"    \n"
+"    protected Bean(Manager manager) {\n"
+"        this.manager=manager;\n"
+"    }\n"
+"    \n"
+"    protected Manager getManager() {\n"
+"        return manager;\n"
+"    }\n"
+"    \n"
+"    public abstract Set&lt;Class&gt; getTypes();\n"
+"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
+"    public abstract String getName();\n"
+"    \n"
+"    public abstract boolean isSerializable();\n"
+"    public abstract boolean isNullable();\n"
+"\n"
+"    public abstract T create();\n"
+"    public abstract void destroy(T instance);\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:52
+#, no-c-format
+msgid ""
+"It's possible to extend the <literal>Bean</literal> class and register "
+"instances by calling <literal>Manager.addBean()</literal> to provide support "
+"for new kinds of Web Beans, beyond those defined by the Web Beans "
+"specification (simple and enterprise Web Beans, producer methods and JMS "
+"endpoints). For example, we could use the <literal>Bean</literal> class to "
+"allow objects managed by another framework to be injected into Web Beans."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:60
+#, no-c-format
+msgid ""
+"There are two subclasses of <literal>Bean</literal> defined by the Web Beans "
+"specification: <literal>Interceptor</literal> and <literal>Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:67
+#, no-c-format
+msgid "The <literal>Context</literal> interface"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Context</literal> interface supports addition of new scopes to "
+"Web Beans, or extension of the built-in scopes to new environments."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:72
+#, no-c-format
+msgid ""
+"public interface Context {\n"
+"    \n"
+"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    \n"
+"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
+"    \n"
+"    boolean isActive();\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:74
+#, no-c-format
+msgid ""
+"For example, we might implement <literal>Context</literal> to add a business "
+"process scope to Web Beans, or to add support for the conversation scope to "
+"an application that uses Wicket."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/extend.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/injection.po (from rev 638, doc/trunk/reference/ja-JP/modules/injection.po)
===================================================================
--- doc/trunk/reference/ja-JP/injection.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/injection.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1226 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: injection.xml:4
+#, no-c-format
+msgid "Dependency injection"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:6
+#, no-c-format
+msgid "Web Beans supports three primary mechanisms for dependency injection:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:8
+#, no-c-format
+msgid "Constructor parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:10
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private final ShoppingCart cart;\n"
+"    \n"
+"    @Initializer\n"
+"    public Checkout(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:12
+#, no-c-format
+msgid "<emphasis>Initializer</emphasis> method parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:14
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private ShoppingCart cart;\n"
+"\n"
+"    @Initializer \n"
+"    void setShoppingCart(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:16
+#, no-c-format
+msgid "And direct field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:18
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"\n"
+"    private @Current ShoppingCart cart;\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:20
+#, no-c-format
+msgid ""
+"Dependency injection always occurs when the Web Bean instance is first "
+"instantiated."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:25
+#, no-c-format
+msgid ""
+"First, the Web Bean manager calls the Web Bean constructor, to obtain an "
+"instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:29
+#, no-c-format
+msgid ""
+"Next, the Web Bean manager initializes the values of all injected fields of "
+"the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:33
+#, no-c-format
+msgid "Next, the Web Bean manager calls all initializer methods of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:37
+#, no-c-format
+msgid ""
+"Finally, the <literal>@PostConstruct</literal> method of the Web Bean, if "
+"any, is called."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:42
+#, no-c-format
+msgid ""
+"Constructor parameter injection is not supported for EJB beans, since the "
+"EJB is instantiated by the EJB container, not the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:45
+#, no-c-format
+msgid ""
+"Parameters of constructors and initializer methods need not be explicitly "
+"annotated when the default binding type <literal>@Current</literal> applies. "
+"Injected fields, however, <emphasis>must</emphasis> specify a binding type, "
+"even when the default binding type applies. If the field does not specify a "
+"binding type, it will not be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:51
+#, no-c-format
+msgid "Producer methods also support parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:53
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
+"    return new Checkout(cart);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:55
+#, no-c-format
+msgid ""
+"Finally, observer methods (which we'll meet in <xref linkend=\"events\"/>), "
+"disposal methods and destructor methods all support parameter injection."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:58
+#, no-c-format
+msgid ""
+"The Web Beans specification defines a procedure, called the "
+"<emphasis>typesafe resolution algorithm</emphasis>, that the Web Bean "
+"manager follows when identifying the Web Bean to inject to an injection "
+"point. This algorithm looks complex at first, but once you understand it, "
+"it's really quite intuitive. Typesafe resolution is performed at system "
+"initialization time, which means that the manager will inform the user "
+"immediately if a Web Bean's dependencies cannot be satisfied, by throwing a "
+"<literal>UnsatisfiedDependencyException</literal> or "
+"<literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:67
+#, no-c-format
+msgid ""
+"The purpose of this algorithm is to allow multiple Web Beans to implement "
+"the same API type and either:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:72
+#, no-c-format
+msgid ""
+"allow the client to select which implementation it requires using "
+"<emphasis>binding annotations</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:77
+#, no-c-format
+msgid ""
+"allow the application deployer to select which implementation is appropriate "
+"for a particular deployment, without changes to the client, by enabling or "
+"disabling <emphasis>deployment types</emphasis>, or"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:82
+#, no-c-format
+msgid ""
+"allow one implementation of an API to override another implementation of the "
+"same API at deployment time, without changes to the client, using "
+"<emphasis>deployment type precedence</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:88
+#, no-c-format
+msgid ""
+"Let's explore how the Web Beans manager determines a Web Bean to be injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:91
+#, no-c-format
+msgid "Binding annotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:93
+#, no-c-format
+msgid ""
+"If we have more than one Web Bean that implements a particular API type, the "
+"injection point can specify exactly which Web Bean should be injected using "
+"a binding annotation. For example, there might be two implementations of "
+"<literal>PaymentProcessor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque\n"
+"public class ChequePaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:100
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCreditCard\n"
+"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:102
+#, no-c-format
+msgid ""
+"Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</"
+"literal> are binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:105
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCheque {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:107
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCreditCard {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:109
+#, no-c-format
+msgid ""
+"A client Web Bean developer uses the binding annotation to specify exactly "
+"which Web Bean should be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:112
+#, no-c-format
+msgid "Using field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:114
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
+"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:116
+#, no-c-format
+msgid "Using initializer method injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:118
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public void setPaymentProcessors(@PayByCheque PaymentProcessor "
+"chequePaymentProcessor, \n"
+"                                 @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:120
+#, no-c-format
+msgid "Or using constructor injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:122
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:125
+#, no-c-format
+msgid "Binding annotations with members"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:127
+#, no-c-format
+msgid "Binding annotations may have members:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:129
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayBy {\n"
+"    PaymentType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:131
+#, no-c-format
+msgid "In which case, the member value is significant:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:133
+#, no-c-format
+msgid ""
+"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
+"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:135
+#, no-c-format
+msgid ""
+"You can tell the Web Bean manager to ignore a member of a binding annotation "
+"type by annotating the member <literal>@NonBinding</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:141
+#, no-c-format
+msgid "Combinations of binding annnotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:143
+#, no-c-format
+msgid "An injection point may even specify multiple binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:145
+#, no-c-format
+msgid ""
+"<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:147
+#, no-c-format
+msgid ""
+"In this case, only a Web Bean which has <emphasis>both</emphasis> binding "
+"annotations would be eligible for injection."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:153
+#, no-c-format
+msgid "Binding annotations and producer methods"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:155
+#, no-c-format
+msgid "Even producer methods may specify binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces \n"
+"@Asynchronous @PayByCheque \n"
+"PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor "
+"processor) {\n"
+"    return new AsynchronousPaymentProcessor(processor);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:162
+#, no-c-format
+msgid "The default binding type"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:164
+#, no-c-format
+msgid ""
+"Web Beans defines a binding type <literal>@Current</literal> that is the "
+"default binding type for any injection point or Web Bean that does not "
+"explicitly specify a binding type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:168
+#, no-c-format
+msgid ""
+"There are two common circumstances in which it is necessary to explicitly "
+"specify <literal>@Current</literal>:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:173
+#, no-c-format
+msgid ""
+"on a field, in order to declare it as an injected field with the default "
+"binding type, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:177
+#, no-c-format
+msgid ""
+"on a Web Bean which has another binding type in addition to the default "
+"binding type."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:187
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:189
+#, no-c-format
+msgid ""
+"All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment "
+"type identifies a set of Web Beans that should be conditionally installed in "
+"some deployments of the system."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:193
+#, no-c-format
+msgid ""
+"For example, we could define a deployment type named <literal>@Mock</"
+"literal>, which would identify Web Beans that should only be installed when "
+"the system executes inside an integration testing environment:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:197
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"  @Target({TYPE, METHOD})\n"
+"  @DeploymentType\n"
+"  public @interface Mock {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:199
+#, no-c-format
+msgid ""
+"Suppose we had some Web Bean that interacted with an external system to "
+"process payments:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:202
+#, no-c-format
+msgid ""
+"<![CDATA[public class ExternalPaymentProcessor {\n"
+"        \n"
+"    public void process(Payment p) {\n"
+"        ...\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:204
+#, no-c-format
+msgid ""
+"Since this Web Bean does not explicitly specify a deployment type, it has "
+"the default deployment type <literal>@Production</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:207
+#, no-c-format
+msgid ""
+"For integration or unit testing, the external system is slow or unavailable. "
+"So we would create a mock object:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:210
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock \n"
+"public class MockPaymentProcessor implements PaymentProcessor {\n"
+"\n"
+"    @Override\n"
+"    public void process(Payment p) {\n"
+"        p.setSuccessful(true);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:212
+#, no-c-format
+msgid ""
+"But how does the Web Bean manager determine which implementation to use in a "
+"particular deployment?"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:216
+#, no-c-format
+msgid "Enabling deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:218
+#, no-c-format
+msgid ""
+"Web Beans defines two built-in deployment types: <literal>@Production</"
+"literal> and <literal>@Standard</literal>. By default, only Web Beans with "
+"the built-in deployment types are enabled when the system is deployed. We "
+"can identify additional deployment types to be enabled in a particular "
+"deployment by listing them in <literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:224
+#, no-c-format
+msgid ""
+"Going back to our example, when we deploy our integration tests, we want all "
+"our <literal>@Mock</literal> objects to be installed:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:227
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans>\n"
+"    <Deploy>\n"
+"        <Standard/>\n"
+"        <Production/>\n"
+"        <test:Mock/>\n"
+"    </Deploy>\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:229
+#, no-c-format
+msgid ""
+"Now the Web Bean manager will identify and install all Web Beans annotated "
+"<literal>@Production</literal>, <literal>@Standard</literal> or "
+"<literal>@Mock</literal> at deployment time."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:233
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Standard</literal> is used only for certain "
+"special Web Beans defined by the Web Beans specification. We can't use it "
+"for our own Web Beans, and we can't disable it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:237
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Production</literal> is the default deployment "
+"type for Web Beans which don't explicitly declare a deployment type, and may "
+"be disabled."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:244
+#, no-c-format
+msgid "Deployment type precedence"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:246
+#, no-c-format
+msgid ""
+"If you've been paying attention, you're probably wondering how the Web Bean "
+"manager decides which implementation&#151;<literal>ExternalPaymentProcessor</"
+"literal> or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider "
+"what happens when the manager encounters this injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:251
+#, no-c-format
+msgid "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:253
+#, no-c-format
+msgid ""
+"There are now two Web Beans which satisfy the <literal>PaymentProcessor</"
+"literal> contract. Of course, we can't use a binding annotation to "
+"disambiguate, since binding annotations are hard-coded into the source at "
+"the injection point, and we want the manager to be able to decide at "
+"deployment time!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:258
+#, no-c-format
+msgid ""
+"The solution to this problem is that each deployment type has a different "
+"<emphasis>precedence</emphasis>. The precedence of the deployment types is "
+"determined by the order in which they appear in <literal>web-beans.xml</"
+"literal>. In our example, <literal>@Mock</literal> appears later than "
+"<literal>@Production</literal> so it has a higher precedence."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:264
+#, no-c-format
+msgid ""
+"Whenever the manager discovers that more than one Web Bean could satisfy the "
+"contract (API type plus binding annotations) specified by an injection "
+"point, it considers the relative precedence of the Web Beans. If one has a "
+"higher precedence than the others, it chooses the higher precedence Web Bean "
+"to inject. So, in our example, the Web Bean manager will inject "
+"<literal>MockPaymentProcessor</literal> when executing in our integration "
+"testing environment (which is exactly what we want)."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:271
+#, no-c-format
+msgid ""
+"It's interesting to compare this facility to today's popular manager "
+"architectures. Various \"lightweight\" containers also allow conditional "
+"deployment of classes that exist in the classpath, but the classes that are "
+"to be deployed must be explicity, individually, listed in configuration code "
+"or in some XML configuration file. Web Beans does support Web Bean "
+"definition and configuration via XML, but in the common case where no "
+"complex configuration is required, deployment types allow a whole set of Web "
+"Beans to be enabled with a single line of XML. Meanwhile, a developer "
+"browsing the code can easily identify what deployment scenarios the Web Bean "
+"will be used in."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:284
+#, no-c-format
+msgid "Example deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:286
+#, no-c-format
+msgid ""
+"Deployment types are useful for all kinds of things, here's some examples:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:290
+#, no-c-format
+msgid ""
+"<literal>@Mock</literal> and <literal>@Staging</literal> deployment types "
+"for testing"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:294
+#, no-c-format
+msgid "<literal>@AustralianTaxLaw</literal> for site-specific Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:297
+#, no-c-format
+msgid ""
+"<literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party "
+"frameworks which build on Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:301
+#, no-c-format
+msgid ""
+"<literal>@Standard</literal> for standard Web Beans defined by the Web Beans "
+"specification"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:306
+#, no-c-format
+msgid "I'm sure you can think of more applications..."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:313
+#, no-c-format
+msgid "Fixing unsatisfied dependencies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:315
+#, no-c-format
+msgid ""
+"The typesafe resolution algorithm fails when, after considering the binding "
+"annotations and and deployment types of all Web Beans that implement the API "
+"type of an injection point, the Web Bean manager is unable to identify "
+"exactly one Web Bean to inject."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:320
+#, no-c-format
+msgid ""
+"It's usually easy to fix an <literal>UnsatisfiedDependencyException</"
+"literal> or <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:323
+#, no-c-format
+msgid ""
+"To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide "
+"a Web Bean which implements the API type and has the binding types of the "
+"injection point&#151;or enable the deployment type of a Web Bean that "
+"already implements the API type and has the binding types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:328
+#, no-c-format
+msgid ""
+"To fix an <literal>AmbiguousDependencyException</literal>, introduce a "
+"binding type to distinguish between the two implementations of the API type, "
+"or change the deployment type of one of the implementations so that the Web "
+"Bean manager can use deployment type precedence to choose between them. An "
+"<literal>AmbiguousDependencyException</literal> can only occur if two Web "
+"Beans share a binding type and have exactly the same deployment type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:335
+#, no-c-format
+msgid ""
+"There's one more issue you need to be aware of when using dependency "
+"injection in Web Beans."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:341
+#, no-c-format
+msgid "Client proxies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:343
+#, no-c-format
+msgid ""
+"Clients of an injected Web Bean do not usually hold a direct reference to a "
+"Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:346
+#, no-c-format
+msgid ""
+"Imagine that a Web Bean bound to the application scope held a direct "
+"reference to a Web Bean bound to the request scope. The application scoped "
+"Web Bean is shared between many different requests. However, each request "
+"should see a different instance of the request scoped Web bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:351
+#, no-c-format
+msgid ""
+"Now imagine that a Web Bean bound to the session scope held a direct "
+"reference to a Web Bean bound to the application scope. From time to time, "
+"the session context is serialized to disk in order to use memory more "
+"efficiently. However, the application scoped Web Bean instance should not be "
+"serialized along with the session scoped Web Bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:357
+#, no-c-format
+msgid ""
+"Therefore, unless a Web Bean has the default scope <literal>@Dependent</"
+"literal>, the Web Bean manager must indirect all injected references to the "
+"Web Bean through a proxy object. This <emphasis>client proxy</emphasis> is "
+"responsible for ensuring that the Web Bean instance that receives a method "
+"invocation is the instance that is associated with the current context. The "
+"client proxy also allows Web Beans bound to contexts such as the session "
+"context to be serialized to disk without recursively serializing other "
+"injected Web Beans."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:365
+#, no-c-format
+msgid ""
+"Unfortunately, due to limitations of the Java language, some Java types "
+"cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager "
+"throws an <literal>UnproxyableDependencyException</literal> if the type of "
+"an injection point cannot be proxied."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:370
+#, no-c-format
+msgid "The following Java types cannot be proxied by the Web Bean manager:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:374
+#, no-c-format
+msgid ""
+"classes which are declared <literal>final</literal> or have a "
+"<literal>final</literal> method,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:378
+#, no-c-format
+msgid "classes which have no non-private constructor with no parameters, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:381
+#, no-c-format
+msgid "arrays and primitive types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:385
+#, no-c-format
+msgid ""
+"It's usually very easy to fix an <literal>UnproxyableDependencyException</"
+"literal>. Simply add a constructor with no parameters to the injected class, "
+"introduce an interface, or change the scope of the injected Web Bean to "
+"<literal>@Dependent</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:392
+#, no-c-format
+msgid "Obtaining a Web Bean by programatic lookup"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:394
+#, no-c-format
+msgid ""
+"The application may obtain an instance of the interface <literal>Manager</"
+"literal> by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:397
+#, no-c-format
+msgid "<![CDATA[@Current Manager manager;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:399
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> object provides a set of methods for "
+"obtaining a Web Bean instance programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:402
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:404
+#, no-c-format
+msgid ""
+"Binding annotations may be specified by subclassing the helper class "
+"<literal>AnnotationLiteral</literal>, since it is otherwise difficult to "
+"instantiate an annotation type in Java."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:408
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new "
+"AnnotationLiteral<CreditCard>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:410
+#, no-c-format
+msgid ""
+"If the binding type has an annotation member, we can't use an anonymous "
+"subclass of <literal>AnnotationLiteral</literal>&#151;instead we'll need to "
+"create a named subclass:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:413
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class CreditCardBinding \n"
+"    extends AnnotationLiteral<CreditCard> \n"
+"    implements CreditCard {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:415
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new CreditCardBinding() { \n"
+"                                                   public void value() "
+"{ return paymentType; } \n"
+"                                               } );]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:419
+#, no-c-format
+msgid ""
+"Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> "
+"and <literal>@PersistenceContext</literal>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:422
+#, no-c-format
+msgid ""
+"Enterprise Web Beans support all the lifecycle callbacks defined by the EJB "
+"specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:426
+#, no-c-format
+msgid ""
+"Simple Web Beans support only the <literal>@PostConstruct</literal> and "
+"<literal>@PreDestroy</literal> callbacks."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:429
+#, no-c-format
+msgid ""
+"Both enterprise and simple Web Beans support the use of <literal>@Resource</"
+"literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal> "
+"for injection of Java EE resources, EJBs and JPA persistence contexts, "
+"respectively. Simple Web Beans do not support the use of "
+"<literal>@PersistenceContext(type=EXTENDED)</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:434
+#, no-c-format
+msgid ""
+"The <literal>@PostConstruct</literal> callback always occurs after all "
+"dependencies have been injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:440
+#, no-c-format
+msgid "The <literal>InjectionPoint</literal> object"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:442
+#, no-c-format
+msgid ""
+"There are certain kinds of dependent objects&#151;Web Beans with scope "
+"<literal>@Dependent</literal>&#151;that need to know something about the "
+"object or injection point into which they are injected in order to be able "
+"to do what they do. For example:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:448
+#, no-c-format
+msgid ""
+"The log category for a <literal>Logger</literal> depends upon the class of "
+"the object that owns it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:452
+#, no-c-format
+msgid ""
+"Injection of a HTTP parameter or header value depends upon what parameter or "
+"header name was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:456
+#, no-c-format
+msgid ""
+"Injection of the result of an EL expression evaluation depends upon the "
+"expression that was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:461
+#, no-c-format
+msgid ""
+"A Web Bean with scope <literal>@Dependent</literal> may inject an instance "
+"of <literal>InjectionPoint</literal> and access metadata relating to the "
+"injection point to which it belongs."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:465
+#, no-c-format
+msgid ""
+"Let's look at an example. The following code is verbose, and vulnerable to "
+"refactoring problems:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:468
+#, no-c-format
+msgid "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:470
+#, no-c-format
+msgid ""
+"This clever little producer method lets you inject a JDK <literal>Logger</"
+"literal> without explicitly specifying the log category:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:473
+#, no-c-format
+msgid ""
+"<![CDATA[class LogFactory {\n"
+"\n"
+"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
+"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass()."
+"getName()); \n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:475
+#, no-c-format
+msgid "We can now write:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:477
+#, no-c-format
+msgid "<![CDATA[@Current Logger log;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:479
+#, no-c-format
+msgid ""
+"Not convinced? Then here's a second example. To inject HTTP parameters, we "
+"need to define a binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:482
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"public @interface HttpParam {\n"
+"   @NonBinding public String value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:484
+#, no-c-format
+msgid "We would use this binding type at injection points as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:486
+#, no-c-format
+msgid ""
+"<![CDATA[@HttpParam(\"username\") String username;\n"
+"@HttpParam(\"password\") String password;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:488
+#, no-c-format
+msgid "The following producer method does the work:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:490
+#, no-c-format
+msgid ""
+"<![CDATA[class HttpParams\n"
+"\n"
+"   @Produces @HttpParam(\"\")\n"
+"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
+"      return request.getParameter(ip.getAnnotation(HttpParam.class).value"
+"());\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:492
+#, no-c-format
+msgid ""
+"(Note that the <literal>value()</literal> member of the <literal>HttpParam</"
+"literal> annotation is ignored by the Web Bean manager since it is annotated "
+"<literal>@NonBinding.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:495
+#, no-c-format
+msgid ""
+"The Web Bean manager provides a built-in Web Bean that implements the "
+"<literal>InjectionPoint</literal> interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:498
+#, no-c-format
+msgid ""
+"<![CDATA[public interface InjectionPoint { \n"
+"   public Object getInstance(); \n"
+"   public Bean<?> getBean(); \n"
+"   public Member getMember(): \n"
+"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
+"   public Set<T extends Annotation> getAnnotations(); \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/injection.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/interceptors.po (from rev 638, doc/trunk/reference/ja-JP/modules/interceptors.po)
===================================================================
--- doc/trunk/reference/ja-JP/interceptors.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/interceptors.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,572 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: interceptors.xml:4
+#, no-c-format
+msgid "Interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:6
+#, no-c-format
+msgid ""
+"Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending "
+"the functionality in two directions:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:11
+#, no-c-format
+msgid "Any Web Bean may have interceptors, not just session beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:14
+#, no-c-format
+msgid ""
+"Web Beans features a more sophisticated annotation-based approach to binding "
+"interceptors to Web Beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:22
+#, no-c-format
+msgid "The EJB specification defines two kinds of interception points:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:26
+#, no-c-format
+msgid "business method interception, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:29
+#, no-c-format
+msgid "lifecycle callback interception."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:33
+#, no-c-format
+msgid ""
+"A <emphasis>business method interceptor</emphasis> applies to invocations of "
+"methods of the Web Bean by clients of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:36
+#, no-c-format
+msgid ""
+"<![CDATA[public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:38
+#, no-c-format
+msgid ""
+"A <emphasis>lifecycle callback interceptor</emphasis> applies to invocations "
+"of lifecycle callbacks by the container:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[public class DependencyInjectionInterceptor {\n"
+"    @PostConstruct public void injectDependencies(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:43
+#, no-c-format
+msgid ""
+"An interceptor class may intercept both lifecycle callbacks and business "
+"methods."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:49
+#, no-c-format
+msgid "Interceptor bindings"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:51
+#, no-c-format
+msgid ""
+"Suppose we want to declare that some of our Web Beans are transactional. The "
+"first thing we need is an <emphasis>interceptor binding annotation</"
+"emphasis> to specify exactly which Web Beans we're interested in:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:55
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:57
+#, no-c-format
+msgid ""
+"Now we can easily specify that our <literal>ShoppingCart</literal> is a "
+"transactional object:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:60
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:62
+#, no-c-format
+msgid "Or, if we prefer, we can specify that just one method is transactional:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:69
+#, no-c-format
+msgid "Implementing interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:71
+#, no-c-format
+msgid ""
+"That's great, but somewhere along the line we're going to have to actually "
+"implement the interceptor that provides this transaction management aspect. "
+"All we need to do is create a standard EJB interceptor, and annotate it "
+"<literal>@Interceptor</literal> and <literal>@Transactional</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:78
+#, no-c-format
+msgid ""
+"All Web Beans interceptors are simple Web Beans, and can take advantage of "
+"dependency injection and contextual lifecycle management."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:83
+#, no-c-format
+msgid "Multiple interceptors may use the same interceptor binding type."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:88
+#, no-c-format
+msgid "Enabling interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:90
+#, no-c-format
+msgid ""
+"Finally, we need to <emphasis>enable</emphasis> our interceptor in "
+"<literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:93
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:95
+#, no-c-format
+msgid "Whoah! Why the angle bracket stew?"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:97
+#, no-c-format
+msgid "Well, the XML declaration solves two problems:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:101
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all the interceptors in our "
+"system, ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:105
+#, no-c-format
+msgid "it lets us enable or disable interceptor classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:109
+#, no-c-format
+msgid ""
+"For example, we could specify that our security interceptor runs before our "
+"<literal>TransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:112
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <sx:SecurityInterceptor/>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:114
+#, no-c-format
+msgid "Or we could turn them both off in our test environment!"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:119
+#, no-c-format
+msgid "Interceptor bindings with members"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:121
+#, no-c-format
+msgid ""
+"Suppose we want to add some extra information to our "
+"<literal>@Transactional</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:124
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {\n"
+"    boolean requiresNew() default false;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:126
+#, no-c-format
+msgid ""
+"Web Beans will use the value of <literal>requiresNew</literal> to choose "
+"between two different interceptors, <literal>TransactionInterceptor</"
+"literal> and <literal>RequiresNewTransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
+"public class RequiresNewTransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:132
+#, no-c-format
+msgid ""
+"Now we can use <literal>RequiresNewTransactionInterceptor</literal> like "
+"this:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:134
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:136
+#, no-c-format
+msgid ""
+"But what if we only have one interceptor and we want the manager to ignore "
+"the value of <literal>requiresNew</literal> when binding interceptors? We "
+"can use the <literal>@NonBinding</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:140
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Secure {\n"
+"    @NonBinding String[] rolesAllowed() default {};\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:145
+#, no-c-format
+msgid "Multiple interceptor binding annotations"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:147
+#, no-c-format
+msgid ""
+"Usually we use combinations of interceptor bindings types to bind multiple "
+"interceptors to a Web Bean. For example, the following declaration would be "
+"used to bind <literal>TransactionInterceptor</literal> and "
+"<literal>SecurityInterceptor</literal> to the same Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:152
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:154
+#, no-c-format
+msgid ""
+"However, in very complex cases, an interceptor itself may specify some "
+"combination of interceptor binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure @Interceptor\n"
+"public class TransactionalSecureInterceptor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:159
+#, no-c-format
+msgid ""
+"Then this interceptor could be bound to the <literal>checkout()</literal> "
+"method using any one of the following combinations:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:164
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure\n"
+"public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:166
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactionl\n"
+"public class ShoppingCart {\n"
+"    @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:168
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:173
+#, no-c-format
+msgid "Interceptor binding type inheritance"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:175
+#, no-c-format
+msgid ""
+"One limitation of the Java language support for annotations is the lack of "
+"annotation inheritance. Really, annotations should have reuse built in, to "
+"allow this kind of thing to work:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:179
+#, no-c-format
+msgid ""
+"<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:181
+#, no-c-format
+msgid ""
+"Well, fortunately, Web Beans works around this missing feature of Java. We "
+"may annotate one interceptor binding type with other interceptor binding "
+"types. The interceptor bindings are transitive&#151;any Web Bean with the "
+"first interceptor binding inherits the interceptor bindings declared as meta-"
+"annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:186
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"@InterceptorBindingType\n"
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"public @interface Action { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:188
+#, no-c-format
+msgid ""
+"Any Web Bean annotated <literal>@Action</literal> will be bound to both "
+"<literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</"
+"literal>. (And even <literal>TransactionalSecureInterceptor</literal>, if it "
+"exists.)"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:195
+#, no-c-format
+msgid "Use of <literal>@Interceptors</literal>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:197
+#, no-c-format
+msgid ""
+"The <literal>@Interceptors</literal> annotation defined by the EJB "
+"specification is supported for both enterprise and simple Web Beans, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:200
+#, no-c-format
+msgid ""
+"<![CDATA[@Interceptors({TransactionInterceptor.class, SecurityInterceptor."
+"class})\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:202
+#, no-c-format
+msgid "However, this approach suffers the following drawbacks:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:206
+#, no-c-format
+msgid "the interceptor implementation is hardcoded in business code,"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:209
+#, no-c-format
+msgid "interceptors may not be easily disabled at deployment time, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:212
+#, no-c-format
+msgid ""
+"the interceptor ordering is non-global&#151;it is determined by the order in "
+"which interceptors are listed at the class level."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:217
+#, no-c-format
+msgid ""
+"Therefore, we recommend the use of Web Beans-style interceptor bindings."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/interceptors.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/intro.po (from rev 638, doc/trunk/reference/ja-JP/modules/intro.po)
===================================================================
--- doc/trunk/reference/ja-JP/intro.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/intro.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1075 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: intro.xml:4
+#, no-c-format
+msgid "Getting started with Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:6
+#, no-c-format
+msgid ""
+"So you're already keen to get started writing your first Web Bean? Or "
+"perhaps you're skeptical, wondering what kinds of hoops the Web Beans "
+"specification will make you jump through! The good news is that you've "
+"probably already written and used hundreds, perhaps thousands of Web Beans. "
+"You might not even remember the first Web Bean you wrote."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:13
+#, no-c-format
+msgid "Your first Web Bean"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:15
+#, no-c-format
+msgid ""
+"With certain, very special exceptions, every Java class with a constructor "
+"that accepts no parameters is a Web Bean. That includes every JavaBean. "
+"Furthermore, every EJB 3-style session bean is a Web Bean. Sure, the "
+"JavaBeans and EJBs you've been writing every day have not been able to take "
+"advantage of the new services defined by the Web Beans specification, but "
+"you'll be able to use every one of them as Web Beans&#151;injecting them "
+"into other Web Beans, configuring them via the Web Beans XML configuration "
+"facility, even adding interceptors and decorators to them&#151;without "
+"touching your existing code."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:25
+#, no-c-format
+msgid ""
+"Suppose that we have two existing Java classes, that we've been using for "
+"years in various applications. The first class parses a string into a list "
+"of sentences:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class SentenceParser {\n"
+"    public List<String> parse(String text) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:31
+#, no-c-format
+msgid ""
+"The second existing class is a stateless session bean front-end for an "
+"external system that is able to translate sentences from one language to "
+"another:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class SentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:37
+#, no-c-format
+msgid "Where <literal>Translator</literal> is the local interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[@Local\n"
+"public interface Translator {\n"
+"    public String translate(String sentence);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:41
+#, no-c-format
+msgid ""
+"Unfortunately, we don't have a preexisting class that translates whole text "
+"documents. So let's write a Web Bean that does this job:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator {\n"
+"    \n"
+"    private SentenceParser sentenceParser;\n"
+"    private Translator sentenceTranslator;\n"
+"    \n"
+"    @Initializer\n"
+"    TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) {\n"
+"        this.sentenceParser = sentenceParser;\n"
+"        this.sentenceTranslator = sentenceTranslator;\n"
+"    }\n"
+"    \n"
+"    public String translate(String text) {\n"
+"        StringBuilder sb = new StringBuilder();\n"
+"        for (String sentence: sentenceParser.parse(text)) {\n"
+"            sb.append(sentenceTranslator.translate(sentence));\n"
+"        }\n"
+"        return sb.toString();\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:46
+#, no-c-format
+msgid ""
+"We may obtain an instance of <literal>TextTranslator</literal> by injecting "
+"it into a Web Bean, Servlet or EJB:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:49
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public setTextTranslator(TextTranslator textTranslator) {\n"
+"    this.textTranslator = textTranslator;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:51
+#, no-c-format
+msgid ""
+"Alternatively, we may obtain an instance by directly calling a method of the "
+"Web Bean manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:54
+#, no-c-format
+msgid ""
+"<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:56
+#, no-c-format
+msgid ""
+"But wait: <literal>TextTranslator</literal> does not have a constructor with "
+"no parameters! Is it still a Web Bean? Well, a class that does not have a "
+"constructor with no parameters can still be a Web Bean if it has a "
+"constructor annotated <literal>@Initializer</literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:61
+#, no-c-format
+msgid ""
+"As you've guessed, the <literal>@Initializer</literal> annotation has "
+"something to do with dependency injection! <literal>@Initializer</literal> "
+"may be applied to a constructor or method of a Web Bean, and tells the Web "
+"Bean manager to call that constructor or method when instantiating the Web "
+"Bean. The Web Bean manager will inject other Web Beans to the parameters of "
+"the constructor or method."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:68
+#, no-c-format
+msgid ""
+"At system initialization time, the Web Bean manager must validate that "
+"exactly one Web Bean exists which satisfies each injection point. In our "
+"example, if no implementation of <literal>Translator</literal> "
+"available&#151;if the <literal>SentenceTranslator</literal> EJB was not "
+"deployed&#151;the Web Bean manager would throw an "
+"<literal>UnsatisfiedDependencyException</literal>. If more than one "
+"implementation of <literal>Translator</literal> was available, the Web Bean "
+"manager would throw an <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:80
+#, no-c-format
+msgid "What is a Web Bean?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:82
+#, no-c-format
+msgid "So what, <emphasis>exactly</emphasis>, is a Web Bean?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:84
+#, no-c-format
+msgid ""
+"A Web Bean is an application class that contains business logic. A Web Bean "
+"may be called directly from Java code, or it may be invoked via Unified EL. "
+"A Web Bean may access transactional resources. Dependencies between Web "
+"Beans are managed automatically by the Web Bean manager. Most Web Beans are "
+"<emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The "
+"lifecycle of a Web Bean is always managed by the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:91
+#, no-c-format
+msgid ""
+"Let's back up a second. What does it really mean to be \"contextual\"? Since "
+"Web Beans may be stateful, it matters <emphasis>which</emphasis> bean "
+"instance I have. Unlike a stateless component model (for example, stateless "
+"session beans) or a singleton component model (such as servlets, or "
+"singleton beans), different clients of a Web Bean see the Web Bean in "
+"different states. The client-visible state depends upon which instance of "
+"the Web Bean the client has a reference to."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:98
+#, no-c-format
+msgid ""
+"However, like a stateless or singleton model, but <emphasis>unlike</"
+"emphasis> stateful session beans, the client does not control the lifecycle "
+"of the instance by explicitly creating and destroying it. Instead, the "
+"<emphasis>scope</emphasis> of the Web Bean determines:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:105
+#, no-c-format
+msgid "the lifecycle of each instance of the Web Bean and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:108
+#, no-c-format
+msgid ""
+"which clients share a reference to a particular instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:113
+#, no-c-format
+msgid ""
+"For a given thread in a Web Beans application, there may be an "
+"<emphasis>active context</emphasis> associated with the scope of the Web "
+"Bean. This context may be unique to the thread (for example, if the Web Bean "
+"is request scoped), or it may be shared with certain other threads (for "
+"example, if the Web Bean is session scoped) or even all other threads (if it "
+"is application scoped)."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:119
+#, no-c-format
+msgid ""
+"Clients (for example, other Web Beans) executing in the same context will "
+"see the same instance of the Web Bean. But clients in a different context "
+"will see a different instance."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:123
+#, no-c-format
+msgid ""
+"One great advantage of the contextual model is that it allows stateful Web "
+"Beans to be treated like services! The client need not concern itself with "
+"managing the lifecycle of the Web Bean it is using, <emphasis>nor does it "
+"even need to know what that lifecyle is.</emphasis> Web Beans interact by "
+"passing messages, and the Web Bean implementations define the lifecycle of "
+"their own state. The Web Beans are loosely coupled because:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:132
+#, no-c-format
+msgid "they interact via well-defined public APIs"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:135
+#, no-c-format
+msgid "their lifecycles are completely decoupled"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:139
+#, no-c-format
+msgid ""
+"We can replace one Web Bean with a different Web Bean that implements the "
+"same API and has a different lifecycle (a different scope) without affecting "
+"the other Web Bean implementation. In fact, Web Beans defines a "
+"sophisticated facility for overriding Web Bean implementations at deployment "
+"time, as we will see in <xref linkend=\"deploymenttypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:145
+#, no-c-format
+msgid ""
+"Note that not all clients of a Web Bean are Web Beans. Other objects such as "
+"Servlets or Message-Driven Beans&#151;which are by nature not injectable, "
+"contextual objects&#151;may also obtain references to Web Beans by injection."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:149
+#, no-c-format
+msgid "Enough hand-waving. More formally, according to the spec:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:153
+#, no-c-format
+msgid "A Web Bean comprises:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:156
+#, no-c-format
+msgid "A (nonempty) set of API types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:157
+#, no-c-format
+msgid "A (nonempty) set of binding annotation types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:158
+#, no-c-format
+msgid "A scope"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:159
+#, no-c-format
+msgid "A deployment type"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:160
+#, no-c-format
+msgid "Optionally, a Web Bean name"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:161
+#, no-c-format
+msgid "A set of interceptor binding types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:162
+#, no-c-format
+msgid "A Web Bean implementation"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:167
+#, no-c-format
+msgid "Let's see what some of these terms mean, to the Web Bean developer."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:170
+#, no-c-format
+msgid "API types, binding types and dependency injection"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:172
+#, no-c-format
+msgid ""
+"Web Beans usually acquire references to other Web Beans via dependency "
+"injection. Any injected attribute specifies a \"contract\" that must be "
+"satisfied by the Web Bean to be injected. The contract is:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:177
+#, no-c-format
+msgid "an API type, together with"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:178
+#, no-c-format
+msgid "a set of binding types."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:181
+#, no-c-format
+msgid ""
+"An API is a user-defined class or interface. (If the Web Bean is an EJB "
+"session bean, the API type is the <literal>@Local</literal> interface or "
+"bean-class local view). A binding type represents some client-visible "
+"semantic that is satisfied by some implementations of the API and not by "
+"others."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:186
+#, no-c-format
+msgid ""
+"Binding types are represented by user-defined annotations that are "
+"themselves annotated <literal>@BindingType</literal>. For example, the "
+"following injection point has API type <literal>PaymentProcessor</literal> "
+"and binding type <literal>@CreditCard</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:191
+#, no-c-format
+msgid "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:193
+#, no-c-format
+msgid ""
+"If no binding type is explicitly specified at an injection point, the "
+"default binding type <literal>@Current</literal> is assumed."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:196
+#, no-c-format
+msgid ""
+"For each injection point, the Web Bean manager searches for a Web Bean which "
+"satisfies the contract (implements the API, and has all the binding types), "
+"and injects that Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:200
+#, no-c-format
+msgid ""
+"The following Web Bean has the binding type <literal>@CreditCard</literal> "
+"and implements the API type <literal>PaymentProcessor</literal>. It could "
+"therefore be injected to the example injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:204
+#, no-c-format
+msgid ""
+"<![CDATA[@CreditCard\n"
+"public class CreditCardPaymentProcessor \n"
+"    implements PaymentProcessor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:206
+#, no-c-format
+msgid ""
+"If a Web Bean does not explicitly specify a set of binding types, it has "
+"exactly one binding type: the default binding type <literal>@Current</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:209
+#, no-c-format
+msgid ""
+"Web Beans defines a sophisticated but intuitive <emphasis>resolution "
+"algorithm</emphasis> that helps the container decide what to do if there is "
+"more than one Web Bean that satisfies a particular contract. We'll get into "
+"the details in <xref linkend=\"injection\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:217
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:219
+#, no-c-format
+msgid ""
+"<emphasis>Deployment types</emphasis> let us classify our Web Beans by "
+"deployment scenario. A deployment type is an annotation that represents a "
+"particular deployment scenario, for example <literal>@Mock</literal>, "
+"<literal>@Staging</literal> or <literal>@AustralianTaxLaw</literal>. We "
+"apply the annotation to Web Beans which should be deployed in that scenario. "
+"A deployment type allows a whole set of Web Beans to be conditionally "
+"deployed, with a just single line of configuration."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:226
+#, no-c-format
+msgid ""
+"Many Web Beans just use the default deployment type <literal>@Production</"
+"literal>, in which case no deployment type need be explicitly specified. All "
+"three Web Bean in our example have the deployment type <literal>@Production</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:230
+#, no-c-format
+msgid ""
+"In a testing environment, we might want to replace the "
+"<literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:233
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock\n"
+"public class MockSentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) {\n"
+"        return \"Lorem ipsum dolor sit amet\";\n"
+"    }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:236
+#, no-c-format
+msgid ""
+"We would enable the deployment type <literal>@Mock</literal> in our testing "
+"environment, to indicate that <literal>MockSentenceTranslator</literal> and "
+"any other Web Bean annotated <literal>@Mock</literal> should be used."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:240
+#, no-c-format
+msgid ""
+"We'll talk more about this unique and powerful feature in <xref linkend="
+"\"deploymenttypes\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:246
+#, no-c-format
+msgid "Scope"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:248
+#, no-c-format
+msgid ""
+"The <emphasis>scope</emphasis> defines the lifecycle and visibility of "
+"instances of the Web Bean. The Web Beans context model is extensible, "
+"accommodating arbitrary scopes. However, certain important scopes are built-"
+"in to the specification, and provided by the Web Bean manager. A scope is "
+"represented by an annotation type."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:254
+#, no-c-format
+msgid ""
+"For example, any web application may have <emphasis>session scoped</"
+"emphasis> Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:257
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:259
+#, no-c-format
+msgid ""
+"An instance of a session scoped Web Bean is bound to a user session and is "
+"shared by all requests that execute in the context of that session."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:262
+#, no-c-format
+msgid ""
+"By default, Web Beans belong to a special scope called the "
+"<emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are "
+"pure dependent objects of the object into which they are injected, and their "
+"lifecycle is bound to the lifecycle of that object."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:267
+#, no-c-format
+msgid "We'll talk more about scopes in <xref linkend=\"scopescontexts\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:272
+#, no-c-format
+msgid "Web Bean names and Unified EL"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:274
+#, no-c-format
+msgid ""
+"A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in "
+"Unified EL expressions. It's easy to specify the name of a Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:278
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named(\"cart\")\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:280
+#, no-c-format
+msgid "Now we can easily use the Web Bean in any JSF or JSP page:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:282
+#, no-c-format
+msgid ""
+"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
+"    ....\n"
+"</h:dataTable>]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:284
+#, no-c-format
+msgid ""
+"It's even easier to just let the name be defaulted by the Web Bean manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:287
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:289
+#, no-c-format
+msgid ""
+"In this case, the name defaults to <literal>shoppingCart</literal>&#151;the "
+"unqualified class name, with the first character changed to lowercase."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:295
+#, no-c-format
+msgid "Interceptor binding types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:297
+#, no-c-format
+msgid ""
+"Web Beans supports the interceptor functionality defined by EJB 3, not only "
+"for EJB beans, but also for plain Java classes. In addition, Web Beans "
+"provides a new approach to binding interceptors to EJB beans and other Web "
+"Beans."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:302
+#, no-c-format
+msgid ""
+"It remains possible to directly specify the interceptor class via use of the "
+"<literal>@Interceptors</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:305
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped \n"
+"@Interceptors(TransactionInterceptor.class)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:307
+#, no-c-format
+msgid ""
+"However, it is more elegant, and better practice, to indirect the "
+"interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:313
+#, no-c-format
+msgid ""
+"We'll discuss Web Beans interceptors and decorators in <xref linkend="
+"\"interceptors\"/> and <xref linkend=\"decorators\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:321
+#, no-c-format
+msgid "What kinds of objects can be Web Beans?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:323
+#, no-c-format
+msgid ""
+"We've already seen that JavaBeans, EJBs and some other Java classes can be "
+"Web Beans. But exactly what kinds of objects are Web Beans?"
+msgstr ""
+
+#. Tag: title
+#: intro.xml:327
+#, no-c-format
+msgid "Simple Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:329
+#, no-c-format
+msgid ""
+"The Web Beans specification says that a concrete Java class is a "
+"<emphasis>simple</emphasis> Web Bean if:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:334
+#, no-c-format
+msgid ""
+"it is not an EE container-managed component, like an EJB, a Servlet or a JPA "
+"entity,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:338
+#, no-c-format
+msgid "it is not a non-static static inner class,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:341
+#, no-c-format
+msgid "it is not a parameterized type, and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:344
+#, no-c-format
+msgid ""
+"it has a constructor with no parameters, or a constructor annotated "
+"<literal>@Initializer</literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:349
+#, no-c-format
+msgid "Thus, almost every JavaBean is a simple Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:351
+#, no-c-format
+msgid ""
+"Every interface implemented directly or indirectly by a simple Web Bean is "
+"an API type of the simple Web Bean. The class and its superclasses are also "
+"API types."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:358
+#, no-c-format
+msgid "Enterprise Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:360
+#, no-c-format
+msgid ""
+"The specification says that all EJB 3-style session and singleton beans are "
+"<emphasis>enterprise</emphasis> Web Beans. Message driven beans are not Web "
+"Beans&#151;since they are not intended to be injected into other "
+"objects&#151;but they can take advantage of most of the functionality of Web "
+"Beans, including dependency injection and interceptors."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:366
+#, no-c-format
+msgid ""
+"Every local interface of an enterprise Web Bean that does not have a "
+"wildcard type parameter or type variable, and every one of its "
+"superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean "
+"has a bean class local view, the bean class, and every one of its "
+"superclasses, is also an API type."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:372
+#, no-c-format
+msgid ""
+"Stateful session beans should declare a remove method with no parameters or "
+"a remove method annotated <literal>@Destructor</literal>. The Web Bean "
+"manager calls this method to destroy the stateful session bean instance at "
+"the end of its lifecycle. This method is called the <emphasis>destructor</"
+"emphasis> method of the enterprise Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:378
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful @SessionScoped\n"
+"public class ShoppingCart {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:380
+#, no-c-format
+msgid ""
+"So when should we use an enterprise Web Bean instead of a simple Web Bean? "
+"Well, whenever we need the advanced enterprise services offered by EJB, such "
+"as:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:387
+#, no-c-format
+msgid "method-level transaction management and security,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:390
+#, no-c-format
+msgid "concurrency management,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:393
+#, no-c-format
+msgid ""
+"instance-level passivation for stateful session beans and instance-pooling "
+"for stateless session beans,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:397
+#, no-c-format
+msgid "remote and web service invocation, and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:400
+#, no-c-format
+msgid "timers and asynchronous methods,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:404
+#, no-c-format
+msgid ""
+"we should use an enterprise Web Bean. When we don't need any of these "
+"things, a simple Web Bean will serve just fine."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:407
+#, no-c-format
+msgid ""
+"Many Web Beans (including any session or application scoped Web Bean) are "
+"available for concurrent access. Therefore, the concurrency management "
+"provided by EJB 3.1 is especially useful. Most session and application "
+"scoped Web Beans should be EJBs."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:412
+#, no-c-format
+msgid ""
+"Web Beans which hold references to heavy-weight resources, or hold a lot of "
+"internal state benefit from the advanced container-managed lifecycle defined "
+"by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/"
+"<literal>@Singleton</literal> model, with its support for passivation and "
+"instance pooling."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:417
+#, no-c-format
+msgid ""
+"Finally, it's usually obvious when method-level transaction management, "
+"method-level security, timers, remote methods or asynchronous methods are "
+"needed."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:420
+#, no-c-format
+msgid ""
+"It's usually easy to start with simple Web Bean, and then turn it into an "
+"EJB, just by adding an annotation: <literal>@Stateless</literal>, "
+"<literal>@Stateful</literal> or <literal>@Singleton</literal>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:427
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:429
+#, no-c-format
+msgid ""
+"A <emphasis>producer method</emphasis> is a method that is called by the Web "
+"Bean manager to obtain an instance of the Web Bean when no instance exists "
+"in the current context. A producer method lets the application take full "
+"control of the instantiation process, instead of leaving instantiation to "
+"the Web Bean manager. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:435
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"\n"
+"    private Random random = new Random( System.currentTimeMillis() );\n"
+"    \n"
+"    @Produces @Random int next() {\n"
+"        return random.nextInt(100);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:437
+#, no-c-format
+msgid ""
+"The result of a producer method is injected just like any other Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:439
+#, no-c-format
+msgid "<![CDATA[@Random int randomNumber]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:441
+#, no-c-format
+msgid ""
+"The method return type and all interfaces it extends/implements directly or "
+"indirectly are API types of the producer method. If the return type is a "
+"class, all superclasses are also API types."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:445
+#, no-c-format
+msgid "Some producer methods return objects that require explicit destruction:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:447
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
+"    return createConnection( user.getId(), user.getPassword() );\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:449
+#, no-c-format
+msgid ""
+"These producer methods may define matching <emphasis>disposal methods</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:451
+#, no-c-format
+msgid ""
+"<![CDATA[void close(@Disposes Connection connection) {\n"
+"    connection.close();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:453
+#, no-c-format
+msgid ""
+"This disposal method is called automatically by the Web Bean manager at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:456
+#, no-c-format
+msgid ""
+"We'll talk much more about producer methods in <xref linkend="
+"\"producermethods\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:461
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:463
+#, no-c-format
+msgid ""
+"Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the "
+"developer from the tedium of managing the lifecycles of all the various JMS "
+"objects required to send messages to queues and topics. We'll discuss JMS "
+"endpoints in <xref linkend=\"jms\"/>."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/intro.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/next.po (from rev 638, doc/trunk/reference/ja-JP/modules/next.po)
===================================================================
--- doc/trunk/reference/ja-JP/next.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/next.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,49 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: next.xml:4
+#, no-c-format
+msgid "Next steps"
+msgstr ""
+
+#. Tag: para
+#: next.xml:6
+#, no-c-format
+msgid ""
+"Because Web Beans is so new, there's not yet a lot of information available "
+"online."
+msgstr ""
+
+#. Tag: para
+#: next.xml:9
+#, no-c-format
+msgid ""
+"Of course, the Web Beans specification is the best source of more "
+"information about Web Beans. The spec is about 100 pages long, only twice "
+"the length of this article, and almost as readable. But, of course, it "
+"covers many details that we've skipped over. The spec is available from "
+"<literal>http://jcp.org/en/jsr/detail?id=299</literal>."
+msgstr ""
+
+#. Tag: para
+#: next.xml:15
+#, no-c-format
+msgid ""
+"The Web Beans Reference implementation is being developed at <literal>http://"
+"seamframework.org/WebBeans</literal>. The RI development team and the Web "
+"Beans spec lead blog at <literal>http://in.relation.to</literal>. This "
+"article is substantially based upon a series of blog entries published there."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/next.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/part1.po (from rev 638, doc/trunk/reference/ja-JP/modules/part1.po)
===================================================================
--- doc/trunk/reference/ja-JP/part1.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/part1.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,229 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part1.xml:5
+#, no-c-format
+msgid ""
+"The Web Beans (JSR-299) specification defines a set of services for the Java "
+"EE environment that makes applications much easier to develop. Web Beans "
+"layers an enhanced lifecycle and interaction model over existing Java "
+"component types including JavaBeans and Enterprise Java Beans. As a "
+"complement to the traditional Java EE programming model, the Web Beans "
+"services provide:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:14
+#, no-c-format
+msgid ""
+"an improved lifecycle for stateful components, bound to well-defined "
+"<emphasis>contexts</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:18
+#, no-c-format
+msgid "a typesafe approach to <emphasis>dependency injection</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:21
+#, no-c-format
+msgid ""
+"interaction via an <emphasis>event notification</emphasis> facility, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:25
+#, no-c-format
+msgid ""
+"a better approach to binding <emphasis>interceptors</emphasis> to "
+"components, along with a new kind of interceptor, called a "
+"<emphasis>decorator</emphasis>, that is more appropriate for use in solving "
+"business problems."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:32
+#, no-c-format
+msgid ""
+"Dependency injection, together with contextual lifecycle management, saves "
+"the user of an unfamiliar API from having to ask and answer the following "
+"questions:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:38
+#, no-c-format
+msgid "what is the lifecycle of this object?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:41
+#, no-c-format
+msgid "how many simultaneous clients can it have?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:44
+#, no-c-format
+msgid "is it multithreaded?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:47
+#, no-c-format
+msgid "where can I get one from?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:50
+#, no-c-format
+msgid "do I need to explicitly destroy it?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:53
+#, no-c-format
+msgid "where should I keep my reference to it when I'm not using it directly?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:57
+#, no-c-format
+msgid ""
+"how can I add an indirection layer, so that the implementation of this "
+"object can vary at deployment time?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:61
+#, no-c-format
+msgid "how should I go about sharing this object between other objects?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:65
+#, no-c-format
+msgid ""
+"A Web Bean specifies only the type and semantics of other Web Beans it "
+"depends upon. It need not be aware of the actual lifecycle, concrete "
+"implementation, threading model or other clients of any Web Bean it depends "
+"upon. Even better, the concrete implementation, lifecycle and threading "
+"model of a Web Bean it depends upon may vary according to the deployment "
+"scenario, without affecting any client."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:72
+#, no-c-format
+msgid ""
+"Events, interceptors and decorators enhance the <emphasis>loose-coupling</"
+"emphasis> that is inherent in this model:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:77
+#, no-c-format
+msgid ""
+"<emphasis>event notifications</emphasis> decouple event producers from event "
+"consumers,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:81
+#, no-c-format
+msgid ""
+"<emphasis>interceptors</emphasis> decouple technical concerns from business "
+"logic, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:85
+#, no-c-format
+msgid ""
+"<emphasis>decorators</emphasis> allow business concerns to be "
+"compartmentalized."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:90
+#, no-c-format
+msgid ""
+"Most importantly, Web Beans provides all these facilities in a "
+"<emphasis>typesafe</emphasis> way. Web Beans never uses string-based "
+"identifiers to determine how collaborating objects fit together. And XML, "
+"though it remains an option, is rarely used. Instead, Web Beans uses the "
+"typing information that is already available in the Java object model, "
+"together with a new pattern, called <emphasis>binding annotations</"
+"emphasis>, to wire together Web Beans, their dependencies, their "
+"interceptors and decorators and their event consumers."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:100
+#, no-c-format
+msgid ""
+"The Web Beans services are general and apply to the following types of "
+"components that exist in the Java EE environment:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:105
+#, no-c-format
+msgid "all JavaBeans,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:108
+#, no-c-format
+msgid "all EJBs, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:111
+#, no-c-format
+msgid "all Servlets."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:115
+#, no-c-format
+msgid ""
+"Web Beans even provides the necessary integration points so that other kinds "
+"of components defined by future Java EE specifications or by non-standard "
+"frameworks may be cleanly integrated with Web Beans, take advantage of the "
+"Web Beans services, and interact with any other kind of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:120
+#, no-c-format
+msgid ""
+"Web Beans was influenced by a number of existing Java frameworks, including "
+"Seam, Guice and Spring. However, Web Beans has its own very distinct "
+"character: more typesafe than Seam, more stateful and less XML-centric than "
+"Spring, more web and enterprise-application capable than Guice."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:125
+#, no-c-format
+msgid ""
+"Most importantly, Web Beans is a JCP standard that integrates cleanly with "
+"Java EE, and with any Java SE environment where embeddable EJB Lite is "
+"available."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/part1.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/part2.po (from rev 638, doc/trunk/reference/ja-JP/modules/part2.po)
===================================================================
--- doc/trunk/reference/ja-JP/part2.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/part2.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,102 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part2.xml:5
+#, no-c-format
+msgid ""
+"The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. "
+"We've already seen three means of achieving loose coupling:"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:10
+#, no-c-format
+msgid ""
+"<emphasis>deployment types</emphasis> enable deployment time polymorphism,"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:14
+#, no-c-format
+msgid "<emphasis>producer methods</emphasis> enable runtime polymorphism, and"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:18
+#, no-c-format
+msgid ""
+"<emphasis>contextual lifecycle management</emphasis> decouples Web Bean "
+"lifecycles."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:23
+#, no-c-format
+msgid ""
+"These techniques serve to enable loose coupling of client and server. The "
+"client is no longer tightly bound to an implementation of an API, nor is it "
+"required to manage the lifecycle of the server object. This approach lets "
+"<emphasis>stateful objects interact as if they were services</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:28
+#, no-c-format
+msgid ""
+"Loose coupling makes a system more <emphasis>dynamic</emphasis>. The system "
+"can respond to change in a well-defined manner. In the past, frameworks that "
+"attempted to provide the facilities listed above invariably did it by "
+"sacrificing type safety. Web Beans is the first technology that achieves "
+"this level of loose coupling in a typesafe way."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:34
+#, no-c-format
+msgid ""
+"Web Beans provides three extra important facilities that further the goal of "
+"loose coupling:"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:39
+#, no-c-format
+msgid ""
+"<emphasis>interceptors</emphasis> decouple technical concerns from business "
+"logic,"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:43
+#, no-c-format
+msgid ""
+"<emphasis>decorators</emphasis> may be used to decouple some business "
+"concerns, and"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:47
+#, no-c-format
+msgid ""
+"<emphasis>event notifications</emphasis> decouple event producers from event "
+"consumers."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:52
+#, no-c-format
+msgid "Let's explore interceptors first."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/part2.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/part3.po (from rev 638, doc/trunk/reference/ja-JP/modules/part3.po)
===================================================================
--- doc/trunk/reference/ja-JP/part3.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/part3.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,150 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part3.xml:5
+#, no-c-format
+msgid ""
+"The second major theme of Web Beans is <emphasis>strong typing</emphasis>. "
+"The information about the dependencies, interceptors and decorators of a Web "
+"Bean, and the information about event consumers for an event producer, is "
+"contained in typesafe Java constructs that may be validated by the compiler."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:10
+#, no-c-format
+msgid ""
+"You don't see string-based identifiers in Web Beans code, not because the "
+"framework is hiding them from you using clever defaulting rules&#151;so-"
+"called \"configuration by convention\"&#151;but because there are simply no "
+"strings there to begin with!"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:15
+#, no-c-format
+msgid ""
+"The obvious benefit of this approach is that <emphasis>any</emphasis> IDE "
+"can provide autocompletion, validation and refactoring without the need for "
+"special tooling. But there is a second, less-immediately-obvious, benefit. "
+"It turns out that when you start thinking of identifying objects, events or "
+"interceptors via annotations instead of names, you have an opportunity to "
+"lift the semantic level of your code."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:21
+#, no-c-format
+msgid ""
+"Web Beans encourages you develop annotations that model concepts, for "
+"example,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:26
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:29
+#, no-c-format
+msgid "<literal>@Mock</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:32
+#, no-c-format
+msgid "<literal>@Secure</literal> or"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:35
+#, no-c-format
+msgid "<literal>@Updated</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:39
+#, no-c-format
+msgid "instead of using compound names like"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:43
+#, no-c-format
+msgid "<literal>asyncPaymentProcessor</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:46
+#, no-c-format
+msgid "<literal>mockPaymentProcessor</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:49
+#, no-c-format
+msgid "<literal>SecurityInterceptor</literal> or"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:52
+#, no-c-format
+msgid "<literal>DocumentUpdatedEvent</literal>."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:56
+#, no-c-format
+msgid ""
+"The annotations are reusable. They help describe common qualities of "
+"disparate parts of the system. They help us categorize and understand our "
+"code. They help us deal with common concerns in a common way. They make our "
+"code more literate and more understandable."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:61
+#, no-c-format
+msgid ""
+"Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A "
+"stereotype models a common <emphasis>role</emphasis> in your application "
+"architecture. It encapsulates various properties of the role, including "
+"scope, interceptor bindings, deployment type, etc, into a single reusable "
+"package."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:66
+#, no-c-format
+msgid ""
+"Even Web Beans XML metadata is strongly typed! There's no compiler for XML, "
+"so Web Beans takes advantage of XML schemas to validate the Java types and "
+"attributes that appear in XML. This approach turns out to make the XML more "
+"literate, just like annotations made our Java code more literate."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:71
+#, no-c-format
+msgid ""
+"We're now ready to meet some more advanced features of Web Beans. Bear in "
+"mind that these features exist to make our code both easier to validate and "
+"more understandable. Most of the time you don't ever really <emphasis>need</"
+"emphasis> to use these features, but if you use them wisely, you'll come to "
+"appreciate their power."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/part3.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/part4.po (from rev 638, doc/trunk/reference/ja-JP/modules/part4.po)
===================================================================
--- doc/trunk/reference/ja-JP/part4.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/part4.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,52 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part4.xml:5
+#, no-c-format
+msgid ""
+"The third theme of Web Beans is <emphasis>integration</emphasis>. Web Beans "
+"was designed to work in concert with other technologies, helping the "
+"application developer fit the other technologies together. Web Beans is an "
+"open technology. It forms a part of the Java EE ecosystem, and is itself the "
+"foundation for a new ecosystem of portable extensions and integration with "
+"existing frameworks and technologies."
+msgstr ""
+
+#. Tag: para
+#: part4.xml:12
+#, no-c-format
+msgid ""
+"We've already seen how Web Beans helps integrate EJB and JSF, allowing EJBs "
+"to be bound directly to JSF pages. That's just the beginning. Web Beans "
+"offers the same potential to diverse other technologies, such as Business "
+"Process Management engines, other Web Frameworks, and third-party component "
+"models. The Java EE platform will never be able to standardize all the "
+"interesting technologies that are used in the world of Java application "
+"development, but Web Beans makes it easier to use the technologies which are "
+"not yet part of the platform seamlessly within the Java EE environment."
+msgstr ""
+
+#. Tag: para
+#: part4.xml:21
+#, no-c-format
+msgid ""
+"We're about to see how to take full advantage of the Java EE platform in an "
+"application that uses Web Beans. We'll also briefly meet a set of SPIs that "
+"are provided to support portable extensions to Web Beans. You might not ever "
+"need to use these SPIs directly, but it's nice to know they are there if you "
+"need them. Most importantly, you'll take advantage of them indirectly, every "
+"time you use a third-party extension."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/part4.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/producermethods.po (from rev 638, doc/trunk/reference/ja-JP/modules/producermethods.po)
===================================================================
--- doc/trunk/reference/ja-JP/producermethods.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/producermethods.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,247 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: producermethods.xml:5
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:7
+#, no-c-format
+msgid ""
+"Producer methods let us overcome certain limitations that arise when the Web "
+"Bean manager, instead of the application, is responsible for instantiating "
+"objects. They're also the easiest way to integrate objects which are not Web "
+"Beans into the Web Beans environment. (We'll meet a second approach in <xref "
+"linkend=\"xml\"/>.)"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:12
+#, no-c-format
+msgid "According to the spec:"
+msgstr ""
+
+#. Tag: chapter
+#: producermethods.xml:12
+#, no-c-format
+msgid ""
+"<blockquote> <para>A Web Beans producer method acts as a source of objects "
+"to be injected, where:</para> <itemizedlist> <listitem> <para>the objects to "
+"be injected are not required to be instances of Web Beans,</para> </"
+"listitem> <listitem> <para>the concrete type of the objects to be injected "
+"may vary at runtime or</para> </listitem> <listitem> <para>the objects "
+"require some custom initialization that is not performed by the Web Bean "
+"constructor</para> </listitem> </itemizedlist> </blockquote> <para>For "
+"example, producer methods let us:</para> <itemizedlist> <listitem> "
+"<para>expose a JPA entity as a Web Bean,</para> </listitem> <listitem> "
+"<para>expose any JDK class as a Web Bean,</para> </listitem> <listitem> "
+"<para>define multiple Web Beans, with different scopes or initialization, "
+"for the same implementation class, or</para> </listitem> <listitem> "
+"<para>vary the implementation of an API type at runtime.</para> </listitem> "
+"</itemizedlist> <para>In particular, producer methods let us use runtime "
+"polymorphism with Web Beans. As we've seen, deployment types are a powerful "
+"solution to the problem of deployment-time polymorphism. But once the system "
+"is deployed, the Web Bean implementation is fixed. A producer method has no "
+"such limitation:</para> <programlisting role=\"JAVA\"><![CDATA"
+"[@SessionScoped\n"
+"public class Preferences {\n"
+"    \n"
+"    private PaymentStrategyType paymentStrategy;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    @Produces @Preferred \n"
+"    public PaymentStrategy getPaymentStrategy() {\n"
+"        switch (paymentStrategy) {\n"
+"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
+"            case CHEQUE: return new ChequePaymentStrategy();\n"
+"            case PAYPAL: return new PayPalPaymentStrategy();\n"
+"            default: return null;\n"
+"        } \n"
+"    }\n"
+"    \n"
+"}]]></programlisting> <para>Consider an injection point:</para> "
+"<programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy "
+"paymentStrat;]]></programlisting> <para>This injection point has the same "
+"type and binding annotations as the producer method, so it resolves to the "
+"producer method using the usual Web Beans injection rules. The producer "
+"method will be called by the Web Bean manager to obtain an instance to "
+"service this injection point.</para>."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:68
+#, no-c-format
+msgid "Scope of a producer method"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:70
+#, no-c-format
+msgid ""
+"The scope of the producer method defaults to <literal>@Dependent</literal>, "
+"and so it will be called <emphasis>every time</emphasis> the Web Bean "
+"manager injects this field or any other field that resolves to the same "
+"producer method. Thus, there could be multiple instances of the "
+"<literal>PaymentStrategy</literal> object for each user session."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:75
+#, no-c-format
+msgid ""
+"To change this behavior, we can add a <literal>@SessionScoped</literal> "
+"annotation to the method."
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy() {\n"
+"    ...\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:80
+#, no-c-format
+msgid ""
+"Now, when the producer method is called, the returned "
+"<literal>PaymentStrategy</literal> will be bound to the session context. The "
+"producer method won't be called again in the same session."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:87
+#, no-c-format
+msgid "Injection into producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:89
+#, no-c-format
+msgid ""
+"There's one potential problem with the code above. The implementations of "
+"<literal>CreditCardPaymentStrategy</literal> are instantiated using the Java "
+"<literal>new</literal> operator. Objects instantiated directly by the "
+"application can't take advantage of dependency injection and don't have "
+"interceptors."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:94
+#, no-c-format
+msgid ""
+"If this isn't what we want we can use dependency injection into the producer "
+"method to obtain Web Bean instances:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:97
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
+"                                          ChequePaymentStrategy cps,\n"
+"                                          PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:99
+#, no-c-format
+msgid ""
+"Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request "
+"scoped Web Bean? Then the producer method has the effect of \"promoting\" "
+"the current request scoped instance into session scope. This is almost "
+"certainly a bug! The request scoped object will be destroyed by the Web Bean "
+"manager before the session ends, but the reference to the object will be "
+"left \"hanging\" in the session scope. This error will <emphasis>not</"
+"emphasis> be detected by the Web Bean manager, so please take extra care "
+"when returning Web Bean instances from producer methods!"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:107
+#, no-c-format
+msgid ""
+"There's at least three ways we could go about fixing this bug. We could "
+"change the scope of the <literal>CreditCardPaymentStrategy</literal> "
+"implementation, but this would affect other clients of that Web Bean. A "
+"better option would be to change the scope of the producer method to "
+"<literal>@Dependent</literal> or <literal>@RequestScoped</literal>."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:113
+#, no-c-format
+msgid ""
+"But a more common solution is to use the special <literal>@New</literal> "
+"binding annotation."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:119
+#, no-c-format
+msgid "Use of <literal>@New</literal> with producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:121
+#, no-c-format
+msgid "Consider the following producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:123
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy "
+"ccps,\n"
+"                                          @New ChequePaymentStrategy cps,\n"
+"                                          @New PayPalPaymentStrategy ppps) "
+"{\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:125
+#, no-c-format
+msgid ""
+"Then a new <emphasis>dependent</emphasis> instance of "
+"<literal>CreditCardPaymentStrategy</literal> will be created, passed to the "
+"producer method, returned by the producer method and finally bound to the "
+"session context. The dependent object won't be destroyed until the "
+"<literal>Preferences</literal> object is destroyed, at the end of the "
+"session."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/producermethods.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/ri-spi.po (from rev 638, doc/trunk/reference/ja-JP/modules/ri-spi.po)
===================================================================
--- doc/trunk/reference/ja-JP/ri-spi.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/ri-spi.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,272 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-20 22:07+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri-spi.xml:4
+#, no-c-format
+msgid "Integrating the Web Beans RI into other environments"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:6
+#, no-c-format
+msgid ""
+"Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI into "
+"other EE environments (for example another application server like "
+"Glassfish), into a servlet container (like Tomcat), or with an Embedded "
+"EJB3.1 implementation is fairly easy. In this Appendix we will briefly "
+"discuss the steps needed."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:15
+#, no-c-format
+msgid ""
+"It should be possible to run Web Beans in an SE environment, but you'll to "
+"do more work, adding your own contexts and lifecycle. The Web Beans RI "
+"currently doesn't expose lifecycle extension points, so you would have to "
+"code directly against Web Beans RI classes."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:24
+#, no-c-format
+msgid "The Web Beans RI SPI"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:26
+#, no-c-format
+msgid ""
+"The Web Beans SPI is located in <literal>webbeans-ri-spi</literal> module, "
+"and packaged as <literal>webbeans-ri-spi.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:31
+#, no-c-format
+msgid "Currently, the only SPI to implement is the bootstrap spi:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[public interface WebBeanDiscovery {\n"
+"   /**\n"
+"    * Gets list of all classes in classpath archives with web-beans.xml "
+"files\n"
+"    * \n"
+"    * @return An iterable over the classes \n"
+"    */\n"
+"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
+"   \n"
+"   /**\n"
+"    * Gets a list of all web-beans.xml files in the app classpath\n"
+"    * \n"
+"    * @return An iterable over the web-beans.xml files \n"
+"    */\n"
+"   public Iterable<URL> discoverWebBeansXml();\n"
+"   \n"
+"   /**\n"
+"    * Gets a descriptor for each EJB in the application\n"
+"    * \n"
+"    * @return The bean class to descriptor map \n"
+"    */\n"
+"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:37
+#, no-c-format
+msgid ""
+"The discovery of Web Bean classes and <literal>web-bean.xml</literal> files "
+"is self-explanatory (the algorithm is described in Section 11.1 of the JSR-"
+"299 specification, and isn't repeated here)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:43
+#, no-c-format
+msgid ""
+"The Web Beans RI also delegates EJB3 bean discovery to the container so that "
+"it doesn't have to scan for EJB3 annotations or parse <literal>ejb-jar.xml</"
+"literal>. For each EJB in the application an EJBDescriptor should be "
+"discovered:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:50
+#, no-c-format
+msgid ""
+"<![CDATA[public interface EjbDescriptor<T> {\n"
+"   \n"
+"   /**\n"
+"    * Gets the EJB type\n"
+"    * \n"
+"    * @return The EJB Bean class\n"
+"    */\n"
+"   public Class<T> getType();\n"
+"\n"
+"   /**\n"
+"    * Gets the local business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the local business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces"
+"();\n"
+"   \n"
+"   /**\n"
+"    * Gets the remote business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remote business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> "
+"getRemoteBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Get the remove methods of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remove methods\n"
+"    */\n"
+"   public Iterable<Method> getRemoveMethods();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is stateless\n"
+"    * \n"
+"    * @return True if stateless, false otherwise\n"
+"    */\n"
+"   public boolean isStateless();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is a EJB 3.1 Singleton\n"
+"    * \n"
+"    * @return True if the bean is a singleton, false otherwise\n"
+"    */\n"
+"   public boolean isSingleton();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is stateful\n"
+"    * \n"
+"    * @return True if the bean is stateful, false otherwise\n"
+"    */\n"
+"   public boolean isStateful();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is and MDB\n"
+"    * \n"
+"    * @return True if the bean is an MDB, false otherwise\n"
+"    */\n"
+"   public boolean isMessageDriven();\n"
+"\n"
+"   /**\n"
+"    * Gets the EJB name\n"
+"    * \n"
+"    * @return The name\n"
+"    */\n"
+"   public String getEjbName();\n"
+"   \n"
+"   /**\n"
+"    * @return The JNDI string which can be used to lookup a proxy which \n"
+"    * implements all local business interfaces \n"
+"    * \n"
+"    */\n"
+"   public String getLocalJndiName();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:52
+#, no-c-format
+msgid ""
+"The contract described the JavaDoc is enough to implement an EJBDescriptor. "
+"In addition to these two interfaces, there is "
+"<literal>BusinessInterfaceDescriptor</literal> which represents a local "
+"business interface (encapsulating the interface class and jndi name)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:59
+#, no-c-format
+msgid ""
+"The Web Beans RI can be told to load your implementation of "
+"<literal>WebBeanDiscovery</literal> using the property <literal>org.jboss."
+"webbeans.bootstrap.webBeanDiscovery</literal> with the fully qualified class "
+"name as the value. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:66
+#, no-c-format
+msgid ""
+"org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration."
+"jbossas.WebBeanDiscoveryImpl"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:68
+#, no-c-format
+msgid ""
+"The property can either be specified as a system property, or in a "
+"properties file <literal>META-INF/web-beans-ri.properties</literal>."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:76
+#, no-c-format
+msgid "The contract with the container"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:78
+#, no-c-format
+msgid ""
+"There are a number of requirements that the Web Beans RI places on the "
+"container for correct functioning that fall outside implementation of APIs"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:86
+#, no-c-format
+msgid "Classloader isolation"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:90
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must enable, automatically, or through user "
+"configuation, classloader isolation for each Web Beans application"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:99
+#, no-c-format
+msgid "The <literal>webbeans-ri.jar</literal>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:103
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must insert the <literal>webbeans-ri.jar</"
+"literal> into the applications isolated classloader. It cannot be loaded "
+"from a shared classloader."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/ri-spi.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/ri.po (from rev 638, doc/trunk/reference/ja-JP/modules/ri.po)
===================================================================
--- doc/trunk/reference/ja-JP/ri.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/ri.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1003 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri.xml:4
+#, no-c-format
+msgid "The Web Beans Reference Implementation"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans Reference Implementation is being developed at <ulink url="
+"\"http://seamframework.org/WebBeans\">the Seam project</ulink>. You can "
+"download the latest developer release of Web Beans from the <ulink url="
+"\"http://seamframework.org/Download\">the downloads page</ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:13
+#, no-c-format
+msgid ""
+"The Web Beans RI comes with a two deployable example applications: "
+"<literal>webbeans-numberguess</literal>, a war example, containing only "
+"simple beans, and <literal>webbeans-translator</literal> an ear example, "
+"containing enterprise beans. To run the examples you'll need the following:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:22
+#, no-c-format
+msgid "the latest release of the Web Beans RI,"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:25
+#, no-c-format
+msgid "JBoss AS 5.0.0.GA, and"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:28
+#, no-c-format
+msgid "Ant 1.7.0."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:32
+#, no-c-format
+msgid ""
+"Currently, the Web Beans RI only runs on JBoss Application Server 5. You'll "
+"need to download JBoss AS 5.0.0.GA from <ulink url=\"http://www.jboss.org/"
+"jbossas/downloads/\">jboss.org</ulink>, and unzip it. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd /Applications\n"
+"$ unzip ~/jboss-5.0.0.GA.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:41
+#, no-c-format
+msgid ""
+"Next, download the Web Beans RI from <ulink url=\"http://seamframework.org/"
+"Download\">seamframework.org</ulink>, and unzip it. For example"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd ~/\n"
+"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:50
+#, no-c-format
+msgid ""
+"Next, we need to tell Web Beans where JBoss is located. Edit <literal>jboss-"
+"as/build.properties</literal> and set the <literal>jboss.home</literal> "
+"property. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:56
+#, no-c-format
+msgid "jboss.home=/Applications/jboss-5.0.0.GA"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:58
+#, no-c-format
+msgid ""
+"As Web Beans is a new piece of software, you need to update JBoss AS to run "
+"the Web Beans RI. Future versions of JBoss AS will include these updates, "
+"and this step won't be necessary."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:65
+#, no-c-format
+msgid ""
+"Currently, two updates are needed. Firstly, a new deployer, "
+"<literal>webbeans.deployer</literal> is added. This adds supports for Web "
+"Bean archives to JBoss AS, and allows the Web Beans RI to query the EJB3 "
+"container and discover which EJBs are installed in your application. "
+"Secondly, an update to JBoss EJB3 is needed."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:74
+#, no-c-format
+msgid ""
+"To install the update, you'll need Ant 1.7.0 installed, and the "
+"<literal>ANT_HOME</literal> environment variable set. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:79
+#, no-c-format
+msgid ""
+"$ unzip apache-ant-1.7.0.zip\n"
+"$ export ANT_HOME=~/apache-ant-1.7.0"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:81
+#, no-c-format
+msgid ""
+"Then, you can install the update. The update script will use Maven to "
+"download the Web Beans and EJB3 automatically."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:86
+#, no-c-format
+msgid ""
+"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
+"$ ant update"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:88
+#, no-c-format
+msgid "Now, you're ready to deploy your first example!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:93
+#, no-c-format
+msgid ""
+"The build scripts for the examples offer a number of targets, these are:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:99
+#, no-c-format
+msgid "<literal>ant restart</literal> - deploy the example in exploded format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:105
+#, no-c-format
+msgid ""
+"<literal>ant explode</literal> - update an exploded example, without "
+"restarting the deployment"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:111
+#, no-c-format
+msgid ""
+"<literal>ant deploy</literal> - deploy the example in compressed jar format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:116
+#, no-c-format
+msgid "<literal>ant undeploy</literal> - remove the example from the server"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:121
+#, no-c-format
+msgid "<literal>ant clean</literal> - clean the example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:128
+#, no-c-format
+msgid "To deploy the numberguess example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:132
+#, no-c-format
+msgid ""
+"$ cd examples/numberguess\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:134
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and enjoy hours of fun at <ulink url="
+"\"http://localhost:8080/webbeans-numberguess\"></ulink>!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:139
+#, no-c-format
+msgid ""
+"The Web Beans RI includes a second simple example that will translate your "
+"text into Latin. The numberguess example is a war example, and uses only "
+"simple beans; the translator example is an ear example, and includes "
+"enterprise beans, packaged in an EJB module. To try it out:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:146
+#, no-c-format
+msgid ""
+"$ cd examples/translator\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:148
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and visit <ulink url=\"http://"
+"localhost:8080/webbeans-translator\"></ulink>!"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:154
+#, no-c-format
+msgid "The numberguess example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:156
+#, no-c-format
+msgid ""
+"In the numberguess application you get given 10 attempts to guess a number "
+"between 1 and 100. After each attempt, you will be told whether you are too "
+"high, or too low."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:162
+#, no-c-format
+msgid ""
+"The numberguess example is comprised of a number of Web Beans, configuration "
+"files, and Facelet JSF pages, packaged as a war. Let's start with the "
+"configuration files."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:168
+#, no-c-format
+msgid ""
+"All the configuration files for this example are located in <literal>WEB-INF/"
+"</literal>, which is stored in <literal>WebContent</literal> in the source "
+"tree. First, we have <literal>faces-config.xml</literal>, in which we tell "
+"JSF to use Facelets:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
+"<faces-config version=\"1.2\"\n"
+"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
+"    \n"
+"    <application>\n"
+"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
+"    </application>\n"
+"\n"
+"</faces-config>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:178
+#, no-c-format
+msgid ""
+"There is an empty <literal>web-beans.xml</literal> file, which marks this "
+"application as a Web Beans application."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:183
+#, no-c-format
+msgid "Finally there is <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: section
+#: ri.xml:185
+#, no-c-format
+msgid ""
+"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
+"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
+"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
+"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
+"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"\n"
+"<web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
+"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
+"   \n"
+"   <display-name>Web Beans Numbergues example</display-name>\n"
+"\n"
+"   <!-- JSF -->\n"
+"\n"
+"   <servlet>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
+"      <load-on-startup>1</load-on-startup>\n"
+"   </servlet>\n"
+"\n"
+"   <servlet-mapping>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <url-pattern>*.jsf</url-pattern>\n"
+"   </servlet-mapping>\n"
+"   \n"
+"   <context-param>\n"
+"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
+"      <param-value>.xhtml</param-value>\n"
+"   </context-param>\n"
+"\n"
+"   <session-config>\n"
+"      <session-timeout>10</session-timeout>\n"
+"   </session-config>\n"
+"   \n"
+"    <listener>\n"
+"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
+"class>\n"
+"    </listener>\n"
+"\n"
+"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
+"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
+"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
+"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
+"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
+"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
+"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
+"session timeout of 10 minutes </para> </callout> <callout arearefs="
+"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
+"Beans services can be used in the servlet request </para> </callout> </"
+"calloutlist> </programlistingco> <note> <para> The only configuration "
+"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
+"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
+"the Web Beans RI with any Servlet based web framework; just configure the "
+"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
+"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
+"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
+"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
+"\"30\"/> <area id=\"submit\" coords=\"33\"/> </areaspec> <programlisting><!"
+"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
+"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
+"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
+"\n"
+"  <ui:composition template=\"template.xhtml\">\n"
+"    <ui:define name=\"content\">\n"
+"       <h1>Guess a number...</h1>\n"
+"       <h:form id=\"NumberGuessMain\">\n"
+"          <div style=\"color: red\">\n"
+"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
+"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
+"number gt game.guess and game.guess ne 0}\"/>\n"
+"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
+"number lt game.guess and game.guess ne 0}\"/>\n"
+"          </div>\n"
+"   \n"
+"          <div>\n"
+"             I'm thinking of a number between #{game.smallest} and #{game."
+"biggest}.\n"
+"             You have #{game.remainingGuesses} guesses.\n"
+"          </div>\n"
+"     \n"
+"          <div>\n"
+"             Your guess: \n"
+"             <h:inputText id=\"inputGuess\" \n"
+"                          value=\"#{game.guess}\" \n"
+"                          required=\"true\" \n"
+"                          size=\"3\" \n"
+"                          disabled=\"#{game.number eq game.guess}\">\n"
+"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
+"                                     minimum=\"#{game.smallest}\"/>\n"
+"             </h:inputText>\n"
+"            <h:commandButton id=\"GuessButton\"  \n"
+"                             value=\"Guess\" \n"
+"                             action=\"#{game.check}\" \n"
+"                             disabled=\"#{game.number eq game.guess}\"/>\n"
+"          </div>\n"
+"          <div>\n"
+"            <h:commandButton id=\"RestartButton\" value=\"Reset\" action=\"#"
+"{game.reset}\" immediate=\"true\" />\n"
+"          </div>\n"
+"       </h:form>\n"
+"    </ui:define>\n"
+"  </ui:composition>\n"
+"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
+"<para> Facelets is a templating language for JSF, here we are wrapping our "
+"page in a template which defines the header. </para> </callout> <callout "
+"arearefs=\"messages\"> <para> There are a number of messages which can be "
+"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
+"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
+"range of numbers they can guess gets smaller - this sentance changes to make "
+"sure they know what range to guess in. </para> </callout> <callout arearefs="
+"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
+"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
+"range validator is used to make sure the user doesn't accidentally input a "
+"number outside of the range in which they can guess - if the validator "
+"wasn't here, the user might use up a guess on an out of range number. </"
+"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
+"must be a way for the user to send their guess to the server. Here we bind "
+"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
+"programlistingco>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:298
+#, no-c-format
+msgid ""
+"The example exists of 4 classes, the first two of which are binding types. "
+"First, there is the <literal>@Random</literal> binding type, used for "
+"injecting a random number:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:304
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface Random {}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:306
+#, no-c-format
+msgid ""
+"There is also the <literal>@MaxNumber</literal> binding type, used for "
+"injecting the maximum number that can be injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface MaxNumber {}\n"
+"]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:313
+#, no-c-format
+msgid ""
+"The <literal>Generator</literal> class is responsible for creating the "
+"random number, via a producer method. It also exposes the maximum possible "
+"number via a producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:319
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"   \n"
+"   private java.util.Random random = new java.util.Random( System."
+"currentTimeMillis() );\n"
+"   \n"
+"   private int maxNumber = 100;\n"
+"   \n"
+"   java.util.Random getRandom()\n"
+"   {\n"
+"      return random;\n"
+"   }\n"
+"   \n"
+"   @Produces @Random int next() { \n"
+"      return getRandom().nextInt(maxNumber); \n"
+"   }\n"
+"   \n"
+"   @Produces @MaxNumber int getMaxNumber()\n"
+"   {\n"
+"      return maxNumber;\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:321
+#, no-c-format
+msgid ""
+"You'll notice that the <literal>Generator</literal> is application scoped; "
+"therefore we don't get a different random each time."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:326
+#, no-c-format
+msgid ""
+"The final Web Bean in the application is the session scoped <literal>Game</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:331
+#, no-c-format
+msgid ""
+"You'll note that we've used the <literal>@Named</literal> annotation, so "
+"that we can use the bean through EL in the JSF page. Finally, we've used "
+"constructor injection to initialize the game with a random number. And of "
+"course, we need to tell the player when they've won, so we give feedback "
+"with a <literal>FacesMessage</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:339
+#, no-c-format
+msgid ""
+"<![CDATA[package org.jboss.webbeans.examples.numberguess;\n"
+"\n"
+"\n"
+"import javax.annotation.PostConstruct;\n"
+"import javax.faces.application.FacesMessage;\n"
+"import javax.faces.context.FacesContext;\n"
+"import javax.webbeans.AnnotationLiteral;\n"
+"import javax.webbeans.Current;\n"
+"import javax.webbeans.Initializer;\n"
+"import javax.webbeans.Named;\n"
+"import javax.webbeans.SessionScoped;\n"
+"import javax.webbeans.manager.Manager;\n"
+"\n"
+"@Named\n"
+"@SessionScoped\n"
+"public class Game\n"
+"{\n"
+"   private int number;\n"
+"   \n"
+"   private int guess;\n"
+"   private int smallest;\n"
+"   private int biggest;\n"
+"   private int remainingGuesses;\n"
+"   \n"
+"   @Current Manager manager;\n"
+"   \n"
+"   public Game()\n"
+"   {\n"
+"   }\n"
+"   \n"
+"   @Initializer\n"
+"   Game(@MaxNumber int maxNumber)\n"
+"   {      \n"
+"      this.biggest = maxNumber;\n"
+"   }\n"
+"\n"
+"   public int getNumber()\n"
+"   {\n"
+"      return number;\n"
+"   }\n"
+"   \n"
+"   public int getGuess()\n"
+"   {\n"
+"      return guess;\n"
+"   }\n"
+"   \n"
+"   public void setGuess(int guess)\n"
+"   {\n"
+"      this.guess = guess;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getRemainingGuesses()\n"
+"   {\n"
+"      return remainingGuesses;\n"
+"   }\n"
+"   \n"
+"   public String check()\n"
+"   {\n"
+"      if (guess>number)\n"
+"      {\n"
+"         biggest = guess - 1;\n"
+"      }\n"
+"      if (guess<number)\n"
+"      {\n"
+"         smallest = guess + 1;\n"
+"      }\n"
+"      if (guess == number)\n"
+"      {\n"
+"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
+"(\"Correct!\"));\n"
+"      }\n"
+"      remainingGuesses--;\n"
+"      return null;\n"
+"   }\n"
+"   \n"
+"   @PostConstruct\n"
+"   public void reset()\n"
+"   {\n"
+"      this.smallest = 0;\n"
+"      this.guess = 0;\n"
+"      this.remainingGuesses = 10;\n"
+"      this.number = manager.getInstanceByType(Integer.class, new "
+"AnnotationLiteral<Random>(){});\n"
+"   }\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:343
+#, no-c-format
+msgid "The translator example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:345
+#, no-c-format
+msgid ""
+"The translator example will take any sentences you enter, and translate them "
+"to Latin."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:350
+#, no-c-format
+msgid ""
+"The translator example is built as an ear, and contains EJBs and enterprise "
+"beans. As a result, it's structure is more complex than the numberguess "
+"example."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:357
+#, no-c-format
+msgid ""
+"EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will make "
+"this structure much simpler!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:363
+#, no-c-format
+msgid ""
+"First, let's take a look at the ear aggregator, which is located in "
+"<literal>webbeans-translator-ear</literal> module. Maven automatically "
+"generates the <literal>application.xml</literal> and <literal>jboss-app.xml</"
+"literal> for us:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:370
+#, no-c-format
+msgid ""
+"<![CDATA[<plugin>\n"
+"   <groupId>org.apache.maven.plugins</groupId>\n"
+"   <artifactId>maven-ear-plugin</artifactId>\n"
+"   <configuration>\n"
+"      <modules>\n"
+"         <webModule>\n"
+"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
+"            <artifactId>webbeans-translator-war</artifactId>\n"
+"            <contextRoot>/webbeans-translator</contextRoot>\n"
+"         </webModule>\n"
+"      </modules>\n"
+"      <jboss>\n"
+"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
+"loader-repository>\n"
+"      </jboss>\n"
+"   </configuration>\n"
+"</plugin>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:372
+#, no-c-format
+msgid ""
+"We're doing a couple of things here - firstly we set the context path, which "
+"gives us a nice url (<ulink url=\"http://localhost:8080/webbeans-translator"
+"\">http://localhost:8080/webbeans-translator</ulink>) and we also enable "
+"class loader isolation for JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:380
+#, no-c-format
+msgid ""
+"If you aren't using Maven to generate these files, you would need "
+"<literal>META-INF/jboss-app.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:385
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<!DOCTYPE jboss-app\n"
+"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
+"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
+"<jboss-app>\n"
+"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
+"repository>\n"
+"</jboss-app>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:387
+#, no-c-format
+msgid "and <literal>META-INF/application.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:391
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\">\n"
+"  <display-name>webbeans-translator-ear</display-name>\n"
+"  <description>Ear Example for the reference implementation of JSR 299: Web "
+"Beans</description>\n"
+"  \n"
+"  <module>\n"
+"    <web>\n"
+"      <web-uri>webbeans-translator.war</web-uri>\n"
+"      <context-root>/webbeans-translator</context-root>\n"
+"    </web>\n"
+"  </module>\n"
+"  <module>\n"
+"    <ejb>webbeans-translator.jar</ejb>\n"
+"  </module>\n"
+"</application>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:394
+#, no-c-format
+msgid ""
+"Next, lets look at the war. Just as in the numberguess example, we have a "
+"<literal>faces-config.xml</literal> (to enabled Facelets) and a <literal>web."
+"xml</literal> (to enable JSF and attach Web Beans services to the servlet "
+"container) in <literal>WebContent/WEB-INF</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:401
+#, no-c-format
+msgid ""
+"More intersting is the facelet used to translate text. Just as in the "
+"numberguess example we have a template, which surrounds the form (ommitted "
+"here for brevity):"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:407
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
+"            \n"
+"   <table>\n"
+"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
+"         <td>\n"
+"            Your text\n"
+"         </td>\n"
+"         <td>\n"
+"            Translation\n"
+"         </td>\n"
+"      </tr>\n"
+"      <tr>\n"
+"         <td>\n"
+"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
+"required=\"true\" rows=\"5\" cols=\"80\" />\n"
+"         </td>\n"
+"         <td>\n"
+"            <h:outputText value=\"#{translator.translatedText}\" />\n"
+"         </td>\n"
+"      </tr>\n"
+"   </table>\n"
+"   <div>\n"
+"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
+"{translator.translate}\"/>\n"
+"   </div>\n"
+"   \n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:409
+#, no-c-format
+msgid ""
+"The user can enter some text in the lefthand textarea, and hit the translate "
+"button to see the result to the right."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:414
+#, no-c-format
+msgid ""
+"Finally, let's look at the ejb module, <literal>webbeans-translator-ejb</"
+"literal>. There are two configuration files in <literal>src/main/resources/"
+"META-INF</literal>, an empty <literal>web-beans.xml</literal>, used to mark "
+"the archive as containing Web Beans, and <literal>ejb-jar.xml</literal>. Web "
+"Beans provides injection and initializtion services for all EJBs, and uses "
+"<literal>ejb-jar.xml</literal> to enable this, you'll need this in any EJB "
+"project which uses Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:426
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
+"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\">\n"
+"         \n"
+"   <interceptors>\n"
+"     <interceptor>\n"
+"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"     </interceptor>\n"
+"   </interceptors>\n"
+"   \n"
+"   <assembly-descriptor>\n"
+"      <interceptor-binding>\n"
+"         <ejb-name>*</ejb-name>\n"
+"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"      </interceptor-binding>\n"
+"   </assembly-descriptor>\n"
+"   \n"
+"</ejb-jar>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:428
+#, no-c-format
+msgid ""
+"We've saved the most interesting bit to last, the code! The project has two "
+"simple beans, <literal>SentanceParser</literal> and <literal>TextTranslator</"
+"literal> and two enterprise beans, <literal>TanslatorControllerBean</"
+"literal> and <literal>SentenceTranslator</literal>. You should be getting "
+"quite familiar with what a Web Bean looks like by now, so we'll just "
+"highlight the most interesting bits here."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:438
+#, no-c-format
+msgid ""
+"Both <literal>SentanceParser</literal> and <literal>TextTranslator</literal> "
+"are dependent beans, and <literal>TextTranslator</literal> uses constructor "
+"initialization:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:444
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator { \n"
+"   private SentenceParser sentenceParser; \n"
+"   private Translator sentenceTranslator; \n"
+"   \n"
+"   @Initializer\n"
+"   TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) \n"
+"   { \n"
+"      this.sentenceParser = sentenceParser; \n"
+"      this.sentenceTranslator = sentenceTranslator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:446
+#, no-c-format
+msgid ""
+"<literal>TextTranslator</literal> is a stateless bean (with a local business "
+"interface), where the magic happens - of course, we couldn't develop a full "
+"translator, but we gave it a good go!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:452
+#, no-c-format
+msgid ""
+"Finally, there is UI orientated controller, that collects the text from the "
+"user, and dispatches it to the translator. This is a request scoped, named, "
+"stateful session bean, which injects the translator."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:458
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful\n"
+"@RequestScoped\n"
+"@Named(\"translator\")\n"
+"public class TranslatorControllerBean implements TranslatorController\n"
+"{\n"
+"   \n"
+"   @Current TextTranslator translator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:460
+#, no-c-format
+msgid "The bean also has getters and setters for all the fields on the page."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:464
+#, no-c-format
+msgid "As this is a stateful session bean, we have to have a remove method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:468
+#, no-c-format
+msgid ""
+"<![CDATA[   @Remove\n"
+"   public void remove()\n"
+"   {\n"
+"      \n"
+"   }]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:470
+#, no-c-format
+msgid ""
+"The Web Beans manager will call the remove method for you when the bean is "
+"destroyed; in this case at the end of the request."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:476
+#, no-c-format
+msgid ""
+"That concludes our short tour of the Web Beans RI examples. For more on the "
+"RI, or to help out, please visit <ulink url=\"http://www.seamframework.org/"
+"WebBeans/Development\">http://www.seamframework.org/WebBeans/Development</"
+"ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:482
+#, no-c-format
+msgid ""
+"We need help in all areas - bug fixing, writing new features, writing "
+"examples and translating this reference guide."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/ri.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/scopescontexts.po (from rev 638, doc/trunk/reference/ja-JP/modules/scopescontexts.po)
===================================================================
--- doc/trunk/reference/ja-JP/scopescontexts.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/scopescontexts.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,582 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: scopescontexts.xml:4
+#, no-c-format
+msgid "Scopes and contexts"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen a few examples of <emphasis>scope type annotations</"
+"emphasis>. The scope of a Web Bean determines the lifecycle of instances of "
+"the Web Bean. The scope also determines which clients refer to which "
+"instances of the Web Bean. According to the Web Beans specification, a scope "
+"determines:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:14
+#, no-c-format
+msgid "When a new instance of any Web Bean with that scope is created"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:17
+#, no-c-format
+msgid "When an existing instance of any Web Bean with that scope is destroyed"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:20
+#, no-c-format
+msgid ""
+"Which injected references refer to any instance of a Web Bean with that scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:25
+#, no-c-format
+msgid ""
+"For example, if we have a session scoped Web Bean, <literal>CurrentUser</"
+"literal>, all Web Beans that are called in the context of the same "
+"<literal>HttpSession</literal> will see the same instance of "
+"<literal>CurrentUser</literal>. This instance will be automatically created "
+"the first time a <literal>CurrentUser</literal> is needed in that session, "
+"and automatically destroyed when the session ends."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:32
+#, no-c-format
+msgid "Scope types"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:34
+#, no-c-format
+msgid ""
+"Web Beans features an <emphasis>extensible context model</emphasis>. It is "
+"possible to define new scopes by creating a new scope type annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:37
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD})\n"
+"@ScopeType\n"
+"public @interface ClusterScoped {}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:39
+#, no-c-format
+msgid ""
+"Of course, that's the easy part of the job. For this scope type to be "
+"useful, we will also need to define a <literal>Context</literal> object that "
+"implements the scope! Implementing a <literal>Context</literal> is usually a "
+"very technical task, intended for framework development only."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:44
+#, no-c-format
+msgid ""
+"We can apply a scope type annotation to a Web Bean implementation class to "
+"specify the scope of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[@ClusterScoped\n"
+"public class SecondLevelCache { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:58
+#, no-c-format
+msgid "Usually, you'll use one of Web Beans' built-in scopes."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:63
+#, no-c-format
+msgid "Built-in scopes"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:65
+#, no-c-format
+msgid "Web Beans defines four built-in scopes:"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:69
+#, no-c-format
+msgid "@RequestScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:72
+#, no-c-format
+msgid "@SessionScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:75
+#, no-c-format
+msgid "@ApplicationScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:78
+#, no-c-format
+msgid "@ConversationScoped"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:82
+#, no-c-format
+msgid "For a web application that uses Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:86
+#, no-c-format
+msgid ""
+"any servlet request has access to active request, session and application "
+"scopes, and, additionally"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:90
+#, no-c-format
+msgid "any JSF request has access to an active conversation scope."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:94
+#, no-c-format
+msgid "The request and application scopes are also active:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:98
+#, no-c-format
+msgid "during invocations of EJB remote methods,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:101
+#, no-c-format
+msgid "during EJB timeouts,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:104
+#, no-c-format
+msgid "during message delivery to a message-driven bean, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:107
+#, no-c-format
+msgid "during web service invocations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:111
+#, no-c-format
+msgid ""
+"If the application tries to invoke a Web Bean with a scope that does not "
+"have an active context, a <literal>ContextNotActiveException</literal> is "
+"thrown by the Web Bean manager at runtime."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:115
+#, no-c-format
+msgid ""
+"Three of the four built-in scopes should be extremely familiar to every Java "
+"EE developer, so let's not waste time discussing them here. One of the "
+"scopes, however, is new."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:122
+#, no-c-format
+msgid "The conversation scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:124
+#, no-c-format
+msgid ""
+"The Web Beans conversation scope is a bit like the traditional session scope "
+"in that it holds state associated with a user of the system, and spans "
+"multiple requests to the server. However, unlike the session scope, the "
+"conversation scope:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:130
+#, no-c-format
+msgid "is demarcated explicitly by the application, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:133
+#, no-c-format
+msgid ""
+"holds state associated with a particular web browser tab in a JSF "
+"application."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:138
+#, no-c-format
+msgid ""
+"A conversation represents a task, a unit of work from the point of view of "
+"the user. The conversation context holds state associated with what the user "
+"is currently working on. If the user is doing multiple things at the same "
+"time, there are multiple conversations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:143
+#, no-c-format
+msgid ""
+"The conversation context is active during any JSF request. However, most "
+"conversations are destroyed at the end of the request. If a conversation "
+"should hold state across multiple requests, it must be explicitly promoted "
+"to a <emphasis>long-running conversation</emphasis>."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:149
+#, no-c-format
+msgid "Conversation demarcation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:151
+#, no-c-format
+msgid ""
+"Web Beans provides a built-in Web Bean for controlling the lifecyle of "
+"conversations in a JSF application. This Web Bean may be obtained by "
+"injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:154
+#, no-c-format
+msgid "@Current Conversation conversation;"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:156
+#, no-c-format
+msgid ""
+"To promote the conversation associated with the current request to a long-"
+"running conversation, call the <literal>begin()</literal> method from "
+"application code. To schedule the current long-running conversation context "
+"for destruction at the end of the current request, call <literal>end()</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:161
+#, no-c-format
+msgid ""
+"In the following example, a conversation-scoped Web Bean controls the "
+"conversation with which it is associated:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:164
+#, no-c-format
+msgid ""
+"@ConversationScoped @Stateful\n"
+"public class OrderBuilder {\n"
+"\n"
+"    private Order order;\n"
+"    private @Current Conversation conversation;\n"
+"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
+"    \n"
+"    @Produces public Order getOrder() {\n"
+"        return order;\n"
+"    }\n"
+"\n"
+"    public Order createOrder() {\n"
+"        order = new Order();\n"
+"        conversation.begin();\n"
+"        return order;\n"
+"    }\n"
+"    \n"
+"    public void addLineItem(Product product, int quantity) {\n"
+"        order.add( new LineItem(product, quantity) );\n"
+"    }\n"
+"\n"
+"    public void saveOrder(Order order) {\n"
+"        em.persist(order);\n"
+"        conversation.end();\n"
+"    }\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:166
+#, no-c-format
+msgid ""
+"This Web Bean is able to control its own lifecycle through use of the "
+"<literal>Conversation</literal> API. But some other Web Beans have a "
+"lifecycle which depends completely upon another object."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:173
+#, no-c-format
+msgid "Conversation propagation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:175
+#, no-c-format
+msgid ""
+"The conversation context automatically propagates with any JSF faces request "
+"(JSF form submission). It does not automatically propagate with non-faces "
+"requests, for example, navigation via a link."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:179
+#, no-c-format
+msgid ""
+"We can force the conversation to propagate with a non-faces request by "
+"including the unique identifier of the conversation as a request parameter. "
+"The Web Beans specification reserves the request parameter named "
+"<literal>cid</literal> for this use. The unique identifier of the "
+"conversation may be obtained from the <literal>Conversation</literal> "
+"object, which has the Web Beans name <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:186
+#, no-c-format
+msgid "Therefore, the following link propagates the conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:188
+#, no-c-format
+msgid ""
+"<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]"
+">"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:190
+#, no-c-format
+msgid ""
+"The Web Bean manager is also required to propagate conversations across any "
+"redirect, even if the conversation is not marked long-running. This makes it "
+"very easy to implement the common POST-then-redirect pattern, without resort "
+"to fragile constructs such as a \"flash\" object. In this case, the Web Bean "
+"manager automatically adds a request parameter to the redirect URL."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:200
+#, no-c-format
+msgid "Conversation timeout"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:202
+#, no-c-format
+msgid ""
+"The Web Bean manager is permitted to destroy a conversation and all state "
+"held in its context at any time in order to preserve resources. A Web Bean "
+"manager implementation will normally do this on the basis of some kind of "
+"timeout&#151;though this is not required by the Web Beans specification. The "
+"timeout is the period of inactivity before the conversation is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:208
+#, no-c-format
+msgid ""
+"The <literal>Conversation</literal> object provides a method to set the "
+"timeout. This is a hint to the Web Bean manager, which is free to ignore the "
+"setting."
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:212
+#, no-c-format
+msgid "conversation.setTimeout(timeoutInMillis);"
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:219
+#, no-c-format
+msgid "The dependent pseudo-scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:221
+#, no-c-format
+msgid ""
+"In addition to the four built-in scopes, Web Beans features the so-called "
+"<emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a "
+"Web Bean which does not explicitly declare a scope type."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:225
+#, no-c-format
+msgid ""
+"For example, this Web Bean has the scope type <literal>@Dependent</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:227
+#, no-c-format
+msgid "<![CDATA[public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:229
+#, no-c-format
+msgid ""
+"When an injection point of a Web Bean resolves to a dependent Web Bean, a "
+"new instance of the dependent Web Bean is created every time the first Web "
+"Bean is instantiated. Instances of dependent Web Beans are never shared "
+"between different Web Beans or different injection points. They are "
+"<emphasis>dependent objects</emphasis> of some other Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:235
+#, no-c-format
+msgid ""
+"Dependent Web Bean instances are destroyed when the instance they depend "
+"upon is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:243
+#, no-c-format
+msgid ""
+"Web Beans makes it easy to obtain a dependent instance of a Java class or "
+"EJB bean, even if the class or EJB bean is already declared as a Web Bean "
+"with some other scope type."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:248
+#, no-c-format
+msgid "The <literal>@New</literal> annotation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:250
+#, no-c-format
+msgid ""
+"The built-in <literal>@New</literal> binding annotation allows "
+"<emphasis>implicit</emphasis> definition of a dependent Web Bean at an "
+"injection point. Suppose we declare the following injected field:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:254
+#, no-c-format
+msgid "<![CDATA[@New Calculator calculator;]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:256
+#, no-c-format
+msgid ""
+"Then a Web Bean with scope <literal>@Dependent</literal>, binding type "
+"<literal>@New</literal>, API type <literal>Calculator</literal>, "
+"implementation class <literal>Calculator</literal> and deployment type "
+"<literal>@Standard</literal> is implicitly defined."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:261
+#, no-c-format
+msgid ""
+"This is true even if <literal>Calculator</literal> is <emphasis>already</"
+"emphasis> declared with a different scope type, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:264
+#, no-c-format
+msgid ""
+"<![CDATA[@ConversationScoped\n"
+"public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:266
+#, no-c-format
+msgid ""
+"So the following injected attributes each get a different instance of "
+"<literal>Calculator</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:269
+#, no-c-format
+msgid ""
+"<![CDATA[public class PaymentCalc {\n"
+"\n"
+"    @Current Calculator calculator;\n"
+"    @New Calculator newCalculator;\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:271
+#, no-c-format
+msgid ""
+"The <literal>calculator</literal> field has a conversation-scoped instance "
+"of <literal>Calculator</literal> injected. The <literal>newCalculator</"
+"literal> field has a new instance of <literal>Calculator</literal> injected, "
+"with a lifecycle that is bound to the owning <literal>PaymentCalc</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:276
+#, no-c-format
+msgid ""
+"This feature is particularly useful with producer methods, as we'll see in "
+"the next chapter."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/scopescontexts.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/specialization.po (from rev 638, doc/trunk/reference/ja-JP/modules/specialization.po)
===================================================================
--- doc/trunk/reference/ja-JP/specialization.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/specialization.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,291 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: specialization.xml:4
+#, no-c-format
+msgid "Specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:6
+#, no-c-format
+msgid ""
+"We've already seen how the Web Beans dependency injection model lets us "
+"<emphasis>override</emphasis> the implementation of an API at deployment "
+"time. For example, the following enterprise Web Bean provides an "
+"implementation of the API <literal>PaymentProcessor</literal> in production:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:11
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless\n"
+"public class CreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:13
+#, no-c-format
+msgid ""
+"But in our staging environment, we override that implementation of "
+"<literal>PaymentProcessor</literal> with a different Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:16
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless @Staging\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:18
+#, no-c-format
+msgid ""
+"What we've tried to do with <literal>StagingCreditCardPaymentProcessor</"
+"literal> is to completely replace <literal>AsyncPaymentProcessor</literal> "
+"in a particular deployment of the system. In that deployment, the deployment "
+"type <literal>@Staging</literal> would have a higher priority than the "
+"default deployment type <literal>@Production</literal>, and therefore "
+"clients with the following injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:24
+#, no-c-format
+msgid "@CreditCard PaymentProcessor ccpp"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:26
+#, no-c-format
+msgid ""
+"Would receive an instance of <literal>StagingCreditCardPaymentProcessor</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:28
+#, no-c-format
+msgid "Unfortunately, there are several traps we can easily fall into:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:32
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not implement all the API types of the Web "
+"Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:36
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not declare all the binding types of the "
+"Web Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:40
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean might not have the same name as the Web Bean "
+"that it attempts to override, or"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:44
+#, no-c-format
+msgid ""
+"the Web Bean that it attempts to override might declare a producer method, "
+"disposal method or observer method."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:49
+#, no-c-format
+msgid ""
+"In each of these cases, the Web Bean that we tried to override could still "
+"be called at runtime. Therefore, overriding is somewhat prone to developer "
+"error."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:52
+#, no-c-format
+msgid ""
+"Web Beans provides a special feature, called <emphasis>specialization</"
+"emphasis>, that helps the developer avoid these traps. Specialization looks "
+"a little esoteric at first, but it's easy to use in practice, and you'll "
+"really appreciate the extra security it provides."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:58
+#, no-c-format
+msgid "Using specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:60
+#, no-c-format
+msgid ""
+"Specialization is a feature that is specific to simple and enterprise Web "
+"Beans. To make use of specialization, the higher-priority Web Bean must:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:65
+#, no-c-format
+msgid "be a direct subclass of the Web Bean it overrides, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:68
+#, no-c-format
+msgid ""
+"be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or an "
+"enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:73
+#, no-c-format
+msgid "be annotated <literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:77
+#, no-c-format
+msgid ""
+"@Stateless @Staging @Specializes\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        extends CreditCardPaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:79
+#, no-c-format
+msgid ""
+"We say that the higher-priority Web Bean <emphasis>specializes</emphasis> "
+"its superclass."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:85
+#, no-c-format
+msgid "Advantages of specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:87
+#, no-c-format
+msgid "When specialization is used:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:91
+#, no-c-format
+msgid ""
+"the binding types of the superclass are automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:95
+#, no-c-format
+msgid ""
+"the Web Bean name of the superclass is automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:99
+#, no-c-format
+msgid ""
+"producer methods, disposal methods and observer methods declared by the "
+"superclass are called upon an instance of the Web Bean annotated "
+"<literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:105
+#, no-c-format
+msgid ""
+"In our example, the binding type <literal>@CreditCard</literal> of "
+"<literal>CreditCardPaymentProcessor</literal> is inherited by "
+"<literal>StagingCreditCardPaymentProcessor</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:109
+#, no-c-format
+msgid "Furthermore, the Web Bean manager will validate that:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:113
+#, no-c-format
+msgid ""
+"all API types of the superclass are API types of the Web Bean annotated "
+"<literal>@Specializes</literal> (all local interfaces of the superclass "
+"enterprise bean are also local interfaces of the subclass),"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:119
+#, no-c-format
+msgid ""
+"the deployment type of the Web Bean annotated <literal>@Specializes</"
+"literal> has a higher precedence than the deployment type of the superclass, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:124
+#, no-c-format
+msgid ""
+"there is no other enabled Web Bean that also specializes the superclass."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:129
+#, no-c-format
+msgid ""
+"If any of these conditions are violated, the Web Bean manager throws an "
+"exception at initialization time."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:132
+#, no-c-format
+msgid ""
+"Therefore, we can be certain that the superclass will <emphasis>never</"
+"emphasis> be called in any deployment of the system where the Web Bean "
+"annotated <literal>@Specializes</literal> is deployed and enabled."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/specialization.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/stereotypes.po (from rev 638, doc/trunk/reference/ja-JP/modules/stereotypes.po)
===================================================================
--- doc/trunk/reference/ja-JP/stereotypes.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/stereotypes.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,352 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: stereotypes.xml:4
+#, no-c-format
+msgid "Stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:6
+#, no-c-format
+msgid "According to the Web Beans specification:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:10
+#, no-c-format
+msgid ""
+"In many systems, use of architectural patterns produces a set of recurring "
+"Web Bean roles. A stereotype allows a framework developer to identify such a "
+"role and declare some common metadata for Web Beans with that role in a "
+"central place."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:14
+#, no-c-format
+msgid "A stereotype encapsulates any combination of:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:18
+#, no-c-format
+msgid "a default deployment type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:21
+#, no-c-format
+msgid "a default scope type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:24
+#, no-c-format
+msgid "a restriction upon the Web Bean scope,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:27
+#, no-c-format
+msgid "a requirement that the Web Bean implement or extend a certain type, and"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:30
+#, no-c-format
+msgid "a set of interceptor binding annotations."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:34
+#, no-c-format
+msgid ""
+"A stereotype may also specify that all Web Beans with the stereotype have "
+"defaulted Web Bean names."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:37
+#, no-c-format
+msgid "A Web Bean may declare zero, one or multiple stereotypes."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:41
+#, no-c-format
+msgid ""
+"A stereotype is a Java annotation type. This stereotype identifies action "
+"classes in some MVC framework:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:46
+#, no-c-format
+msgid "We use the stereotype by applying the annotation to a Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:48
+#, no-c-format
+msgid ""
+"<![CDATA[@Action \n"
+"public class LoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:51
+#, no-c-format
+msgid "Default scope and deployment type for a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:53
+#, no-c-format
+msgid ""
+"A stereotype may specify a default scope and/or default deployment type for "
+"Web Beans with that stereotype. For example, if the deployment type "
+"<literal>@WebTier</literal> identifies Web Beans that should only be "
+"deployed when the system executes as a web application, we might specify the "
+"following defaults for action classes:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:59
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:61
+#, no-c-format
+msgid ""
+"Of course, a particular action may still override these defaults if "
+"necessary:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[@Dependent @Mock @Action \n"
+"public class MockLoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:66
+#, no-c-format
+msgid ""
+"If we want to force all actions to a particular scope, we can do that too."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:72
+#, no-c-format
+msgid "Restricting scope and type with a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:74
+#, no-c-format
+msgid ""
+"Suppose that we wish to prevent actions from declaring certain scopes. Web "
+"Beans lets us explicitly specify the set of allowed scopes for Web Beans "
+"with a certain stereotype. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(supportedScopes=RequestScoped.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:80
+#, no-c-format
+msgid ""
+"If a particular action class attempts to specify a scope other than the Web "
+"Beans request scope, an exception will be thrown by the Web Bean manager at "
+"initialization time."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:84
+#, no-c-format
+msgid ""
+"We can also force all Web Bean with a certain stereotype to implement an "
+"interface or extend a class:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:87
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(requiredTypes=AbstractAction.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:89
+#, no-c-format
+msgid ""
+"If a particular action class does not extend the class "
+"<literal>AbstractAction</literal>, an exception will be thrown by the Web "
+"Bean manager at initialization time."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:96
+#, no-c-format
+msgid "Interceptor bindings for stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:98
+#, no-c-format
+msgid ""
+"A stereotype may specify a set of interceptor bindings to be inherited by "
+"all Web Beans with that stereotype."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:101
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:103
+#, no-c-format
+msgid ""
+"This helps us get technical concerns even further away from the business "
+"code!"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:109
+#, no-c-format
+msgid "Name defaulting with stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:111
+#, no-c-format
+msgid ""
+"Finally, we can specify that all Web Beans with a certain stereotype have a "
+"Web Bean name, defaulted by the Web Bean manager. Actions are often "
+"referenced in JSP pages, so they're a perfect use case for this feature. All "
+"we need to do is add an empty <literal>@Named</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:116
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@Named\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:118
+#, no-c-format
+msgid ""
+"Now, <literal>LoginAction</literal> will have the name <literal>loginAction</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:124
+#, no-c-format
+msgid "Standard stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:126
+#, no-c-format
+msgid ""
+"We've already met two standard stereotypes defined by the Web Beans "
+"specification: <literal>@Interceptor</literal> and <literal>@Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:129
+#, no-c-format
+msgid "Web Beans defines one further standard stereotype:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:131
+#, no-c-format
+msgid ""
+"<![CDATA[@Named \n"
+"@RequestScoped \n"
+"@Stereotype \n"
+"@Target({TYPE, METHOD}) \n"
+"@Retention(RUNTIME) \n"
+"public @interface Model {} ]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:133
+#, no-c-format
+msgid ""
+"This stereotype is intended for use with JSF. Instead of using JSF managed "
+"beans, just annotate a Web Bean <literal>@Model</literal>, and use it "
+"directly in your JSF page."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/stereotypes.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/ja-JP/xml.po (from rev 638, doc/trunk/reference/ja-JP/modules/xml.po)
===================================================================
--- doc/trunk/reference/ja-JP/xml.po	                        (rev 0)
+++ doc/trunk/reference/ja-JP/xml.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,352 @@
+# Language ja-JP translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: xml.xml:4
+#, no-c-format
+msgid "Defining Web Beans using XML"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen plenty of examples of Web Beans declared using "
+"annotations. However, there are a couple of occasions when we can't use "
+"annotations to define the Web Bean:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:12
+#, no-c-format
+msgid "when the implementation class comes from some preexisting library, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:15
+#, no-c-format
+msgid ""
+"when there should be multiple Web Beans with the same implementation class."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:20
+#, no-c-format
+msgid "In either of these cases, Web Beans gives us two options:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:23
+#, no-c-format
+msgid "write a producer method, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:24
+#, no-c-format
+msgid "declare the Web Bean using XML."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:27
+#, no-c-format
+msgid ""
+"Many frameworks use XML to provide metadata relating to Java classes. "
+"However, Web Beans uses a very different approach to specifying the names of "
+"Java classes, fields or methods to most other frameworks. Instead of writing "
+"class and member names as the string values of XML elements and attributes, "
+"Web Beans lets you use the class or member name as the name of the XML "
+"element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:33
+#, no-c-format
+msgid ""
+"The advantage of this approach is that you can write an XML schema that "
+"prevents spelling errors in your XML document. It's even possible for a tool "
+"to generate the XML schema automatically from the compiled Java code. Or, an "
+"integrated development environment could perform the same validation without "
+"the need for the explicit intermediate generation step."
+msgstr ""
+
+#. Tag: title
+#: xml.xml:40
+#, no-c-format
+msgid "Declaring Web Bean classes"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:42
+#, no-c-format
+msgid ""
+"For each Java package, Web Beans defines a corresponding XML namespace. The "
+"namespace is formed by prepending <literal>urn:java:</literal> to the Java "
+"package name. For the package <literal>com.mydomain.myapp</literal>, the XML "
+"namespace is <literal>urn:java:com.mydomain.myapp</literal>."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:47
+#, no-c-format
+msgid ""
+"Java types belonging to a package are referred to using an XML element in "
+"the namespace corresponding to the package. The name of the element is the "
+"name of the Java type. Fields and methods of the type are specified by child "
+"elements in the same namespace. If the type is an annotation, members are "
+"specified by attributes of the element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:53
+#, no-c-format
+msgid ""
+"For example, the element <literal>&lt;util:Date/&gt;</literal> in the "
+"following XML fragment refers to the class <literal>java.util.Date</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:util=\"urn:java:java.util\">\n"
+"\n"
+"    <util:Date/>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:58
+#, no-c-format
+msgid ""
+"And this is all the code we need to declare that <literal>Date</literal> is "
+"a simple Web Bean! An instance of <literal>Date</literal> may now be "
+"injected by any other Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:62
+#, no-c-format
+msgid "<![CDATA[@Current Date date]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:67
+#, no-c-format
+msgid "Declaring Web Bean metadata"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:69
+#, no-c-format
+msgid ""
+"We can declare the scope, deployment type and interceptor binding types "
+"using direct child elements of the Web Bean declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:72
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:ShoppingCart>\n"
+"    <SessionScoped/>\n"
+"    <myfwk:Transactional requiresNew=\"true\"/>\n"
+"    <myfwk:Secure/>\n"
+"</myapp:ShoppingCart>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:74
+#, no-c-format
+msgid "We use exactly the same approach to specify names and binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[<util:Date>\n"
+"    <Named>currentTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <SessionScoped/>\n"
+"    <myapp:Login/>\n"
+"    <Named>loginTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:SystemStart/>\n"
+"    <Named>systemStartTime</Named>\n"
+"</util:Date>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:78
+#, no-c-format
+msgid ""
+"Where <literal>@Login</literal> and <literal>@SystemStart</literal> are "
+"binding annotations types."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@Current Date currentTime;\n"
+"@Login Date loginTime;\n"
+"@SystemStart Date systemStartTime;]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:83
+#, no-c-format
+msgid "As usual, a Web Bean may support multiple binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:85
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
+"    <myapp:PayByCheque/>\n"
+"    <myapp:Asynchronous/>\n"
+"</myapp:AsynchronousChequePaymentProcessor>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:87
+#, no-c-format
+msgid ""
+"Interceptors and decorators are just simple Web Beans, so they may be "
+"declared just like any other simple Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:90
+#, no-c-format
+msgid ""
+"<![CDATA[<myfwk:TransactionInterceptor>\n"
+"    <Interceptor/>\n"
+"    <myfwk:Transactional/>\n"
+"</myfwk:TransactionInterceptor>]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:95
+#, no-c-format
+msgid "Declaring Web Bean members"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:97
+#, no-c-format
+msgid "TODO!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:104
+#, no-c-format
+msgid "Declaring inline Web Beans"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:106
+#, no-c-format
+msgid "Web Beans lets us define a Web Bean at an injection point. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:108
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:System>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:admin>\n"
+"        <myapp:Name>\n"
+"            <myapp:firstname>Gavin</myapp:firstname>\n"
+"            <myapp:lastname>King</myapp:lastname>\n"
+"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
+"        </myapp:Name>\n"
+"    </myapp:admin>\n"
+"</myapp:System>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:110
+#, no-c-format
+msgid ""
+"The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of "
+"scope <literal>@Dependent</literal> and class <literal>Name</literal>, with "
+"a set of initial field values. This Web Bean has a special, container-"
+"generated binding and is therefore injectable only to the specific injection "
+"point at which it is declared."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:116
+#, no-c-format
+msgid ""
+"This simple but powerful feature allows the Web Beans XML format to be used "
+"to specify whole graphs of Java objects. It's not quite a full databinding "
+"solution, but it's close!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:123
+#, no-c-format
+msgid "Using a schema"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:125
+#, no-c-format
+msgid ""
+"If we want our XML document format to be authored by people who aren't Java "
+"developers, or who don't have access to our code, we need to provide a "
+"schema. There's nothing specific to Web Beans about writing or using the "
+"schema."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
+"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/"
+"jee/web-beans-1.0.xsd\n"
+"                              urn:java:com.mydomain.myapp http://mydomain."
+"com/xsd/myapp-1.2.xsd\">\n"
+"\n"
+"    <myapp:System>\n"
+"        ...\n"
+"    </myapp:System>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:132
+#, no-c-format
+msgid ""
+"Writing an XML schema is quite tedious. Therefore, the Web Beans RI project "
+"will provide a tool which automatically generates the XML schema from "
+"compiled Java code."
+msgstr ""


Property changes on: doc/trunk/reference/ja-JP/xml.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/pot/Author_Group.pot
===================================================================
--- doc/trunk/reference/pot/Author_Group.pot	                        (rev 0)
+++ doc/trunk/reference/pot/Author_Group.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,61 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:4
+#, no-c-format
+msgid "<firstname>Gavin</firstname> <surname>King</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red Hat "
+"Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: author
+#: Author_Group.xml:12
+#, no-c-format
+msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:15
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) Reference Implementation lead </jobtitle> "
+"<orgname>Red Hat Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:21
+#, no-c-format
+msgid "<firstname>Nicola</firstname> <surname>Benaglia</surname>"
+msgstr ""
+
+#. Tag: contrib
+#: Author_Group.xml:24 Author_Group.xml:29
+#, no-c-format
+msgid "Italian Translation"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:26
+#, no-c-format
+msgid "<firstname>Francesco</firstname> <surname>Milesi</surname>"
+msgstr ""

Copied: doc/trunk/reference/pot/Book_Info.pot (from rev 638, doc/trunk/reference/pot/modules/Book_Info.pot)
===================================================================
--- doc/trunk/reference/pot/Book_Info.pot	                        (rev 0)
+++ doc/trunk/reference/pot/Book_Info.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,29 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:4
+#, no-c-format
+msgid "Introduction to Web Beans"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:5
+#, no-c-format
+msgid ""
+"The new Java standard for dependency injection and contextual state "
+"management"
+msgstr ""


Property changes on: doc/trunk/reference/pot/Book_Info.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/decorators.pot (from rev 638, doc/trunk/reference/pot/modules/decorators.pot)
===================================================================
--- doc/trunk/reference/pot/decorators.pot	                        (rev 0)
+++ doc/trunk/reference/pot/decorators.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,244 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: decorators.xml:4
+#, no-c-format
+msgid "Decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:6
+#, no-c-format
+msgid ""
+"Interceptors are a powerful way to capture and separate concerns which are "
+"<emphasis>orthogonal</emphasis> to the type system. Any interceptor is able "
+"to intercept invocations of any Java type. This makes them perfect for "
+"solving technical concerns such as transaction management and security. "
+"However, by nature, interceptors are unaware of the actual semantics of the "
+"events they intercept. Thus, interceptors aren't an appropriate tool for "
+"separating business-related concerns."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:14
+#, no-c-format
+msgid ""
+"The reverse is true of <emphasis>decorators</emphasis>. A decorator "
+"intercepts invocations only for a certain Java interface, and is therefore "
+"aware of all the semantics attached to that interface. This makes decorators "
+"a perfect tool for modeling some kinds of business concerns. It also means "
+"that a decorator doesn't have the generality of an interceptor. Decorators "
+"aren't able to solve technical concerns that cut across many disparate types."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:22
+#, no-c-format
+msgid "Suppose we have an interface that represents accounts:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:24
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Account {\n"
+"    public BigDecimal getBalance();\n"
+"    public User getOwner();\n"
+"    public void withdraw(BigDecimal amount);\n"
+"    public void deposit(BigDecimal amount);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:26
+#, no-c-format
+msgid ""
+"Several different Web Beans in our system implement the <literal>Account</"
+"literal> interface. However, we have a common legal requirement that, for "
+"any kind of account, large transactions must be recorded by the system in a "
+"special log. This is a perfect job for a decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:32
+#, no-c-format
+msgid ""
+"A decorator is a simple Web Bean that implements the type it decorates and "
+"is annotated <literal>@Decorator</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Decorator\n"
+"public abstract class LargeTransactionDecorator \n"
+"        implements Account {\n"
+"    \n"
+"    @Decorates Account account;\n"
+"    \n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    public void withdraw(BigDecimal amount) {\n"
+"        account.withdraw(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedWithdrawl(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"    public void deposit(BigDecimal amount);\n"
+"        account.deposit(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedDeposit(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:37
+#, no-c-format
+msgid ""
+"Unlike other simple Web Beans, a decorator may be an abstract class. If "
+"there's nothing special the decorator needs to do for a particular method of "
+"the decorated interface, you don't need to implement that method."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:43
+#, no-c-format
+msgid "Delegate attributes"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:45
+#, no-c-format
+msgid ""
+"All decorators have a <emphasis>delegate attribute</emphasis>. The type and "
+"binding types of the delegate attribute determine which Web Beans the "
+"decorator is bound to. The delegate attribute type must implement or extend "
+"all interfaces implemented by the decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:50
+#, no-c-format
+msgid ""
+"This delegate attribute specifies that the decorator is bound to all Web "
+"Beans that implement <literal>Account</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:53
+#, no-c-format
+msgid "<![CDATA[@Decorates Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:55
+#, no-c-format
+msgid ""
+"A delegate attribute may specify a binding annotation. Then the decorator "
+"will only be bound to Web Beans with the same binding."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:58
+#, no-c-format
+msgid "<![CDATA[@Decorates @Foreign Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:60
+#, no-c-format
+msgid "A decorator is bound to any Web Bean which:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:64
+#, no-c-format
+msgid "has the type of the delegate attribute as an API type, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:67
+#, no-c-format
+msgid "has all binding types that are declared by the delegate attribute."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:71
+#, no-c-format
+msgid ""
+"The decorator may invoke the delegate attribute, which has much the same "
+"effect as calling <literal>InvocationContext.proceed()</literal> from an "
+"interceptor."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:78
+#, no-c-format
+msgid "Enabling decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:80
+#, no-c-format
+msgid ""
+"We need to <emphasis>enable</emphasis> our decorator in <literal>web-beans."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:83
+#, no-c-format
+msgid ""
+"<![CDATA[<Decorators>\n"
+"    <myapp:LargeTransactionDecorator/>\n"
+"</Decorators>]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:85
+#, no-c-format
+msgid ""
+"This declaration serves the same purpose for decorators that the "
+"<literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:90
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all decorators in our system, "
+"ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:94
+#, no-c-format
+msgid "it lets us enable or disable decorator classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:98
+#, no-c-format
+msgid ""
+"Interceptors for a method are called before decorators that apply to that "
+"method."
+msgstr ""


Property changes on: doc/trunk/reference/pot/decorators.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/ee.pot (from rev 638, doc/trunk/reference/pot/modules/ee.pot)
===================================================================
--- doc/trunk/reference/pot/ee.pot	                        (rev 0)
+++ doc/trunk/reference/pot/ee.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,330 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ee.xml:4
+#, no-c-format
+msgid "Java EE integration"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is fully integrated into the Java EE environment. Web Beans have "
+"access to Java EE resources and JPA persistence contexts. They may be used "
+"in Unified EL expressions in JSF and JSP pages. They may even be injected "
+"into some objects, such as Servlets and Message-Driven Beans, which are not "
+"Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:12
+#, no-c-format
+msgid "Injecting Java EE resources into a Web Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:14
+#, no-c-format
+msgid ""
+"All simple and enterprise Web Beans may take advantage of Java EE dependency "
+"injection using <literal>@Resource</literal>, <literal>@EJB</literal> and "
+"<literal>@PersistenceContext</literal>. We've already seen a couple of "
+"examples of this, though we didn't pay much attention at the time:"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:19
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"    \n"
+"    ...\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:23
+#, no-c-format
+msgid ""
+"The Java EE <literal>@PostConstruct</literal> and <literal>@PreDestroy</"
+"literal> callbacks are also supported for all simple and enterprise Web "
+"Beans. The <literal>@PostConstruct</literal> method is called after "
+"<emphasis>all</emphasis> injection has been performed."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:28
+#, no-c-format
+msgid ""
+"There is one restriction to be aware of here: <literal>@PersistenceContext"
+"(type=EXTENDED)</literal> is not supported for simple Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:35
+#, no-c-format
+msgid "Calling a Web Bean from a Servlet"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:37
+#, no-c-format
+msgid ""
+"It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject the "
+"Web Bean using Web Beans field or initializer method injection."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:40
+#, no-c-format
+msgid ""
+"public class Login extends HttpServlet {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @Current Login login;\n"
+"\n"
+"    @Override\n"
+"    public void service(HttpServletRequest request, HttpServletResponse "
+"response)\n"
+"        throws ServletException, IOException {\n"
+"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
+"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
+"        login.login();\n"
+"        if ( login.isLoggedIn() ) {\n"
+"            response.sendRedirect(\"/home.jsp\");\n"
+"        }\n"
+"        else {\n"
+"            response.sendRedirect(\"/loginError.jsp\");\n"
+"        }\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:42
+#, no-c-format
+msgid ""
+"The Web Beans client proxy takes care of routing method invocations from the "
+"Servlet to the correct instances of <literal>Credentials</literal> and "
+"<literal>Login</literal> for the current request and HTTP session."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:49
+#, no-c-format
+msgid "Calling a Web Bean from a Message-Driven Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:51
+#, no-c-format
+msgid ""
+"Web Beans injection applies to all EJBs, even when they aren't under the "
+"control of the Web Bean manager (if they were obtained by direct JNDI "
+"lookup, or injection using <literal>@EJB</literal>, for example. In "
+"particular, you can use Web Beans injection in Message-Driven Beans, which "
+"are not considered Web Beans because you can't inject them."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:57
+#, no-c-format
+msgid ""
+"You can even use Web Beans interceptor bindings for Message-Driven Beans."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:59
+#, no-c-format
+msgid ""
+"@Transactional @MessageDriven\n"
+"public class ProcessOrder implements MessageListener {\n"
+"\n"
+"    @Current Inventory inventory;\n"
+"    @PersistenceContext EntityManager em;\n"
+"\n"
+"    public void onMessage(Message message) {\n"
+"        ...\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:61
+#, no-c-format
+msgid ""
+"Thus, receiving messages is super-easy in a Web Beans environment. But "
+"beware that there is no session or conversation context available when a "
+"message is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</"
+"literal> and <literal>@ApplicationScoped</literal> Web Beans are available."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:66
+#, no-c-format
+msgid "It's also easy to send messages using Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:71
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:73
+#, no-c-format
+msgid ""
+"Sending messages using JMS can be quite complex, because of the number of "
+"different objects you need to deal with. For queues we have <literal>Queue</"
+"literal>, <literal>QueueConnectionFactory</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> and "
+"<literal>QueueSender</literal>. For topics we have <literal>Topic</literal>, "
+"<literal>TopicConnectionFactory</literal>, <literal>TopicConnection</"
+"literal>, <literal>TopicSession</literal> and <literal>TopicPublisher</"
+"literal>. Each of these objects has its own lifecycle and threading model "
+"that we need to worry about."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:82
+#, no-c-format
+msgid ""
+"Web Beans takes care of all this for us. All we need to do is declare the "
+"queue or topic in <literal>web-beans.xml</literal>, specifying an associated "
+"binding type and connection factory."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:86
+#, no-c-format
+msgid ""
+"<![CDATA[<Queue>\n"
+"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
+"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:OrderProcessor/>    \n"
+"</Queue>]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:88
+#, no-c-format
+msgid ""
+"<![CDATA[<Topic>\n"
+"    <destination>java:comp/env/jms/StockPrices</destination>\n"
+"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:StockPrices/>    \n"
+"</Topic>]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:90
+#, no-c-format
+msgid ""
+"Now we can just inject the <literal>Queue</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> or "
+"<literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, "
+"<literal>TopicConnection</literal>, <literal>TopicSession</literal> or "
+"<literal>TopicPublisher</literal> for a topic."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:96
+#, no-c-format
+msgid ""
+"@OrderProcessor QueueSender orderSender;\n"
+"@OrderProcessor QueueSession orderSession;\n"
+"\n"
+"public void sendMessage() {\n"
+"    MapMessage msg = orderSession.createMapMessage();\n"
+"    ...\n"
+"    orderSender.send(msg);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:98
+#, no-c-format
+msgid ""
+"@StockPrices TopicPublisher pricePublisher;\n"
+"@StockPrices TopicSession priceSession;\n"
+"\n"
+"public void sendMessage(String price) {\n"
+"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:100
+#, no-c-format
+msgid ""
+"The lifecycle of the injected JMS objects is completely controlled by the "
+"Web Bean manager."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:106
+#, no-c-format
+msgid "Packaging and deployment"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:108
+#, no-c-format
+msgid ""
+"Web Beans doesn't define any special deployment archive. You can package Web "
+"Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the "
+"application classpath. However, each archive that contains Web Beans must "
+"include a file named <literal>web-beans.xml</literal> in the <literal>META-"
+"INF</literal> or <literal>WEB-INF</literal> directory. The file may be "
+"empty. Web Beans deployed in archives that do not have a <literal>web-beans."
+"xml</literal> file will not be available for use in the application."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:116
+#, no-c-format
+msgid ""
+"For Java SE execution, Web Beans may be deployed in any location in which "
+"EJBs may be deployed for execution by the embeddable EJB Lite container. "
+"Again, each location must contain a <literal>web-beans.xml</literal> file."
+msgstr ""


Property changes on: doc/trunk/reference/pot/ee.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/events.pot (from rev 638, doc/trunk/reference/pot/modules/events.pot)
===================================================================
--- doc/trunk/reference/pot/events.pot	                        (rev 0)
+++ doc/trunk/reference/pot/events.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,650 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: events.xml:4
+#, no-c-format
+msgid "Events"
+msgstr ""
+
+#. Tag: para
+#: events.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans event notification facility allows Web Beans to interact in a "
+"totally decoupled manner. Event <emphasis>producers</emphasis> raise events "
+"that are then delivered to event <emphasis>observers</emphasis> by the Web "
+"Bean manager. This basic schema might sound like the familiar observer/"
+"observable pattern, but there are a couple of twists:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:14
+#, no-c-format
+msgid ""
+"not only are event producers decoupled from observers; observers are "
+"completely decoupled from producers,"
+msgstr ""
+
+#. Tag: para
+#: events.xml:18
+#, no-c-format
+msgid ""
+"observers can specify a combination of \"selectors\" to narrow the set of "
+"event notifications they will receive, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:22
+#, no-c-format
+msgid ""
+"observers can be notified immediately, or can specify that delivery of the "
+"event should be delayed until the end of the current transaction"
+msgstr ""
+
+#. Tag: title
+#: events.xml:28
+#, no-c-format
+msgid "Event observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:30
+#, no-c-format
+msgid ""
+"An <emphasis>observer method</emphasis> is a method of a Web Bean with a "
+"parameter annotated <literal>@Observes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:33
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:35
+#, no-c-format
+msgid ""
+"The annotated parameter is called the <emphasis>event parameter</emphasis>. "
+"The type of the event parameter is the observed <emphasis>event type</"
+"emphasis>. Observer methods may also specify \"selectors\", which are just "
+"instances of Web Beans binding types. When a binding type is used as an "
+"event selector, it is called an <emphasis>event binding type</emphasis>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Updated { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:43
+#, no-c-format
+msgid ""
+"We specify the event bindings of the observer method by annotating the event "
+"parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:46 events.xml:190
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:48
+#, no-c-format
+msgid ""
+"An observer method need not specify any event bindings&#151;in this case it "
+"is interested in <emphasis>all</emphasis> events of a particular type. If it "
+"does specify event bindings, it is only interested in events which also have "
+"those event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:53
+#, no-c-format
+msgid ""
+"The observer method may have additional parameters, which are injected "
+"according to the usual Web Beans method parameter injection semantics:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document, User user) { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:61
+#, no-c-format
+msgid "Event producers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:63
+#, no-c-format
+msgid ""
+"The event producer may obtain an <emphasis>event notifier</emphasis> object "
+"by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:66
+#, no-c-format
+msgid "<![CDATA[@Observable Event<Document> documentEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:68
+#, no-c-format
+msgid ""
+"The <literal>@Observable</literal> annotation implicitly defines a Web Bean "
+"with scope <literal>@Dependent</literal> and deployment type "
+"<literal>@Standard</literal>, with an implementation provided by the Web "
+"Bean manager."
+msgstr ""
+
+#. Tag: para
+#: events.xml:72
+#, no-c-format
+msgid ""
+"A producer raises events by calling the <literal>fire()</literal> method of "
+"the <literal>Event</literal> interface, passing an <emphasis>event object</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:75
+#, no-c-format
+msgid "<![CDATA[documentEvent.fire(document);]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:77
+#, no-c-format
+msgid ""
+"An event object may be an instance of any Java class that has no type "
+"variables or wildcard type parameters. The event will be delivered to every "
+"observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:83 events.xml:107 events.xml:126
+#, no-c-format
+msgid "has an event parameter to which the event object is assignable, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:86
+#, no-c-format
+msgid "specifies no event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:90
+#, no-c-format
+msgid ""
+"The Web Bean manager simply calls all the observer methods, passing the "
+"event object as the value of the event parameter. If any observer method "
+"throws an exception, the Web Bean manager stops calling observer methods, "
+"and the exception is rethrown by the <literal>fire()</literal> method."
+msgstr ""
+
+#. Tag: para
+#: events.xml:95
+#, no-c-format
+msgid ""
+"To specify a \"selector\", the event producer may pass an instance of the "
+"event binding type to the <literal>fire()</literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>()"
+"{} );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:100
+#, no-c-format
+msgid ""
+"The helper class <literal>AnnotationLiteral</literal> makes it possible to "
+"instantiate binding types inline, since this is otherwise difficult to do in "
+"Java."
+msgstr ""
+
+#. Tag: para
+#: events.xml:103
+#, no-c-format
+msgid "The event will be delivered to every observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:110
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal>."
+msgstr ""
+
+#. Tag: para
+#: events.xml:115
+#, no-c-format
+msgid ""
+"Alternatively, event bindings may be specified by annotating the event "
+"notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:118
+#, no-c-format
+msgid "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:120
+#, no-c-format
+msgid ""
+"Then every event fired via this instance of <literal>Event</literal> has the "
+"annotated event binding. The event will be delivered to every observer "
+"method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:129
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal> or the annotated event bindings "
+"of the event notifier injection point."
+msgstr ""
+
+#. Tag: title
+#: events.xml:138
+#, no-c-format
+msgid "Registering observers dynamically"
+msgstr ""
+
+#. Tag: para
+#: events.xml:140
+#, no-c-format
+msgid ""
+"It's often useful to register an event observer dynamically. The application "
+"may implement the <literal>Observer</literal> interface and register an "
+"instance with an event notifier by calling the <literal>observe()</literal> "
+"method."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:144
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } } );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:146
+#, no-c-format
+msgid ""
+"Event binding types may be specified by the event notifier injection point "
+"or by passing event binding type instances to the <literal>observe()</"
+"literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:149
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } }, \n"
+"                                                new "
+"AnnotationLiteral<Updated>(){} );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:154
+#, no-c-format
+msgid "Event bindings with members"
+msgstr ""
+
+#. Tag: para
+#: events.xml:156
+#, no-c-format
+msgid "An event binding type may have annotation members:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:158
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Role {\n"
+"    RoleType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:160
+#, no-c-format
+msgid ""
+"The member value is used to narrow the messages delivered to the observer:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:164
+#, no-c-format
+msgid ""
+"Event binding type members may be specified statically by the event "
+"producer, via annotations at the event notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:167
+#, no-c-format
+msgid "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:169
+#, no-c-format
+msgid ""
+"Alternatively, the value of the event binding type member may be determined "
+"dynamically by the event producer. We start by writing an abstract subclass "
+"of <literal>AnnotationLiteral</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:172
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class RoleBinding \n"
+"    extends AnnotationLiteral<Role> \n"
+"    implements Role {}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:174
+#, no-c-format
+msgid ""
+"The event producer passes an instance of this class to <literal>fire()</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value"
+"() { return user.getRole(); } } );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:181
+#, no-c-format
+msgid "Multiple event bindings"
+msgstr ""
+
+#. Tag: para
+#: events.xml:183
+#, no-c-format
+msgid "Event binding types may be combined, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:185
+#, no-c-format
+msgid ""
+"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
+"...\n"
+"if (document.isBlog()) blogEvent.fire(document, new "
+"AnnotationLiteral<Updated>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:187
+#, no-c-format
+msgid ""
+"When this event occurs, all of the following observer methods will be "
+"notified:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:189
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:191
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:192
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }}}]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:197
+#, no-c-format
+msgid "Transactional observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:199
+#, no-c-format
+msgid ""
+"Transactional observers receive their event notifications during the before "
+"or after completion phase of the transaction in which the event was raised. "
+"For example, the following observer method needs to refresh a query result "
+"set that is cached in the application context, but only when transactions "
+"that update the <literal>Category</literal> tree succeed:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:205
+#, no-c-format
+msgid ""
+"<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes "
+"CategoryUpdateEvent event) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:207
+#, no-c-format
+msgid "There are three kinds of transactional observers:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:211
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionSuccess</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction "
+"completes successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:216
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionFailure</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction fails "
+"to complete successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:221
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionCompletion</literal> observers are called during "
+"the after completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:225
+#, no-c-format
+msgid ""
+"<literal>@BeforeTransactionCompletion</literal> observers are called during "
+"the before completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:230
+#, no-c-format
+msgid ""
+"Transactional observers are very important in a stateful object model like "
+"Web Beans, because state is often held for longer than a single atomic "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: events.xml:233
+#, no-c-format
+msgid ""
+"Imagine that we have cached a JPA query result set in the application scope:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:235
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    List<Product> products;\n"
+"\n"
+"    @Produces @Catalog \n"
+"    List<Product> getCatalog() {\n"
+"        if (products==null) {\n"
+"            products = em.createQuery(\"select p from Product p where p."
+"deleted = false\")\n"
+"                .getResultList();\n"
+"        }\n"
+"        return products;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:237
+#, no-c-format
+msgid ""
+"From time to time, a <literal>Product</literal> is created or deleted. When "
+"this occurs, we need to refresh the <literal>Product</literal> catalog. But "
+"we should wait until <emphasis>after</emphasis> the transaction completes "
+"successfully before performing this refresh!"
+msgstr ""
+
+#. Tag: para
+#: events.xml:242
+#, no-c-format
+msgid ""
+"The Web Bean that creates and deletes <literal>Product</literal>s could "
+"raise events, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:245
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class ProductManager {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    @Observable Event<Product> productEvent;\n"
+"\n"
+"    public void delete(Product product) {\n"
+"        em.delete(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
+"    }\n"
+"    \n"
+"    public void persist(Product product) {\n"
+"        em.persist(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:247
+#, no-c-format
+msgid ""
+"And now <literal>Catalog</literal> can observe the events after successful "
+"completion of the transaction:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:250
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Created Product "
+"product) {\n"
+"        products.add(product);\n"
+"    }\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product "
+"product) {\n"
+"        products.remove(product);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/pot/events.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/example.pot (from rev 638, doc/trunk/reference/pot/modules/example.pot)
===================================================================
--- doc/trunk/reference/pot/example.pot	                        (rev 0)
+++ doc/trunk/reference/pot/example.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,173 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example.xml:4
+#, no-c-format
+msgid "JSF web application example"
+msgstr ""
+
+#. Tag: para
+#: example.xml:6
+#, no-c-format
+msgid ""
+"Let's illustrate these ideas with a full example. We're going to implement "
+"user login/logout for an application that uses JSF. First, we'll define a "
+"Web Bean to hold the username and password entered during login:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:11
+#, no-c-format
+msgid ""
+"<![CDATA[@Named @RequestScoped\n"
+"public class Credentials {\n"
+"        \n"
+"    private String username;\n"
+"    private String password;\n"
+"    \n"
+"    public String getUsername() { return username; }\n"
+"    public void setUsername(String username) { this.username = username; }\n"
+"    \n"
+"    public String getPassword() { return password; }\n"
+"    public void setPassword(String password) { this.password = password; }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:13
+#, no-c-format
+msgid "This Web Bean is bound to the login prompt in the following JSF form:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:15
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form>\n"
+"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
+"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
+"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
+"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
+"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
+"    </h:panelGrid>\n"
+"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!"
+"login.loggedIn}\"/>\n"
+"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#"
+"{login.loggedIn}\"/>\n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:17
+#, no-c-format
+msgid ""
+"The actual work is done by a session scoped Web Bean that maintains "
+"information about the currently logged-in user and exposes the "
+"<literal>User</literal> entity to other Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"\n"
+"    private User user;\n"
+"    \n"
+"    public void login() {\n"
+"            \n"
+"        List<User> results = userDatabase.createQuery(\n"
+"           \"select u from User u where u.username=:username and u.password=:"
+"password\")\n"
+"           .setParameter(\"username\", credentials.getUsername())\n"
+"           .setParameter(\"password\", credentials.getPassword())\n"
+"           .getResultList();\n"
+"        \n"
+"        if ( !results.isEmpty() ) {\n"
+"           user = results.get(0);\n"
+"        }\n"
+"        \n"
+"    }\n"
+"    \n"
+"    public void logout() {\n"
+"        user = null;\n"
+"    }\n"
+"    \n"
+"    public boolean isLoggedIn() {\n"
+"       return user!=null;\n"
+"    }\n"
+"    \n"
+"    @Produces @LoggedIn User getCurrentUser() {\n"
+"        return user;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:23
+#, no-c-format
+msgid "Of course, <literal>@LoggedIn</literal> is a binding annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:25
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD})\n"
+"@BindingType\n"
+"public @interface LoggedIn {}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:27
+#, no-c-format
+msgid "Now, any other Web Bean can easily inject the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: example.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class DocumentEditor {\n"
+"\n"
+"    @Current Document document;\n"
+"    @LoggedIn User currentUser;\n"
+"    @PersistenceContext EntityManager docDatabase;\n"
+"    \n"
+"    public void save() {\n"
+"        document.setCreatedBy(currentUser);\n"
+"        docDatabase.persist(document);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: example.xml:31
+#, no-c-format
+msgid ""
+"Hopefully, this example gives a flavor of the Web Bean programming model. In "
+"the next chapter, we'll explore Web Beans dependency injection in greater "
+"depth."
+msgstr ""


Property changes on: doc/trunk/reference/pot/example.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/extend.pot (from rev 638, doc/trunk/reference/pot/modules/extend.pot)
===================================================================
--- doc/trunk/reference/pot/extend.pot	                        (rev 0)
+++ doc/trunk/reference/pot/extend.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,253 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: extend.xml:4
+#, no-c-format
+msgid "Extending Web Beans"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is intended to be a platform for frameworks, extensions and "
+"integration with other technologies. Therefore, Web Beans exposes a set of "
+"SPIs for the use of developers of portable extensions to Web Beans. For "
+"example, the following kinds of extensions were envisaged by the designers "
+"of Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:14
+#, no-c-format
+msgid "integration with Business Process Management engines,"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:17
+#, no-c-format
+msgid ""
+"integration with third-party frameworks such as Spring, Seam, GWT or Wicket, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:21
+#, no-c-format
+msgid "new technology based upon the Web Beans programming model."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:25
+#, no-c-format
+msgid ""
+"The nerve center for extending Web Beans is the <literal>Manager</literal> "
+"object."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:29
+#, no-c-format
+msgid "The <literal>Manager</literal> object"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:31
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> interface lets us register and obtain Web "
+"Beans, interceptors, decorators, observers and contexts programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:34
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Manager\n"
+"{\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... "
+"bindings);\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public Set<Bean<?>> resolveByName(String name);\n"
+"\n"
+"   public Object getInstanceByName(String name);\n"
+"\n"
+"   public <T> T getInstance(Bean<T> bean);\n"
+"\n"
+"   public void fireEvent(Object event, Annotation... bindings);\n"
+"\n"
+"   public Context getContext(Class<? extends Annotation> scopeType);\n"
+"\n"
+"   public Manager addContext(Context context);\n"
+"\n"
+"   public Manager addBean(Bean<?> bean);\n"
+"\n"
+"   public Manager addInterceptor(Interceptor interceptor);\n"
+"\n"
+"   public Manager addDecorator(Decorator decorator);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer, Class<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer,\n"
+"         TypeLiteral<T> eventType, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... "
+"bindings);\n"
+"\n"
+"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
+"         Annotation... interceptorBindings);\n"
+"\n"
+"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
+"         Annotation... bindings);\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:36
+#, no-c-format
+msgid "We can obtain an instance of <literal>Manager</literal> via injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:38
+#, no-c-format
+msgid "@Current Manager manager"
+msgstr ""
+
+#. Tag: title
+#: extend.xml:43
+#, no-c-format
+msgid "The <literal>Bean</literal> class"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:45
+#, no-c-format
+msgid ""
+"Instances of the abstract class <literal>Bean</literal> represent Web Beans. "
+"There is an instance of <literal>Bean</literal> registered with the "
+"<literal>Manager</literal> object for every Web Bean in the application."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:50
+#, no-c-format
+msgid ""
+"public abstract class Bean&lt;T&gt; {\n"
+"    \n"
+"    private final Manager manager;\n"
+"    \n"
+"    protected Bean(Manager manager) {\n"
+"        this.manager=manager;\n"
+"    }\n"
+"    \n"
+"    protected Manager getManager() {\n"
+"        return manager;\n"
+"    }\n"
+"    \n"
+"    public abstract Set&lt;Class&gt; getTypes();\n"
+"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
+"    public abstract String getName();\n"
+"    \n"
+"    public abstract boolean isSerializable();\n"
+"    public abstract boolean isNullable();\n"
+"\n"
+"    public abstract T create();\n"
+"    public abstract void destroy(T instance);\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:52
+#, no-c-format
+msgid ""
+"It's possible to extend the <literal>Bean</literal> class and register "
+"instances by calling <literal>Manager.addBean()</literal> to provide support "
+"for new kinds of Web Beans, beyond those defined by the Web Beans "
+"specification (simple and enterprise Web Beans, producer methods and JMS "
+"endpoints). For example, we could use the <literal>Bean</literal> class to "
+"allow objects managed by another framework to be injected into Web Beans."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:60
+#, no-c-format
+msgid ""
+"There are two subclasses of <literal>Bean</literal> defined by the Web Beans "
+"specification: <literal>Interceptor</literal> and <literal>Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:67
+#, no-c-format
+msgid "The <literal>Context</literal> interface"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Context</literal> interface supports addition of new scopes to "
+"Web Beans, or extension of the built-in scopes to new environments."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:72
+#, no-c-format
+msgid ""
+"public interface Context {\n"
+"    \n"
+"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    \n"
+"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
+"    \n"
+"    boolean isActive();\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:74
+#, no-c-format
+msgid ""
+"For example, we might implement <literal>Context</literal> to add a business "
+"process scope to Web Beans, or to add support for the conversation scope to "
+"an application that uses Wicket."
+msgstr ""


Property changes on: doc/trunk/reference/pot/extend.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/injection.pot (from rev 638, doc/trunk/reference/pot/modules/injection.pot)
===================================================================
--- doc/trunk/reference/pot/injection.pot	                        (rev 0)
+++ doc/trunk/reference/pot/injection.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1227 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: injection.xml:4
+#, no-c-format
+msgid "Dependency injection"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:6
+#, no-c-format
+msgid "Web Beans supports three primary mechanisms for dependency injection:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:8
+#, no-c-format
+msgid "Constructor parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:10
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private final ShoppingCart cart;\n"
+"    \n"
+"    @Initializer\n"
+"    public Checkout(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:12
+#, no-c-format
+msgid "<emphasis>Initializer</emphasis> method parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:14
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private ShoppingCart cart;\n"
+"\n"
+"    @Initializer \n"
+"    void setShoppingCart(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:16
+#, no-c-format
+msgid "And direct field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:18
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"\n"
+"    private @Current ShoppingCart cart;\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:20
+#, no-c-format
+msgid ""
+"Dependency injection always occurs when the Web Bean instance is first "
+"instantiated."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:25
+#, no-c-format
+msgid ""
+"First, the Web Bean manager calls the Web Bean constructor, to obtain an "
+"instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:29
+#, no-c-format
+msgid ""
+"Next, the Web Bean manager initializes the values of all injected fields of "
+"the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:33
+#, no-c-format
+msgid "Next, the Web Bean manager calls all initializer methods of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:37
+#, no-c-format
+msgid ""
+"Finally, the <literal>@PostConstruct</literal> method of the Web Bean, if "
+"any, is called."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:42
+#, no-c-format
+msgid ""
+"Constructor parameter injection is not supported for EJB beans, since the "
+"EJB is instantiated by the EJB container, not the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:45
+#, no-c-format
+msgid ""
+"Parameters of constructors and initializer methods need not be explicitly "
+"annotated when the default binding type <literal>@Current</literal> applies. "
+"Injected fields, however, <emphasis>must</emphasis> specify a binding type, "
+"even when the default binding type applies. If the field does not specify a "
+"binding type, it will not be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:51
+#, no-c-format
+msgid "Producer methods also support parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:53
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
+"    return new Checkout(cart);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:55
+#, no-c-format
+msgid ""
+"Finally, observer methods (which we'll meet in <xref linkend=\"events\"/>), "
+"disposal methods and destructor methods all support parameter injection."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:58
+#, no-c-format
+msgid ""
+"The Web Beans specification defines a procedure, called the "
+"<emphasis>typesafe resolution algorithm</emphasis>, that the Web Bean "
+"manager follows when identifying the Web Bean to inject to an injection "
+"point. This algorithm looks complex at first, but once you understand it, "
+"it's really quite intuitive. Typesafe resolution is performed at system "
+"initialization time, which means that the manager will inform the user "
+"immediately if a Web Bean's dependencies cannot be satisfied, by throwing a "
+"<literal>UnsatisfiedDependencyException</literal> or "
+"<literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:67
+#, no-c-format
+msgid ""
+"The purpose of this algorithm is to allow multiple Web Beans to implement "
+"the same API type and either:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:72
+#, no-c-format
+msgid ""
+"allow the client to select which implementation it requires using "
+"<emphasis>binding annotations</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:77
+#, no-c-format
+msgid ""
+"allow the application deployer to select which implementation is appropriate "
+"for a particular deployment, without changes to the client, by enabling or "
+"disabling <emphasis>deployment types</emphasis>, or"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:82
+#, no-c-format
+msgid ""
+"allow one implementation of an API to override another implementation of the "
+"same API at deployment time, without changes to the client, using "
+"<emphasis>deployment type precedence</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:88
+#, no-c-format
+msgid ""
+"Let's explore how the Web Beans manager determines a Web Bean to be injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:91
+#, no-c-format
+msgid "Binding annotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:93
+#, no-c-format
+msgid ""
+"If we have more than one Web Bean that implements a particular API type, the "
+"injection point can specify exactly which Web Bean should be injected using "
+"a binding annotation. For example, there might be two implementations of "
+"<literal>PaymentProcessor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque\n"
+"public class ChequePaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:100
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCreditCard\n"
+"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:102
+#, no-c-format
+msgid ""
+"Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</"
+"literal> are binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:105
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCheque {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:107
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCreditCard {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:109
+#, no-c-format
+msgid ""
+"A client Web Bean developer uses the binding annotation to specify exactly "
+"which Web Bean should be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:112
+#, no-c-format
+msgid "Using field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:114
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
+"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:116
+#, no-c-format
+msgid "Using initializer method injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:118
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public void setPaymentProcessors(@PayByCheque PaymentProcessor "
+"chequePaymentProcessor, \n"
+"                                 @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:120
+#, no-c-format
+msgid "Or using constructor injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:122
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:125
+#, no-c-format
+msgid "Binding annotations with members"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:127
+#, no-c-format
+msgid "Binding annotations may have members:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:129
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayBy {\n"
+"    PaymentType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:131
+#, no-c-format
+msgid "In which case, the member value is significant:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:133
+#, no-c-format
+msgid ""
+"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
+"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:135
+#, no-c-format
+msgid ""
+"You can tell the Web Bean manager to ignore a member of a binding annotation "
+"type by annotating the member <literal>@NonBinding</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:141
+#, no-c-format
+msgid "Combinations of binding annnotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:143
+#, no-c-format
+msgid "An injection point may even specify multiple binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:145
+#, no-c-format
+msgid ""
+"<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:147
+#, no-c-format
+msgid ""
+"In this case, only a Web Bean which has <emphasis>both</emphasis> binding "
+"annotations would be eligible for injection."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:153
+#, no-c-format
+msgid "Binding annotations and producer methods"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:155
+#, no-c-format
+msgid "Even producer methods may specify binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces \n"
+"@Asynchronous @PayByCheque \n"
+"PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor "
+"processor) {\n"
+"    return new AsynchronousPaymentProcessor(processor);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:162
+#, no-c-format
+msgid "The default binding type"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:164
+#, no-c-format
+msgid ""
+"Web Beans defines a binding type <literal>@Current</literal> that is the "
+"default binding type for any injection point or Web Bean that does not "
+"explicitly specify a binding type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:168
+#, no-c-format
+msgid ""
+"There are two common circumstances in which it is necessary to explicitly "
+"specify <literal>@Current</literal>:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:173
+#, no-c-format
+msgid ""
+"on a field, in order to declare it as an injected field with the default "
+"binding type, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:177
+#, no-c-format
+msgid ""
+"on a Web Bean which has another binding type in addition to the default "
+"binding type."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:187
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:189
+#, no-c-format
+msgid ""
+"All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment "
+"type identifies a set of Web Beans that should be conditionally installed in "
+"some deployments of the system."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:193
+#, no-c-format
+msgid ""
+"For example, we could define a deployment type named <literal>@Mock</"
+"literal>, which would identify Web Beans that should only be installed when "
+"the system executes inside an integration testing environment:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:197
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"  @Target({TYPE, METHOD})\n"
+"  @DeploymentType\n"
+"  public @interface Mock {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:199
+#, no-c-format
+msgid ""
+"Suppose we had some Web Bean that interacted with an external system to "
+"process payments:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:202
+#, no-c-format
+msgid ""
+"<![CDATA[public class ExternalPaymentProcessor {\n"
+"        \n"
+"    public void process(Payment p) {\n"
+"        ...\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:204
+#, no-c-format
+msgid ""
+"Since this Web Bean does not explicitly specify a deployment type, it has "
+"the default deployment type <literal>@Production</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:207
+#, no-c-format
+msgid ""
+"For integration or unit testing, the external system is slow or unavailable. "
+"So we would create a mock object:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:210
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock \n"
+"public class MockPaymentProcessor implements PaymentProcessor {\n"
+"\n"
+"    @Override\n"
+"    public void process(Payment p) {\n"
+"        p.setSuccessful(true);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:212
+#, no-c-format
+msgid ""
+"But how does the Web Bean manager determine which implementation to use in a "
+"particular deployment?"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:216
+#, no-c-format
+msgid "Enabling deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:218
+#, no-c-format
+msgid ""
+"Web Beans defines two built-in deployment types: <literal>@Production</"
+"literal> and <literal>@Standard</literal>. By default, only Web Beans with "
+"the built-in deployment types are enabled when the system is deployed. We "
+"can identify additional deployment types to be enabled in a particular "
+"deployment by listing them in <literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:224
+#, no-c-format
+msgid ""
+"Going back to our example, when we deploy our integration tests, we want all "
+"our <literal>@Mock</literal> objects to be installed:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:227
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans>\n"
+"    <Deploy>\n"
+"        <Standard/>\n"
+"        <Production/>\n"
+"        <test:Mock/>\n"
+"    </Deploy>\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:229
+#, no-c-format
+msgid ""
+"Now the Web Bean manager will identify and install all Web Beans annotated "
+"<literal>@Production</literal>, <literal>@Standard</literal> or "
+"<literal>@Mock</literal> at deployment time."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:233
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Standard</literal> is used only for certain "
+"special Web Beans defined by the Web Beans specification. We can't use it "
+"for our own Web Beans, and we can't disable it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:237
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Production</literal> is the default deployment "
+"type for Web Beans which don't explicitly declare a deployment type, and may "
+"be disabled."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:244
+#, no-c-format
+msgid "Deployment type precedence"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:246
+#, no-c-format
+msgid ""
+"If you've been paying attention, you're probably wondering how the Web Bean "
+"manager decides which implementation&#151;<literal>ExternalPaymentProcessor</"
+"literal> or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider "
+"what happens when the manager encounters this injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:251
+#, no-c-format
+msgid "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:253
+#, no-c-format
+msgid ""
+"There are now two Web Beans which satisfy the <literal>PaymentProcessor</"
+"literal> contract. Of course, we can't use a binding annotation to "
+"disambiguate, since binding annotations are hard-coded into the source at "
+"the injection point, and we want the manager to be able to decide at "
+"deployment time!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:258
+#, no-c-format
+msgid ""
+"The solution to this problem is that each deployment type has a different "
+"<emphasis>precedence</emphasis>. The precedence of the deployment types is "
+"determined by the order in which they appear in <literal>web-beans.xml</"
+"literal>. In our example, <literal>@Mock</literal> appears later than "
+"<literal>@Production</literal> so it has a higher precedence."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:264
+#, no-c-format
+msgid ""
+"Whenever the manager discovers that more than one Web Bean could satisfy the "
+"contract (API type plus binding annotations) specified by an injection "
+"point, it considers the relative precedence of the Web Beans. If one has a "
+"higher precedence than the others, it chooses the higher precedence Web Bean "
+"to inject. So, in our example, the Web Bean manager will inject "
+"<literal>MockPaymentProcessor</literal> when executing in our integration "
+"testing environment (which is exactly what we want)."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:271
+#, no-c-format
+msgid ""
+"It's interesting to compare this facility to today's popular manager "
+"architectures. Various \"lightweight\" containers also allow conditional "
+"deployment of classes that exist in the classpath, but the classes that are "
+"to be deployed must be explicity, individually, listed in configuration code "
+"or in some XML configuration file. Web Beans does support Web Bean "
+"definition and configuration via XML, but in the common case where no "
+"complex configuration is required, deployment types allow a whole set of Web "
+"Beans to be enabled with a single line of XML. Meanwhile, a developer "
+"browsing the code can easily identify what deployment scenarios the Web Bean "
+"will be used in."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:284
+#, no-c-format
+msgid "Example deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:286
+#, no-c-format
+msgid ""
+"Deployment types are useful for all kinds of things, here's some examples:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:290
+#, no-c-format
+msgid ""
+"<literal>@Mock</literal> and <literal>@Staging</literal> deployment types "
+"for testing"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:294
+#, no-c-format
+msgid "<literal>@AustralianTaxLaw</literal> for site-specific Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:297
+#, no-c-format
+msgid ""
+"<literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party "
+"frameworks which build on Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:301
+#, no-c-format
+msgid ""
+"<literal>@Standard</literal> for standard Web Beans defined by the Web Beans "
+"specification"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:306
+#, no-c-format
+msgid "I'm sure you can think of more applications..."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:313
+#, no-c-format
+msgid "Fixing unsatisfied dependencies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:315
+#, no-c-format
+msgid ""
+"The typesafe resolution algorithm fails when, after considering the binding "
+"annotations and and deployment types of all Web Beans that implement the API "
+"type of an injection point, the Web Bean manager is unable to identify "
+"exactly one Web Bean to inject."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:320
+#, no-c-format
+msgid ""
+"It's usually easy to fix an <literal>UnsatisfiedDependencyException</"
+"literal> or <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:323
+#, no-c-format
+msgid ""
+"To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide "
+"a Web Bean which implements the API type and has the binding types of the "
+"injection point&#151;or enable the deployment type of a Web Bean that "
+"already implements the API type and has the binding types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:328
+#, no-c-format
+msgid ""
+"To fix an <literal>AmbiguousDependencyException</literal>, introduce a "
+"binding type to distinguish between the two implementations of the API type, "
+"or change the deployment type of one of the implementations so that the Web "
+"Bean manager can use deployment type precedence to choose between them. An "
+"<literal>AmbiguousDependencyException</literal> can only occur if two Web "
+"Beans share a binding type and have exactly the same deployment type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:335
+#, no-c-format
+msgid ""
+"There's one more issue you need to be aware of when using dependency "
+"injection in Web Beans."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:341
+#, no-c-format
+msgid "Client proxies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:343
+#, no-c-format
+msgid ""
+"Clients of an injected Web Bean do not usually hold a direct reference to a "
+"Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:346
+#, no-c-format
+msgid ""
+"Imagine that a Web Bean bound to the application scope held a direct "
+"reference to a Web Bean bound to the request scope. The application scoped "
+"Web Bean is shared between many different requests. However, each request "
+"should see a different instance of the request scoped Web bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:351
+#, no-c-format
+msgid ""
+"Now imagine that a Web Bean bound to the session scope held a direct "
+"reference to a Web Bean bound to the application scope. From time to time, "
+"the session context is serialized to disk in order to use memory more "
+"efficiently. However, the application scoped Web Bean instance should not be "
+"serialized along with the session scoped Web Bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:357
+#, no-c-format
+msgid ""
+"Therefore, unless a Web Bean has the default scope <literal>@Dependent</"
+"literal>, the Web Bean manager must indirect all injected references to the "
+"Web Bean through a proxy object. This <emphasis>client proxy</emphasis> is "
+"responsible for ensuring that the Web Bean instance that receives a method "
+"invocation is the instance that is associated with the current context. The "
+"client proxy also allows Web Beans bound to contexts such as the session "
+"context to be serialized to disk without recursively serializing other "
+"injected Web Beans."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:365
+#, no-c-format
+msgid ""
+"Unfortunately, due to limitations of the Java language, some Java types "
+"cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager "
+"throws an <literal>UnproxyableDependencyException</literal> if the type of "
+"an injection point cannot be proxied."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:370
+#, no-c-format
+msgid "The following Java types cannot be proxied by the Web Bean manager:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:374
+#, no-c-format
+msgid ""
+"classes which are declared <literal>final</literal> or have a "
+"<literal>final</literal> method,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:378
+#, no-c-format
+msgid "classes which have no non-private constructor with no parameters, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:381
+#, no-c-format
+msgid "arrays and primitive types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:385
+#, no-c-format
+msgid ""
+"It's usually very easy to fix an <literal>UnproxyableDependencyException</"
+"literal>. Simply add a constructor with no parameters to the injected class, "
+"introduce an interface, or change the scope of the injected Web Bean to "
+"<literal>@Dependent</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:392
+#, no-c-format
+msgid "Obtaining a Web Bean by programatic lookup"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:394
+#, no-c-format
+msgid ""
+"The application may obtain an instance of the interface <literal>Manager</"
+"literal> by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:397
+#, no-c-format
+msgid "<![CDATA[@Current Manager manager;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:399
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> object provides a set of methods for "
+"obtaining a Web Bean instance programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:402
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:404
+#, no-c-format
+msgid ""
+"Binding annotations may be specified by subclassing the helper class "
+"<literal>AnnotationLiteral</literal>, since it is otherwise difficult to "
+"instantiate an annotation type in Java."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:408
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new "
+"AnnotationLiteral<CreditCard>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:410
+#, no-c-format
+msgid ""
+"If the binding type has an annotation member, we can't use an anonymous "
+"subclass of <literal>AnnotationLiteral</literal>&#151;instead we'll need to "
+"create a named subclass:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:413
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class CreditCardBinding \n"
+"    extends AnnotationLiteral<CreditCard> \n"
+"    implements CreditCard {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:415
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new CreditCardBinding() { \n"
+"                                                   public void value() "
+"{ return paymentType; } \n"
+"                                               } );]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:419
+#, no-c-format
+msgid ""
+"Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> "
+"and <literal>@PersistenceContext</literal>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:422
+#, no-c-format
+msgid ""
+"Enterprise Web Beans support all the lifecycle callbacks defined by the EJB "
+"specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:426
+#, no-c-format
+msgid ""
+"Simple Web Beans support only the <literal>@PostConstruct</literal> and "
+"<literal>@PreDestroy</literal> callbacks."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:429
+#, no-c-format
+msgid ""
+"Both enterprise and simple Web Beans support the use of <literal>@Resource</"
+"literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal> "
+"for injection of Java EE resources, EJBs and JPA persistence contexts, "
+"respectively. Simple Web Beans do not support the use of "
+"<literal>@PersistenceContext(type=EXTENDED)</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:434
+#, no-c-format
+msgid ""
+"The <literal>@PostConstruct</literal> callback always occurs after all "
+"dependencies have been injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:440
+#, no-c-format
+msgid "The <literal>InjectionPoint</literal> object"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:442
+#, no-c-format
+msgid ""
+"There are certain kinds of dependent objects&#151;Web Beans with scope "
+"<literal>@Dependent</literal>&#151;that need to know something about the "
+"object or injection point into which they are injected in order to be able "
+"to do what they do. For example:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:448
+#, no-c-format
+msgid ""
+"The log category for a <literal>Logger</literal> depends upon the class of "
+"the object that owns it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:452
+#, no-c-format
+msgid ""
+"Injection of a HTTP parameter or header value depends upon what parameter or "
+"header name was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:456
+#, no-c-format
+msgid ""
+"Injection of the result of an EL expression evaluation depends upon the "
+"expression that was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:461
+#, no-c-format
+msgid ""
+"A Web Bean with scope <literal>@Dependent</literal> may inject an instance "
+"of <literal>InjectionPoint</literal> and access metadata relating to the "
+"injection point to which it belongs."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:465
+#, no-c-format
+msgid ""
+"Let's look at an example. The following code is verbose, and vulnerable to "
+"refactoring problems:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:468
+#, no-c-format
+msgid "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:470
+#, no-c-format
+msgid ""
+"This clever little producer method lets you inject a JDK <literal>Logger</"
+"literal> without explicitly specifying the log category:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:473
+#, no-c-format
+msgid ""
+"<![CDATA[class LogFactory {\n"
+"\n"
+"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
+"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass()."
+"getName()); \n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:475
+#, no-c-format
+msgid "We can now write:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:477
+#, no-c-format
+msgid "<![CDATA[@Current Logger log;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:479
+#, no-c-format
+msgid ""
+"Not convinced? Then here's a second example. To inject HTTP parameters, we "
+"need to define a binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:482
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"public @interface HttpParam {\n"
+"   @NonBinding public String value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:484
+#, no-c-format
+msgid "We would use this binding type at injection points as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:486
+#, no-c-format
+msgid ""
+"<![CDATA[@HttpParam(\"username\") String username;\n"
+"@HttpParam(\"password\") String password;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:488
+#, no-c-format
+msgid "The following producer method does the work:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:490
+#, no-c-format
+msgid ""
+"<![CDATA[class HttpParams\n"
+"\n"
+"   @Produces @HttpParam(\"\")\n"
+"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
+"      return request.getParameter(ip.getAnnotation(HttpParam.class).value"
+"());\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:492
+#, no-c-format
+msgid ""
+"(Note that the <literal>value()</literal> member of the <literal>HttpParam</"
+"literal> annotation is ignored by the Web Bean manager since it is annotated "
+"<literal>@NonBinding.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:495
+#, no-c-format
+msgid ""
+"The Web Bean manager provides a built-in Web Bean that implements the "
+"<literal>InjectionPoint</literal> interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:498
+#, no-c-format
+msgid ""
+"<![CDATA[public interface InjectionPoint { \n"
+"   public Object getInstance(); \n"
+"   public Bean<?> getBean(); \n"
+"   public Member getMember(): \n"
+"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
+"   public Set<T extends Annotation> getAnnotations(); \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/pot/injection.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/interceptors.pot (from rev 638, doc/trunk/reference/pot/modules/interceptors.pot)
===================================================================
--- doc/trunk/reference/pot/interceptors.pot	                        (rev 0)
+++ doc/trunk/reference/pot/interceptors.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,573 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: interceptors.xml:4
+#, no-c-format
+msgid "Interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:6
+#, no-c-format
+msgid ""
+"Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending "
+"the functionality in two directions:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:11
+#, no-c-format
+msgid "Any Web Bean may have interceptors, not just session beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:14
+#, no-c-format
+msgid ""
+"Web Beans features a more sophisticated annotation-based approach to binding "
+"interceptors to Web Beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:22
+#, no-c-format
+msgid "The EJB specification defines two kinds of interception points:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:26
+#, no-c-format
+msgid "business method interception, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:29
+#, no-c-format
+msgid "lifecycle callback interception."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:33
+#, no-c-format
+msgid ""
+"A <emphasis>business method interceptor</emphasis> applies to invocations of "
+"methods of the Web Bean by clients of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:36
+#, no-c-format
+msgid ""
+"<![CDATA[public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:38
+#, no-c-format
+msgid ""
+"A <emphasis>lifecycle callback interceptor</emphasis> applies to invocations "
+"of lifecycle callbacks by the container:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[public class DependencyInjectionInterceptor {\n"
+"    @PostConstruct public void injectDependencies(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:43
+#, no-c-format
+msgid ""
+"An interceptor class may intercept both lifecycle callbacks and business "
+"methods."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:49
+#, no-c-format
+msgid "Interceptor bindings"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:51
+#, no-c-format
+msgid ""
+"Suppose we want to declare that some of our Web Beans are transactional. The "
+"first thing we need is an <emphasis>interceptor binding annotation</"
+"emphasis> to specify exactly which Web Beans we're interested in:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:55
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:57
+#, no-c-format
+msgid ""
+"Now we can easily specify that our <literal>ShoppingCart</literal> is a "
+"transactional object:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:60
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:62
+#, no-c-format
+msgid "Or, if we prefer, we can specify that just one method is transactional:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:69
+#, no-c-format
+msgid "Implementing interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:71
+#, no-c-format
+msgid ""
+"That's great, but somewhere along the line we're going to have to actually "
+"implement the interceptor that provides this transaction management aspect. "
+"All we need to do is create a standard EJB interceptor, and annotate it "
+"<literal>@Interceptor</literal> and <literal>@Transactional</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:78
+#, no-c-format
+msgid ""
+"All Web Beans interceptors are simple Web Beans, and can take advantage of "
+"dependency injection and contextual lifecycle management."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:83
+#, no-c-format
+msgid "Multiple interceptors may use the same interceptor binding type."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:88
+#, no-c-format
+msgid "Enabling interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:90
+#, no-c-format
+msgid ""
+"Finally, we need to <emphasis>enable</emphasis> our interceptor in "
+"<literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:93
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:95
+#, no-c-format
+msgid "Whoah! Why the angle bracket stew?"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:97
+#, no-c-format
+msgid "Well, the XML declaration solves two problems:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:101
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all the interceptors in our "
+"system, ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:105
+#, no-c-format
+msgid "it lets us enable or disable interceptor classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:109
+#, no-c-format
+msgid ""
+"For example, we could specify that our security interceptor runs before our "
+"<literal>TransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:112
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <sx:SecurityInterceptor/>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:114
+#, no-c-format
+msgid "Or we could turn them both off in our test environment!"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:119
+#, no-c-format
+msgid "Interceptor bindings with members"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:121
+#, no-c-format
+msgid ""
+"Suppose we want to add some extra information to our "
+"<literal>@Transactional</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:124
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {\n"
+"    boolean requiresNew() default false;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:126
+#, no-c-format
+msgid ""
+"Web Beans will use the value of <literal>requiresNew</literal> to choose "
+"between two different interceptors, <literal>TransactionInterceptor</"
+"literal> and <literal>RequiresNewTransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
+"public class RequiresNewTransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:132
+#, no-c-format
+msgid ""
+"Now we can use <literal>RequiresNewTransactionInterceptor</literal> like "
+"this:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:134
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:136
+#, no-c-format
+msgid ""
+"But what if we only have one interceptor and we want the manager to ignore "
+"the value of <literal>requiresNew</literal> when binding interceptors? We "
+"can use the <literal>@NonBinding</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:140
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Secure {\n"
+"    @NonBinding String[] rolesAllowed() default {};\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:145
+#, no-c-format
+msgid "Multiple interceptor binding annotations"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:147
+#, no-c-format
+msgid ""
+"Usually we use combinations of interceptor bindings types to bind multiple "
+"interceptors to a Web Bean. For example, the following declaration would be "
+"used to bind <literal>TransactionInterceptor</literal> and "
+"<literal>SecurityInterceptor</literal> to the same Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:152
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:154
+#, no-c-format
+msgid ""
+"However, in very complex cases, an interceptor itself may specify some "
+"combination of interceptor binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure @Interceptor\n"
+"public class TransactionalSecureInterceptor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:159
+#, no-c-format
+msgid ""
+"Then this interceptor could be bound to the <literal>checkout()</literal> "
+"method using any one of the following combinations:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:164
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure\n"
+"public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:166
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactionl\n"
+"public class ShoppingCart {\n"
+"    @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:168
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:173
+#, no-c-format
+msgid "Interceptor binding type inheritance"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:175
+#, no-c-format
+msgid ""
+"One limitation of the Java language support for annotations is the lack of "
+"annotation inheritance. Really, annotations should have reuse built in, to "
+"allow this kind of thing to work:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:179
+#, no-c-format
+msgid ""
+"<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:181
+#, no-c-format
+msgid ""
+"Well, fortunately, Web Beans works around this missing feature of Java. We "
+"may annotate one interceptor binding type with other interceptor binding "
+"types. The interceptor bindings are transitive&#151;any Web Bean with the "
+"first interceptor binding inherits the interceptor bindings declared as meta-"
+"annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:186
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"@InterceptorBindingType\n"
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"public @interface Action { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:188
+#, no-c-format
+msgid ""
+"Any Web Bean annotated <literal>@Action</literal> will be bound to both "
+"<literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</"
+"literal>. (And even <literal>TransactionalSecureInterceptor</literal>, if it "
+"exists.)"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:195
+#, no-c-format
+msgid "Use of <literal>@Interceptors</literal>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:197
+#, no-c-format
+msgid ""
+"The <literal>@Interceptors</literal> annotation defined by the EJB "
+"specification is supported for both enterprise and simple Web Beans, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:200
+#, no-c-format
+msgid ""
+"<![CDATA[@Interceptors({TransactionInterceptor.class, SecurityInterceptor."
+"class})\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:202
+#, no-c-format
+msgid "However, this approach suffers the following drawbacks:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:206
+#, no-c-format
+msgid "the interceptor implementation is hardcoded in business code,"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:209
+#, no-c-format
+msgid "interceptors may not be easily disabled at deployment time, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:212
+#, no-c-format
+msgid ""
+"the interceptor ordering is non-global&#151;it is determined by the order in "
+"which interceptors are listed at the class level."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:217
+#, no-c-format
+msgid ""
+"Therefore, we recommend the use of Web Beans-style interceptor bindings."
+msgstr ""


Property changes on: doc/trunk/reference/pot/interceptors.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/intro.pot (from rev 638, doc/trunk/reference/pot/modules/intro.pot)
===================================================================
--- doc/trunk/reference/pot/intro.pot	                        (rev 0)
+++ doc/trunk/reference/pot/intro.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1076 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: intro.xml:4
+#, no-c-format
+msgid "Getting started with Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:6
+#, no-c-format
+msgid ""
+"So you're already keen to get started writing your first Web Bean? Or "
+"perhaps you're skeptical, wondering what kinds of hoops the Web Beans "
+"specification will make you jump through! The good news is that you've "
+"probably already written and used hundreds, perhaps thousands of Web Beans. "
+"You might not even remember the first Web Bean you wrote."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:13
+#, no-c-format
+msgid "Your first Web Bean"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:15
+#, no-c-format
+msgid ""
+"With certain, very special exceptions, every Java class with a constructor "
+"that accepts no parameters is a Web Bean. That includes every JavaBean. "
+"Furthermore, every EJB 3-style session bean is a Web Bean. Sure, the "
+"JavaBeans and EJBs you've been writing every day have not been able to take "
+"advantage of the new services defined by the Web Beans specification, but "
+"you'll be able to use every one of them as Web Beans&#151;injecting them "
+"into other Web Beans, configuring them via the Web Beans XML configuration "
+"facility, even adding interceptors and decorators to them&#151;without "
+"touching your existing code."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:25
+#, no-c-format
+msgid ""
+"Suppose that we have two existing Java classes, that we've been using for "
+"years in various applications. The first class parses a string into a list "
+"of sentences:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class SentenceParser {\n"
+"    public List<String> parse(String text) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:31
+#, no-c-format
+msgid ""
+"The second existing class is a stateless session bean front-end for an "
+"external system that is able to translate sentences from one language to "
+"another:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class SentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:37
+#, no-c-format
+msgid "Where <literal>Translator</literal> is the local interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[@Local\n"
+"public interface Translator {\n"
+"    public String translate(String sentence);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:41
+#, no-c-format
+msgid ""
+"Unfortunately, we don't have a preexisting class that translates whole text "
+"documents. So let's write a Web Bean that does this job:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator {\n"
+"    \n"
+"    private SentenceParser sentenceParser;\n"
+"    private Translator sentenceTranslator;\n"
+"    \n"
+"    @Initializer\n"
+"    TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) {\n"
+"        this.sentenceParser = sentenceParser;\n"
+"        this.sentenceTranslator = sentenceTranslator;\n"
+"    }\n"
+"    \n"
+"    public String translate(String text) {\n"
+"        StringBuilder sb = new StringBuilder();\n"
+"        for (String sentence: sentenceParser.parse(text)) {\n"
+"            sb.append(sentenceTranslator.translate(sentence));\n"
+"        }\n"
+"        return sb.toString();\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:46
+#, no-c-format
+msgid ""
+"We may obtain an instance of <literal>TextTranslator</literal> by injecting "
+"it into a Web Bean, Servlet or EJB:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:49
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public setTextTranslator(TextTranslator textTranslator) {\n"
+"    this.textTranslator = textTranslator;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:51
+#, no-c-format
+msgid ""
+"Alternatively, we may obtain an instance by directly calling a method of the "
+"Web Bean manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:54
+#, no-c-format
+msgid ""
+"<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:56
+#, no-c-format
+msgid ""
+"But wait: <literal>TextTranslator</literal> does not have a constructor with "
+"no parameters! Is it still a Web Bean? Well, a class that does not have a "
+"constructor with no parameters can still be a Web Bean if it has a "
+"constructor annotated <literal>@Initializer</literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:61
+#, no-c-format
+msgid ""
+"As you've guessed, the <literal>@Initializer</literal> annotation has "
+"something to do with dependency injection! <literal>@Initializer</literal> "
+"may be applied to a constructor or method of a Web Bean, and tells the Web "
+"Bean manager to call that constructor or method when instantiating the Web "
+"Bean. The Web Bean manager will inject other Web Beans to the parameters of "
+"the constructor or method."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:68
+#, no-c-format
+msgid ""
+"At system initialization time, the Web Bean manager must validate that "
+"exactly one Web Bean exists which satisfies each injection point. In our "
+"example, if no implementation of <literal>Translator</literal> "
+"available&#151;if the <literal>SentenceTranslator</literal> EJB was not "
+"deployed&#151;the Web Bean manager would throw an "
+"<literal>UnsatisfiedDependencyException</literal>. If more than one "
+"implementation of <literal>Translator</literal> was available, the Web Bean "
+"manager would throw an <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:80
+#, no-c-format
+msgid "What is a Web Bean?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:82
+#, no-c-format
+msgid "So what, <emphasis>exactly</emphasis>, is a Web Bean?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:84
+#, no-c-format
+msgid ""
+"A Web Bean is an application class that contains business logic. A Web Bean "
+"may be called directly from Java code, or it may be invoked via Unified EL. "
+"A Web Bean may access transactional resources. Dependencies between Web "
+"Beans are managed automatically by the Web Bean manager. Most Web Beans are "
+"<emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The "
+"lifecycle of a Web Bean is always managed by the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:91
+#, no-c-format
+msgid ""
+"Let's back up a second. What does it really mean to be \"contextual\"? Since "
+"Web Beans may be stateful, it matters <emphasis>which</emphasis> bean "
+"instance I have. Unlike a stateless component model (for example, stateless "
+"session beans) or a singleton component model (such as servlets, or "
+"singleton beans), different clients of a Web Bean see the Web Bean in "
+"different states. The client-visible state depends upon which instance of "
+"the Web Bean the client has a reference to."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:98
+#, no-c-format
+msgid ""
+"However, like a stateless or singleton model, but <emphasis>unlike</"
+"emphasis> stateful session beans, the client does not control the lifecycle "
+"of the instance by explicitly creating and destroying it. Instead, the "
+"<emphasis>scope</emphasis> of the Web Bean determines:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:105
+#, no-c-format
+msgid "the lifecycle of each instance of the Web Bean and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:108
+#, no-c-format
+msgid ""
+"which clients share a reference to a particular instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:113
+#, no-c-format
+msgid ""
+"For a given thread in a Web Beans application, there may be an "
+"<emphasis>active context</emphasis> associated with the scope of the Web "
+"Bean. This context may be unique to the thread (for example, if the Web Bean "
+"is request scoped), or it may be shared with certain other threads (for "
+"example, if the Web Bean is session scoped) or even all other threads (if it "
+"is application scoped)."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:119
+#, no-c-format
+msgid ""
+"Clients (for example, other Web Beans) executing in the same context will "
+"see the same instance of the Web Bean. But clients in a different context "
+"will see a different instance."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:123
+#, no-c-format
+msgid ""
+"One great advantage of the contextual model is that it allows stateful Web "
+"Beans to be treated like services! The client need not concern itself with "
+"managing the lifecycle of the Web Bean it is using, <emphasis>nor does it "
+"even need to know what that lifecyle is.</emphasis> Web Beans interact by "
+"passing messages, and the Web Bean implementations define the lifecycle of "
+"their own state. The Web Beans are loosely coupled because:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:132
+#, no-c-format
+msgid "they interact via well-defined public APIs"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:135
+#, no-c-format
+msgid "their lifecycles are completely decoupled"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:139
+#, no-c-format
+msgid ""
+"We can replace one Web Bean with a different Web Bean that implements the "
+"same API and has a different lifecycle (a different scope) without affecting "
+"the other Web Bean implementation. In fact, Web Beans defines a "
+"sophisticated facility for overriding Web Bean implementations at deployment "
+"time, as we will see in <xref linkend=\"deploymenttypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:145
+#, no-c-format
+msgid ""
+"Note that not all clients of a Web Bean are Web Beans. Other objects such as "
+"Servlets or Message-Driven Beans&#151;which are by nature not injectable, "
+"contextual objects&#151;may also obtain references to Web Beans by injection."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:149
+#, no-c-format
+msgid "Enough hand-waving. More formally, according to the spec:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:153
+#, no-c-format
+msgid "A Web Bean comprises:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:156
+#, no-c-format
+msgid "A (nonempty) set of API types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:157
+#, no-c-format
+msgid "A (nonempty) set of binding annotation types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:158
+#, no-c-format
+msgid "A scope"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:159
+#, no-c-format
+msgid "A deployment type"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:160
+#, no-c-format
+msgid "Optionally, a Web Bean name"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:161
+#, no-c-format
+msgid "A set of interceptor binding types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:162
+#, no-c-format
+msgid "A Web Bean implementation"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:167
+#, no-c-format
+msgid "Let's see what some of these terms mean, to the Web Bean developer."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:170
+#, no-c-format
+msgid "API types, binding types and dependency injection"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:172
+#, no-c-format
+msgid ""
+"Web Beans usually acquire references to other Web Beans via dependency "
+"injection. Any injected attribute specifies a \"contract\" that must be "
+"satisfied by the Web Bean to be injected. The contract is:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:177
+#, no-c-format
+msgid "an API type, together with"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:178
+#, no-c-format
+msgid "a set of binding types."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:181
+#, no-c-format
+msgid ""
+"An API is a user-defined class or interface. (If the Web Bean is an EJB "
+"session bean, the API type is the <literal>@Local</literal> interface or "
+"bean-class local view). A binding type represents some client-visible "
+"semantic that is satisfied by some implementations of the API and not by "
+"others."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:186
+#, no-c-format
+msgid ""
+"Binding types are represented by user-defined annotations that are "
+"themselves annotated <literal>@BindingType</literal>. For example, the "
+"following injection point has API type <literal>PaymentProcessor</literal> "
+"and binding type <literal>@CreditCard</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:191
+#, no-c-format
+msgid "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:193
+#, no-c-format
+msgid ""
+"If no binding type is explicitly specified at an injection point, the "
+"default binding type <literal>@Current</literal> is assumed."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:196
+#, no-c-format
+msgid ""
+"For each injection point, the Web Bean manager searches for a Web Bean which "
+"satisfies the contract (implements the API, and has all the binding types), "
+"and injects that Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:200
+#, no-c-format
+msgid ""
+"The following Web Bean has the binding type <literal>@CreditCard</literal> "
+"and implements the API type <literal>PaymentProcessor</literal>. It could "
+"therefore be injected to the example injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:204
+#, no-c-format
+msgid ""
+"<![CDATA[@CreditCard\n"
+"public class CreditCardPaymentProcessor \n"
+"    implements PaymentProcessor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:206
+#, no-c-format
+msgid ""
+"If a Web Bean does not explicitly specify a set of binding types, it has "
+"exactly one binding type: the default binding type <literal>@Current</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:209
+#, no-c-format
+msgid ""
+"Web Beans defines a sophisticated but intuitive <emphasis>resolution "
+"algorithm</emphasis> that helps the container decide what to do if there is "
+"more than one Web Bean that satisfies a particular contract. We'll get into "
+"the details in <xref linkend=\"injection\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:217
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:219
+#, no-c-format
+msgid ""
+"<emphasis>Deployment types</emphasis> let us classify our Web Beans by "
+"deployment scenario. A deployment type is an annotation that represents a "
+"particular deployment scenario, for example <literal>@Mock</literal>, "
+"<literal>@Staging</literal> or <literal>@AustralianTaxLaw</literal>. We "
+"apply the annotation to Web Beans which should be deployed in that scenario. "
+"A deployment type allows a whole set of Web Beans to be conditionally "
+"deployed, with a just single line of configuration."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:226
+#, no-c-format
+msgid ""
+"Many Web Beans just use the default deployment type <literal>@Production</"
+"literal>, in which case no deployment type need be explicitly specified. All "
+"three Web Bean in our example have the deployment type <literal>@Production</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:230
+#, no-c-format
+msgid ""
+"In a testing environment, we might want to replace the "
+"<literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:233
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock\n"
+"public class MockSentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) {\n"
+"        return \"Lorem ipsum dolor sit amet\";\n"
+"    }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:236
+#, no-c-format
+msgid ""
+"We would enable the deployment type <literal>@Mock</literal> in our testing "
+"environment, to indicate that <literal>MockSentenceTranslator</literal> and "
+"any other Web Bean annotated <literal>@Mock</literal> should be used."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:240
+#, no-c-format
+msgid ""
+"We'll talk more about this unique and powerful feature in <xref linkend="
+"\"deploymenttypes\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:246
+#, no-c-format
+msgid "Scope"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:248
+#, no-c-format
+msgid ""
+"The <emphasis>scope</emphasis> defines the lifecycle and visibility of "
+"instances of the Web Bean. The Web Beans context model is extensible, "
+"accommodating arbitrary scopes. However, certain important scopes are built-"
+"in to the specification, and provided by the Web Bean manager. A scope is "
+"represented by an annotation type."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:254
+#, no-c-format
+msgid ""
+"For example, any web application may have <emphasis>session scoped</"
+"emphasis> Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:257
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:259
+#, no-c-format
+msgid ""
+"An instance of a session scoped Web Bean is bound to a user session and is "
+"shared by all requests that execute in the context of that session."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:262
+#, no-c-format
+msgid ""
+"By default, Web Beans belong to a special scope called the "
+"<emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are "
+"pure dependent objects of the object into which they are injected, and their "
+"lifecycle is bound to the lifecycle of that object."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:267
+#, no-c-format
+msgid "We'll talk more about scopes in <xref linkend=\"scopescontexts\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:272
+#, no-c-format
+msgid "Web Bean names and Unified EL"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:274
+#, no-c-format
+msgid ""
+"A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in "
+"Unified EL expressions. It's easy to specify the name of a Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:278
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named(\"cart\")\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:280
+#, no-c-format
+msgid "Now we can easily use the Web Bean in any JSF or JSP page:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:282
+#, no-c-format
+msgid ""
+"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
+"    ....\n"
+"</h:dataTable>]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:284
+#, no-c-format
+msgid ""
+"It's even easier to just let the name be defaulted by the Web Bean manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:287
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:289
+#, no-c-format
+msgid ""
+"In this case, the name defaults to <literal>shoppingCart</literal>&#151;the "
+"unqualified class name, with the first character changed to lowercase."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:295
+#, no-c-format
+msgid "Interceptor binding types"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:297
+#, no-c-format
+msgid ""
+"Web Beans supports the interceptor functionality defined by EJB 3, not only "
+"for EJB beans, but also for plain Java classes. In addition, Web Beans "
+"provides a new approach to binding interceptors to EJB beans and other Web "
+"Beans."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:302
+#, no-c-format
+msgid ""
+"It remains possible to directly specify the interceptor class via use of the "
+"<literal>@Interceptors</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:305
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped \n"
+"@Interceptors(TransactionInterceptor.class)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:307
+#, no-c-format
+msgid ""
+"However, it is more elegant, and better practice, to indirect the "
+"interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:313
+#, no-c-format
+msgid ""
+"We'll discuss Web Beans interceptors and decorators in <xref linkend="
+"\"interceptors\"/> and <xref linkend=\"decorators\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:321
+#, no-c-format
+msgid "What kinds of objects can be Web Beans?"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:323
+#, no-c-format
+msgid ""
+"We've already seen that JavaBeans, EJBs and some other Java classes can be "
+"Web Beans. But exactly what kinds of objects are Web Beans?"
+msgstr ""
+
+#. Tag: title
+#: intro.xml:327
+#, no-c-format
+msgid "Simple Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:329
+#, no-c-format
+msgid ""
+"The Web Beans specification says that a concrete Java class is a "
+"<emphasis>simple</emphasis> Web Bean if:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:334
+#, no-c-format
+msgid ""
+"it is not an EE container-managed component, like an EJB, a Servlet or a JPA "
+"entity,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:338
+#, no-c-format
+msgid "it is not a non-static static inner class,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:341
+#, no-c-format
+msgid "it is not a parameterized type, and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:344
+#, no-c-format
+msgid ""
+"it has a constructor with no parameters, or a constructor annotated "
+"<literal>@Initializer</literal>."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:349
+#, no-c-format
+msgid "Thus, almost every JavaBean is a simple Web Bean."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:351
+#, no-c-format
+msgid ""
+"Every interface implemented directly or indirectly by a simple Web Bean is "
+"an API type of the simple Web Bean. The class and its superclasses are also "
+"API types."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:358
+#, no-c-format
+msgid "Enterprise Web Beans"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:360
+#, no-c-format
+msgid ""
+"The specification says that all EJB 3-style session and singleton beans are "
+"<emphasis>enterprise</emphasis> Web Beans. Message driven beans are not Web "
+"Beans&#151;since they are not intended to be injected into other "
+"objects&#151;but they can take advantage of most of the functionality of Web "
+"Beans, including dependency injection and interceptors."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:366
+#, no-c-format
+msgid ""
+"Every local interface of an enterprise Web Bean that does not have a "
+"wildcard type parameter or type variable, and every one of its "
+"superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean "
+"has a bean class local view, the bean class, and every one of its "
+"superclasses, is also an API type."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:372
+#, no-c-format
+msgid ""
+"Stateful session beans should declare a remove method with no parameters or "
+"a remove method annotated <literal>@Destructor</literal>. The Web Bean "
+"manager calls this method to destroy the stateful session bean instance at "
+"the end of its lifecycle. This method is called the <emphasis>destructor</"
+"emphasis> method of the enterprise Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:378
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful @SessionScoped\n"
+"public class ShoppingCart {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:380
+#, no-c-format
+msgid ""
+"So when should we use an enterprise Web Bean instead of a simple Web Bean? "
+"Well, whenever we need the advanced enterprise services offered by EJB, such "
+"as:"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:387
+#, no-c-format
+msgid "method-level transaction management and security,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:390
+#, no-c-format
+msgid "concurrency management,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:393
+#, no-c-format
+msgid ""
+"instance-level passivation for stateful session beans and instance-pooling "
+"for stateless session beans,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:397
+#, no-c-format
+msgid "remote and web service invocation, and"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:400
+#, no-c-format
+msgid "timers and asynchronous methods,"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:404
+#, no-c-format
+msgid ""
+"we should use an enterprise Web Bean. When we don't need any of these "
+"things, a simple Web Bean will serve just fine."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:407
+#, no-c-format
+msgid ""
+"Many Web Beans (including any session or application scoped Web Bean) are "
+"available for concurrent access. Therefore, the concurrency management "
+"provided by EJB 3.1 is especially useful. Most session and application "
+"scoped Web Beans should be EJBs."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:412
+#, no-c-format
+msgid ""
+"Web Beans which hold references to heavy-weight resources, or hold a lot of "
+"internal state benefit from the advanced container-managed lifecycle defined "
+"by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/"
+"<literal>@Singleton</literal> model, with its support for passivation and "
+"instance pooling."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:417
+#, no-c-format
+msgid ""
+"Finally, it's usually obvious when method-level transaction management, "
+"method-level security, timers, remote methods or asynchronous methods are "
+"needed."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:420
+#, no-c-format
+msgid ""
+"It's usually easy to start with simple Web Bean, and then turn it into an "
+"EJB, just by adding an annotation: <literal>@Stateless</literal>, "
+"<literal>@Stateful</literal> or <literal>@Singleton</literal>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:427
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:429
+#, no-c-format
+msgid ""
+"A <emphasis>producer method</emphasis> is a method that is called by the Web "
+"Bean manager to obtain an instance of the Web Bean when no instance exists "
+"in the current context. A producer method lets the application take full "
+"control of the instantiation process, instead of leaving instantiation to "
+"the Web Bean manager. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:435
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"\n"
+"    private Random random = new Random( System.currentTimeMillis() );\n"
+"    \n"
+"    @Produces @Random int next() {\n"
+"        return random.nextInt(100);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:437
+#, no-c-format
+msgid ""
+"The result of a producer method is injected just like any other Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:439
+#, no-c-format
+msgid "<![CDATA[@Random int randomNumber]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:441
+#, no-c-format
+msgid ""
+"The method return type and all interfaces it extends/implements directly or "
+"indirectly are API types of the producer method. If the return type is a "
+"class, all superclasses are also API types."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:445
+#, no-c-format
+msgid "Some producer methods return objects that require explicit destruction:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:447
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
+"    return createConnection( user.getId(), user.getPassword() );\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:449
+#, no-c-format
+msgid ""
+"These producer methods may define matching <emphasis>disposal methods</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: intro.xml:451
+#, no-c-format
+msgid ""
+"<![CDATA[void close(@Disposes Connection connection) {\n"
+"    connection.close();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:453
+#, no-c-format
+msgid ""
+"This disposal method is called automatically by the Web Bean manager at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: intro.xml:456
+#, no-c-format
+msgid ""
+"We'll talk much more about producer methods in <xref linkend="
+"\"producermethods\"/>."
+msgstr ""
+
+#. Tag: title
+#: intro.xml:461
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: intro.xml:463
+#, no-c-format
+msgid ""
+"Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the "
+"developer from the tedium of managing the lifecycles of all the various JMS "
+"objects required to send messages to queues and topics. We'll discuss JMS "
+"endpoints in <xref linkend=\"jms\"/>."
+msgstr ""


Property changes on: doc/trunk/reference/pot/intro.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: doc/trunk/reference/pot/master.pot
===================================================================
--- doc/trunk/reference/pot/master.pot	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/pot/master.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"

Copied: doc/trunk/reference/pot/next.pot (from rev 638, doc/trunk/reference/pot/modules/next.pot)
===================================================================
--- doc/trunk/reference/pot/next.pot	                        (rev 0)
+++ doc/trunk/reference/pot/next.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,50 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: next.xml:4
+#, no-c-format
+msgid "Next steps"
+msgstr ""
+
+#. Tag: para
+#: next.xml:6
+#, no-c-format
+msgid ""
+"Because Web Beans is so new, there's not yet a lot of information available "
+"online."
+msgstr ""
+
+#. Tag: para
+#: next.xml:9
+#, no-c-format
+msgid ""
+"Of course, the Web Beans specification is the best source of more "
+"information about Web Beans. The spec is about 100 pages long, only twice "
+"the length of this article, and almost as readable. But, of course, it "
+"covers many details that we've skipped over. The spec is available from "
+"<literal>http://jcp.org/en/jsr/detail?id=299</literal>."
+msgstr ""
+
+#. Tag: para
+#: next.xml:15
+#, no-c-format
+msgid ""
+"The Web Beans Reference implementation is being developed at <literal>http://"
+"seamframework.org/WebBeans</literal>. The RI development team and the Web "
+"Beans spec lead blog at <literal>http://in.relation.to</literal>. This "
+"article is substantially based upon a series of blog entries published there."
+msgstr ""


Property changes on: doc/trunk/reference/pot/next.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/part1.pot (from rev 638, doc/trunk/reference/pot/modules/part1.pot)
===================================================================
--- doc/trunk/reference/pot/part1.pot	                        (rev 0)
+++ doc/trunk/reference/pot/part1.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,230 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part1.xml:5
+#, no-c-format
+msgid ""
+"The Web Beans (JSR-299) specification defines a set of services for the Java "
+"EE environment that makes applications much easier to develop. Web Beans "
+"layers an enhanced lifecycle and interaction model over existing Java "
+"component types including JavaBeans and Enterprise Java Beans. As a "
+"complement to the traditional Java EE programming model, the Web Beans "
+"services provide:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:14
+#, no-c-format
+msgid ""
+"an improved lifecycle for stateful components, bound to well-defined "
+"<emphasis>contexts</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:18
+#, no-c-format
+msgid "a typesafe approach to <emphasis>dependency injection</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:21
+#, no-c-format
+msgid ""
+"interaction via an <emphasis>event notification</emphasis> facility, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:25
+#, no-c-format
+msgid ""
+"a better approach to binding <emphasis>interceptors</emphasis> to "
+"components, along with a new kind of interceptor, called a "
+"<emphasis>decorator</emphasis>, that is more appropriate for use in solving "
+"business problems."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:32
+#, no-c-format
+msgid ""
+"Dependency injection, together with contextual lifecycle management, saves "
+"the user of an unfamiliar API from having to ask and answer the following "
+"questions:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:38
+#, no-c-format
+msgid "what is the lifecycle of this object?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:41
+#, no-c-format
+msgid "how many simultaneous clients can it have?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:44
+#, no-c-format
+msgid "is it multithreaded?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:47
+#, no-c-format
+msgid "where can I get one from?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:50
+#, no-c-format
+msgid "do I need to explicitly destroy it?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:53
+#, no-c-format
+msgid "where should I keep my reference to it when I'm not using it directly?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:57
+#, no-c-format
+msgid ""
+"how can I add an indirection layer, so that the implementation of this "
+"object can vary at deployment time?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:61
+#, no-c-format
+msgid "how should I go about sharing this object between other objects?"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:65
+#, no-c-format
+msgid ""
+"A Web Bean specifies only the type and semantics of other Web Beans it "
+"depends upon. It need not be aware of the actual lifecycle, concrete "
+"implementation, threading model or other clients of any Web Bean it depends "
+"upon. Even better, the concrete implementation, lifecycle and threading "
+"model of a Web Bean it depends upon may vary according to the deployment "
+"scenario, without affecting any client."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:72
+#, no-c-format
+msgid ""
+"Events, interceptors and decorators enhance the <emphasis>loose-coupling</"
+"emphasis> that is inherent in this model:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:77
+#, no-c-format
+msgid ""
+"<emphasis>event notifications</emphasis> decouple event producers from event "
+"consumers,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:81
+#, no-c-format
+msgid ""
+"<emphasis>interceptors</emphasis> decouple technical concerns from business "
+"logic, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:85
+#, no-c-format
+msgid ""
+"<emphasis>decorators</emphasis> allow business concerns to be "
+"compartmentalized."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:90
+#, no-c-format
+msgid ""
+"Most importantly, Web Beans provides all these facilities in a "
+"<emphasis>typesafe</emphasis> way. Web Beans never uses string-based "
+"identifiers to determine how collaborating objects fit together. And XML, "
+"though it remains an option, is rarely used. Instead, Web Beans uses the "
+"typing information that is already available in the Java object model, "
+"together with a new pattern, called <emphasis>binding annotations</"
+"emphasis>, to wire together Web Beans, their dependencies, their "
+"interceptors and decorators and their event consumers."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:100
+#, no-c-format
+msgid ""
+"The Web Beans services are general and apply to the following types of "
+"components that exist in the Java EE environment:"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:105
+#, no-c-format
+msgid "all JavaBeans,"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:108
+#, no-c-format
+msgid "all EJBs, and"
+msgstr ""
+
+#. Tag: para
+#: part1.xml:111
+#, no-c-format
+msgid "all Servlets."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:115
+#, no-c-format
+msgid ""
+"Web Beans even provides the necessary integration points so that other kinds "
+"of components defined by future Java EE specifications or by non-standard "
+"frameworks may be cleanly integrated with Web Beans, take advantage of the "
+"Web Beans services, and interact with any other kind of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:120
+#, no-c-format
+msgid ""
+"Web Beans was influenced by a number of existing Java frameworks, including "
+"Seam, Guice and Spring. However, Web Beans has its own very distinct "
+"character: more typesafe than Seam, more stateful and less XML-centric than "
+"Spring, more web and enterprise-application capable than Guice."
+msgstr ""
+
+#. Tag: para
+#: part1.xml:125
+#, no-c-format
+msgid ""
+"Most importantly, Web Beans is a JCP standard that integrates cleanly with "
+"Java EE, and with any Java SE environment where embeddable EJB Lite is "
+"available."
+msgstr ""


Property changes on: doc/trunk/reference/pot/part1.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/part2.pot (from rev 638, doc/trunk/reference/pot/modules/part2.pot)
===================================================================
--- doc/trunk/reference/pot/part2.pot	                        (rev 0)
+++ doc/trunk/reference/pot/part2.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,103 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part2.xml:5
+#, no-c-format
+msgid ""
+"The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. "
+"We've already seen three means of achieving loose coupling:"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:10
+#, no-c-format
+msgid ""
+"<emphasis>deployment types</emphasis> enable deployment time polymorphism,"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:14
+#, no-c-format
+msgid "<emphasis>producer methods</emphasis> enable runtime polymorphism, and"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:18
+#, no-c-format
+msgid ""
+"<emphasis>contextual lifecycle management</emphasis> decouples Web Bean "
+"lifecycles."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:23
+#, no-c-format
+msgid ""
+"These techniques serve to enable loose coupling of client and server. The "
+"client is no longer tightly bound to an implementation of an API, nor is it "
+"required to manage the lifecycle of the server object. This approach lets "
+"<emphasis>stateful objects interact as if they were services</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:28
+#, no-c-format
+msgid ""
+"Loose coupling makes a system more <emphasis>dynamic</emphasis>. The system "
+"can respond to change in a well-defined manner. In the past, frameworks that "
+"attempted to provide the facilities listed above invariably did it by "
+"sacrificing type safety. Web Beans is the first technology that achieves "
+"this level of loose coupling in a typesafe way."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:34
+#, no-c-format
+msgid ""
+"Web Beans provides three extra important facilities that further the goal of "
+"loose coupling:"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:39
+#, no-c-format
+msgid ""
+"<emphasis>interceptors</emphasis> decouple technical concerns from business "
+"logic,"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:43
+#, no-c-format
+msgid ""
+"<emphasis>decorators</emphasis> may be used to decouple some business "
+"concerns, and"
+msgstr ""
+
+#. Tag: para
+#: part2.xml:47
+#, no-c-format
+msgid ""
+"<emphasis>event notifications</emphasis> decouple event producers from event "
+"consumers."
+msgstr ""
+
+#. Tag: para
+#: part2.xml:52
+#, no-c-format
+msgid "Let's explore interceptors first."
+msgstr ""


Property changes on: doc/trunk/reference/pot/part2.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/part3.pot (from rev 638, doc/trunk/reference/pot/modules/part3.pot)
===================================================================
--- doc/trunk/reference/pot/part3.pot	                        (rev 0)
+++ doc/trunk/reference/pot/part3.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,151 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part3.xml:5
+#, no-c-format
+msgid ""
+"The second major theme of Web Beans is <emphasis>strong typing</emphasis>. "
+"The information about the dependencies, interceptors and decorators of a Web "
+"Bean, and the information about event consumers for an event producer, is "
+"contained in typesafe Java constructs that may be validated by the compiler."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:10
+#, no-c-format
+msgid ""
+"You don't see string-based identifiers in Web Beans code, not because the "
+"framework is hiding them from you using clever defaulting rules&#151;so-"
+"called \"configuration by convention\"&#151;but because there are simply no "
+"strings there to begin with!"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:15
+#, no-c-format
+msgid ""
+"The obvious benefit of this approach is that <emphasis>any</emphasis> IDE "
+"can provide autocompletion, validation and refactoring without the need for "
+"special tooling. But there is a second, less-immediately-obvious, benefit. "
+"It turns out that when you start thinking of identifying objects, events or "
+"interceptors via annotations instead of names, you have an opportunity to "
+"lift the semantic level of your code."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:21
+#, no-c-format
+msgid ""
+"Web Beans encourages you develop annotations that model concepts, for "
+"example,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:26
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:29
+#, no-c-format
+msgid "<literal>@Mock</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:32
+#, no-c-format
+msgid "<literal>@Secure</literal> or"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:35
+#, no-c-format
+msgid "<literal>@Updated</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:39
+#, no-c-format
+msgid "instead of using compound names like"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:43
+#, no-c-format
+msgid "<literal>asyncPaymentProcessor</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:46
+#, no-c-format
+msgid "<literal>mockPaymentProcessor</literal>,"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:49
+#, no-c-format
+msgid "<literal>SecurityInterceptor</literal> or"
+msgstr ""
+
+#. Tag: para
+#: part3.xml:52
+#, no-c-format
+msgid "<literal>DocumentUpdatedEvent</literal>."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:56
+#, no-c-format
+msgid ""
+"The annotations are reusable. They help describe common qualities of "
+"disparate parts of the system. They help us categorize and understand our "
+"code. They help us deal with common concerns in a common way. They make our "
+"code more literate and more understandable."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:61
+#, no-c-format
+msgid ""
+"Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A "
+"stereotype models a common <emphasis>role</emphasis> in your application "
+"architecture. It encapsulates various properties of the role, including "
+"scope, interceptor bindings, deployment type, etc, into a single reusable "
+"package."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:66
+#, no-c-format
+msgid ""
+"Even Web Beans XML metadata is strongly typed! There's no compiler for XML, "
+"so Web Beans takes advantage of XML schemas to validate the Java types and "
+"attributes that appear in XML. This approach turns out to make the XML more "
+"literate, just like annotations made our Java code more literate."
+msgstr ""
+
+#. Tag: para
+#: part3.xml:71
+#, no-c-format
+msgid ""
+"We're now ready to meet some more advanced features of Web Beans. Bear in "
+"mind that these features exist to make our code both easier to validate and "
+"more understandable. Most of the time you don't ever really <emphasis>need</"
+"emphasis> to use these features, but if you use them wisely, you'll come to "
+"appreciate their power."
+msgstr ""


Property changes on: doc/trunk/reference/pot/part3.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/part4.pot (from rev 638, doc/trunk/reference/pot/modules/part4.pot)
===================================================================
--- doc/trunk/reference/pot/part4.pot	                        (rev 0)
+++ doc/trunk/reference/pot/part4.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,53 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part4.xml:5
+#, no-c-format
+msgid ""
+"The third theme of Web Beans is <emphasis>integration</emphasis>. Web Beans "
+"was designed to work in concert with other technologies, helping the "
+"application developer fit the other technologies together. Web Beans is an "
+"open technology. It forms a part of the Java EE ecosystem, and is itself the "
+"foundation for a new ecosystem of portable extensions and integration with "
+"existing frameworks and technologies."
+msgstr ""
+
+#. Tag: para
+#: part4.xml:12
+#, no-c-format
+msgid ""
+"We've already seen how Web Beans helps integrate EJB and JSF, allowing EJBs "
+"to be bound directly to JSF pages. That's just the beginning. Web Beans "
+"offers the same potential to diverse other technologies, such as Business "
+"Process Management engines, other Web Frameworks, and third-party component "
+"models. The Java EE platform will never be able to standardize all the "
+"interesting technologies that are used in the world of Java application "
+"development, but Web Beans makes it easier to use the technologies which are "
+"not yet part of the platform seamlessly within the Java EE environment."
+msgstr ""
+
+#. Tag: para
+#: part4.xml:21
+#, no-c-format
+msgid ""
+"We're about to see how to take full advantage of the Java EE platform in an "
+"application that uses Web Beans. We'll also briefly meet a set of SPIs that "
+"are provided to support portable extensions to Web Beans. You might not ever "
+"need to use these SPIs directly, but it's nice to know they are there if you "
+"need them. Most importantly, you'll take advantage of them indirectly, every "
+"time you use a third-party extension."
+msgstr ""


Property changes on: doc/trunk/reference/pot/part4.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/producermethods.pot (from rev 638, doc/trunk/reference/pot/modules/producermethods.pot)
===================================================================
--- doc/trunk/reference/pot/producermethods.pot	                        (rev 0)
+++ doc/trunk/reference/pot/producermethods.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,248 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: producermethods.xml:5
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:7
+#, no-c-format
+msgid ""
+"Producer methods let us overcome certain limitations that arise when the Web "
+"Bean manager, instead of the application, is responsible for instantiating "
+"objects. They're also the easiest way to integrate objects which are not Web "
+"Beans into the Web Beans environment. (We'll meet a second approach in <xref "
+"linkend=\"xml\"/>.)"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:12
+#, no-c-format
+msgid "According to the spec:"
+msgstr ""
+
+#. Tag: chapter
+#: producermethods.xml:12
+#, no-c-format
+msgid ""
+"<blockquote> <para>A Web Beans producer method acts as a source of objects "
+"to be injected, where:</para> <itemizedlist> <listitem> <para>the objects to "
+"be injected are not required to be instances of Web Beans,</para> </"
+"listitem> <listitem> <para>the concrete type of the objects to be injected "
+"may vary at runtime or</para> </listitem> <listitem> <para>the objects "
+"require some custom initialization that is not performed by the Web Bean "
+"constructor</para> </listitem> </itemizedlist> </blockquote> <para>For "
+"example, producer methods let us:</para> <itemizedlist> <listitem> "
+"<para>expose a JPA entity as a Web Bean,</para> </listitem> <listitem> "
+"<para>expose any JDK class as a Web Bean,</para> </listitem> <listitem> "
+"<para>define multiple Web Beans, with different scopes or initialization, "
+"for the same implementation class, or</para> </listitem> <listitem> "
+"<para>vary the implementation of an API type at runtime.</para> </listitem> "
+"</itemizedlist> <para>In particular, producer methods let us use runtime "
+"polymorphism with Web Beans. As we've seen, deployment types are a powerful "
+"solution to the problem of deployment-time polymorphism. But once the system "
+"is deployed, the Web Bean implementation is fixed. A producer method has no "
+"such limitation:</para> <programlisting role=\"JAVA\"><![CDATA"
+"[@SessionScoped\n"
+"public class Preferences {\n"
+"    \n"
+"    private PaymentStrategyType paymentStrategy;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    @Produces @Preferred \n"
+"    public PaymentStrategy getPaymentStrategy() {\n"
+"        switch (paymentStrategy) {\n"
+"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
+"            case CHEQUE: return new ChequePaymentStrategy();\n"
+"            case PAYPAL: return new PayPalPaymentStrategy();\n"
+"            default: return null;\n"
+"        } \n"
+"    }\n"
+"    \n"
+"}]]></programlisting> <para>Consider an injection point:</para> "
+"<programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy "
+"paymentStrat;]]></programlisting> <para>This injection point has the same "
+"type and binding annotations as the producer method, so it resolves to the "
+"producer method using the usual Web Beans injection rules. The producer "
+"method will be called by the Web Bean manager to obtain an instance to "
+"service this injection point.</para>."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:68
+#, no-c-format
+msgid "Scope of a producer method"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:70
+#, no-c-format
+msgid ""
+"The scope of the producer method defaults to <literal>@Dependent</literal>, "
+"and so it will be called <emphasis>every time</emphasis> the Web Bean "
+"manager injects this field or any other field that resolves to the same "
+"producer method. Thus, there could be multiple instances of the "
+"<literal>PaymentStrategy</literal> object for each user session."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:75
+#, no-c-format
+msgid ""
+"To change this behavior, we can add a <literal>@SessionScoped</literal> "
+"annotation to the method."
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy() {\n"
+"    ...\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:80
+#, no-c-format
+msgid ""
+"Now, when the producer method is called, the returned "
+"<literal>PaymentStrategy</literal> will be bound to the session context. The "
+"producer method won't be called again in the same session."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:87
+#, no-c-format
+msgid "Injection into producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:89
+#, no-c-format
+msgid ""
+"There's one potential problem with the code above. The implementations of "
+"<literal>CreditCardPaymentStrategy</literal> are instantiated using the Java "
+"<literal>new</literal> operator. Objects instantiated directly by the "
+"application can't take advantage of dependency injection and don't have "
+"interceptors."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:94
+#, no-c-format
+msgid ""
+"If this isn't what we want we can use dependency injection into the producer "
+"method to obtain Web Bean instances:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:97
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
+"                                          ChequePaymentStrategy cps,\n"
+"                                          PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:99
+#, no-c-format
+msgid ""
+"Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request "
+"scoped Web Bean? Then the producer method has the effect of \"promoting\" "
+"the current request scoped instance into session scope. This is almost "
+"certainly a bug! The request scoped object will be destroyed by the Web Bean "
+"manager before the session ends, but the reference to the object will be "
+"left \"hanging\" in the session scope. This error will <emphasis>not</"
+"emphasis> be detected by the Web Bean manager, so please take extra care "
+"when returning Web Bean instances from producer methods!"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:107
+#, no-c-format
+msgid ""
+"There's at least three ways we could go about fixing this bug. We could "
+"change the scope of the <literal>CreditCardPaymentStrategy</literal> "
+"implementation, but this would affect other clients of that Web Bean. A "
+"better option would be to change the scope of the producer method to "
+"<literal>@Dependent</literal> or <literal>@RequestScoped</literal>."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:113
+#, no-c-format
+msgid ""
+"But a more common solution is to use the special <literal>@New</literal> "
+"binding annotation."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:119
+#, no-c-format
+msgid "Use of <literal>@New</literal> with producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:121
+#, no-c-format
+msgid "Consider the following producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:123
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy "
+"ccps,\n"
+"                                          @New ChequePaymentStrategy cps,\n"
+"                                          @New PayPalPaymentStrategy ppps) "
+"{\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:125
+#, no-c-format
+msgid ""
+"Then a new <emphasis>dependent</emphasis> instance of "
+"<literal>CreditCardPaymentStrategy</literal> will be created, passed to the "
+"producer method, returned by the producer method and finally bound to the "
+"session context. The dependent object won't be destroyed until the "
+"<literal>Preferences</literal> object is destroyed, at the end of the "
+"session."
+msgstr ""


Property changes on: doc/trunk/reference/pot/producermethods.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/ri-spi.pot (from rev 638, doc/trunk/reference/pot/modules/ri-spi.pot)
===================================================================
--- doc/trunk/reference/pot/ri-spi.pot	                        (rev 0)
+++ doc/trunk/reference/pot/ri-spi.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,273 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri-spi.xml:4
+#, no-c-format
+msgid "Integrating the Web Beans RI into other environments"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:6
+#, no-c-format
+msgid ""
+"Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI into "
+"other EE environments (for example another application server like "
+"Glassfish), into a servlet container (like Tomcat), or with an Embedded "
+"EJB3.1 implementation is fairly easy. In this Appendix we will briefly "
+"discuss the steps needed."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:15
+#, no-c-format
+msgid ""
+"It should be possible to run Web Beans in an SE environment, but you'll to "
+"do more work, adding your own contexts and lifecycle. The Web Beans RI "
+"currently doesn't expose lifecycle extension points, so you would have to "
+"code directly against Web Beans RI classes."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:24
+#, no-c-format
+msgid "The Web Beans RI SPI"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:26
+#, no-c-format
+msgid ""
+"The Web Beans SPI is located in <literal>webbeans-ri-spi</literal> module, "
+"and packaged as <literal>webbeans-ri-spi.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:31
+#, no-c-format
+msgid "Currently, the only SPI to implement is the bootstrap spi:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[public interface WebBeanDiscovery {\n"
+"   /**\n"
+"    * Gets list of all classes in classpath archives with web-beans.xml "
+"files\n"
+"    * \n"
+"    * @return An iterable over the classes \n"
+"    */\n"
+"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
+"   \n"
+"   /**\n"
+"    * Gets a list of all web-beans.xml files in the app classpath\n"
+"    * \n"
+"    * @return An iterable over the web-beans.xml files \n"
+"    */\n"
+"   public Iterable<URL> discoverWebBeansXml();\n"
+"   \n"
+"   /**\n"
+"    * Gets a descriptor for each EJB in the application\n"
+"    * \n"
+"    * @return The bean class to descriptor map \n"
+"    */\n"
+"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:37
+#, no-c-format
+msgid ""
+"The discovery of Web Bean classes and <literal>web-bean.xml</literal> files "
+"is self-explanatory (the algorithm is described in Section 11.1 of the JSR-"
+"299 specification, and isn't repeated here)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:43
+#, no-c-format
+msgid ""
+"The Web Beans RI also delegates EJB3 bean discovery to the container so that "
+"it doesn't have to scan for EJB3 annotations or parse <literal>ejb-jar.xml</"
+"literal>. For each EJB in the application an EJBDescriptor should be "
+"discovered:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:50
+#, no-c-format
+msgid ""
+"<![CDATA[public interface EjbDescriptor<T> {\n"
+"   \n"
+"   /**\n"
+"    * Gets the EJB type\n"
+"    * \n"
+"    * @return The EJB Bean class\n"
+"    */\n"
+"   public Class<T> getType();\n"
+"\n"
+"   /**\n"
+"    * Gets the local business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the local business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces"
+"();\n"
+"   \n"
+"   /**\n"
+"    * Gets the remote business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remote business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> "
+"getRemoteBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Get the remove methods of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remove methods\n"
+"    */\n"
+"   public Iterable<Method> getRemoveMethods();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is stateless\n"
+"    * \n"
+"    * @return True if stateless, false otherwise\n"
+"    */\n"
+"   public boolean isStateless();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is a EJB 3.1 Singleton\n"
+"    * \n"
+"    * @return True if the bean is a singleton, false otherwise\n"
+"    */\n"
+"   public boolean isSingleton();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is stateful\n"
+"    * \n"
+"    * @return True if the bean is stateful, false otherwise\n"
+"    */\n"
+"   public boolean isStateful();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is and MDB\n"
+"    * \n"
+"    * @return True if the bean is an MDB, false otherwise\n"
+"    */\n"
+"   public boolean isMessageDriven();\n"
+"\n"
+"   /**\n"
+"    * Gets the EJB name\n"
+"    * \n"
+"    * @return The name\n"
+"    */\n"
+"   public String getEjbName();\n"
+"   \n"
+"   /**\n"
+"    * @return The JNDI string which can be used to lookup a proxy which \n"
+"    * implements all local business interfaces \n"
+"    * \n"
+"    */\n"
+"   public String getLocalJndiName();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:52
+#, no-c-format
+msgid ""
+"The contract described the JavaDoc is enough to implement an EJBDescriptor. "
+"In addition to these two interfaces, there is "
+"<literal>BusinessInterfaceDescriptor</literal> which represents a local "
+"business interface (encapsulating the interface class and jndi name)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:59
+#, no-c-format
+msgid ""
+"The Web Beans RI can be told to load your implementation of "
+"<literal>WebBeanDiscovery</literal> using the property <literal>org.jboss."
+"webbeans.bootstrap.webBeanDiscovery</literal> with the fully qualified class "
+"name as the value. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:66
+#, no-c-format
+msgid ""
+"org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration."
+"jbossas.WebBeanDiscoveryImpl"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:68
+#, no-c-format
+msgid ""
+"The property can either be specified as a system property, or in a "
+"properties file <literal>META-INF/web-beans-ri.properties</literal>."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:76
+#, no-c-format
+msgid "The contract with the container"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:78
+#, no-c-format
+msgid ""
+"There are a number of requirements that the Web Beans RI places on the "
+"container for correct functioning that fall outside implementation of APIs"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:86
+#, no-c-format
+msgid "Classloader isolation"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:90
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must enable, automatically, or through user "
+"configuation, classloader isolation for each Web Beans application"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:99
+#, no-c-format
+msgid "The <literal>webbeans-ri.jar</literal>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:103
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must insert the <literal>webbeans-ri.jar</"
+"literal> into the applications isolated classloader. It cannot be loaded "
+"from a shared classloader."
+msgstr ""


Property changes on: doc/trunk/reference/pot/ri-spi.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/ri.pot (from rev 638, doc/trunk/reference/pot/modules/ri.pot)
===================================================================
--- doc/trunk/reference/pot/ri.pot	                        (rev 0)
+++ doc/trunk/reference/pot/ri.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1004 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri.xml:4
+#, no-c-format
+msgid "The Web Beans Reference Implementation"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans Reference Implementation is being developed at <ulink url="
+"\"http://seamframework.org/WebBeans\">the Seam project</ulink>. You can "
+"download the latest developer release of Web Beans from the <ulink url="
+"\"http://seamframework.org/Download\">the downloads page</ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:13
+#, no-c-format
+msgid ""
+"The Web Beans RI comes with a two deployable example applications: "
+"<literal>webbeans-numberguess</literal>, a war example, containing only "
+"simple beans, and <literal>webbeans-translator</literal> an ear example, "
+"containing enterprise beans. To run the examples you'll need the following:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:22
+#, no-c-format
+msgid "the latest release of the Web Beans RI,"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:25
+#, no-c-format
+msgid "JBoss AS 5.0.0.GA, and"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:28
+#, no-c-format
+msgid "Ant 1.7.0."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:32
+#, no-c-format
+msgid ""
+"Currently, the Web Beans RI only runs on JBoss Application Server 5. You'll "
+"need to download JBoss AS 5.0.0.GA from <ulink url=\"http://www.jboss.org/"
+"jbossas/downloads/\">jboss.org</ulink>, and unzip it. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd /Applications\n"
+"$ unzip ~/jboss-5.0.0.GA.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:41
+#, no-c-format
+msgid ""
+"Next, download the Web Beans RI from <ulink url=\"http://seamframework.org/"
+"Download\">seamframework.org</ulink>, and unzip it. For example"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd ~/\n"
+"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:50
+#, no-c-format
+msgid ""
+"Next, we need to tell Web Beans where JBoss is located. Edit <literal>jboss-"
+"as/build.properties</literal> and set the <literal>jboss.home</literal> "
+"property. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:56
+#, no-c-format
+msgid "jboss.home=/Applications/jboss-5.0.0.GA"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:58
+#, no-c-format
+msgid ""
+"As Web Beans is a new piece of software, you need to update JBoss AS to run "
+"the Web Beans RI. Future versions of JBoss AS will include these updates, "
+"and this step won't be necessary."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:65
+#, no-c-format
+msgid ""
+"Currently, two updates are needed. Firstly, a new deployer, "
+"<literal>webbeans.deployer</literal> is added. This adds supports for Web "
+"Bean archives to JBoss AS, and allows the Web Beans RI to query the EJB3 "
+"container and discover which EJBs are installed in your application. "
+"Secondly, an update to JBoss EJB3 is needed."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:74
+#, no-c-format
+msgid ""
+"To install the update, you'll need Ant 1.7.0 installed, and the "
+"<literal>ANT_HOME</literal> environment variable set. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:79
+#, no-c-format
+msgid ""
+"$ unzip apache-ant-1.7.0.zip\n"
+"$ export ANT_HOME=~/apache-ant-1.7.0"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:81
+#, no-c-format
+msgid ""
+"Then, you can install the update. The update script will use Maven to "
+"download the Web Beans and EJB3 automatically."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:86
+#, no-c-format
+msgid ""
+"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
+"$ ant update"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:88
+#, no-c-format
+msgid "Now, you're ready to deploy your first example!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:93
+#, no-c-format
+msgid ""
+"The build scripts for the examples offer a number of targets, these are:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:99
+#, no-c-format
+msgid "<literal>ant restart</literal> - deploy the example in exploded format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:105
+#, no-c-format
+msgid ""
+"<literal>ant explode</literal> - update an exploded example, without "
+"restarting the deployment"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:111
+#, no-c-format
+msgid ""
+"<literal>ant deploy</literal> - deploy the example in compressed jar format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:116
+#, no-c-format
+msgid "<literal>ant undeploy</literal> - remove the example from the server"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:121
+#, no-c-format
+msgid "<literal>ant clean</literal> - clean the example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:128
+#, no-c-format
+msgid "To deploy the numberguess example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:132
+#, no-c-format
+msgid ""
+"$ cd examples/numberguess\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:134
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and enjoy hours of fun at <ulink url="
+"\"http://localhost:8080/webbeans-numberguess\"></ulink>!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:139
+#, no-c-format
+msgid ""
+"The Web Beans RI includes a second simple example that will translate your "
+"text into Latin. The numberguess example is a war example, and uses only "
+"simple beans; the translator example is an ear example, and includes "
+"enterprise beans, packaged in an EJB module. To try it out:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:146
+#, no-c-format
+msgid ""
+"$ cd examples/translator\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:148
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and visit <ulink url=\"http://"
+"localhost:8080/webbeans-translator\"></ulink>!"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:154
+#, no-c-format
+msgid "The numberguess example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:156
+#, no-c-format
+msgid ""
+"In the numberguess application you get given 10 attempts to guess a number "
+"between 1 and 100. After each attempt, you will be told whether you are too "
+"high, or too low."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:162
+#, no-c-format
+msgid ""
+"The numberguess example is comprised of a number of Web Beans, configuration "
+"files, and Facelet JSF pages, packaged as a war. Let's start with the "
+"configuration files."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:168
+#, no-c-format
+msgid ""
+"All the configuration files for this example are located in <literal>WEB-INF/"
+"</literal>, which is stored in <literal>WebContent</literal> in the source "
+"tree. First, we have <literal>faces-config.xml</literal>, in which we tell "
+"JSF to use Facelets:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
+"<faces-config version=\"1.2\"\n"
+"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
+"    \n"
+"    <application>\n"
+"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
+"    </application>\n"
+"\n"
+"</faces-config>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:178
+#, no-c-format
+msgid ""
+"There is an empty <literal>web-beans.xml</literal> file, which marks this "
+"application as a Web Beans application."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:183
+#, no-c-format
+msgid "Finally there is <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: section
+#: ri.xml:185
+#, no-c-format
+msgid ""
+"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
+"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
+"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
+"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
+"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"\n"
+"<web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
+"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
+"   \n"
+"   <display-name>Web Beans Numbergues example</display-name>\n"
+"\n"
+"   <!-- JSF -->\n"
+"\n"
+"   <servlet>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
+"      <load-on-startup>1</load-on-startup>\n"
+"   </servlet>\n"
+"\n"
+"   <servlet-mapping>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <url-pattern>*.jsf</url-pattern>\n"
+"   </servlet-mapping>\n"
+"   \n"
+"   <context-param>\n"
+"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
+"      <param-value>.xhtml</param-value>\n"
+"   </context-param>\n"
+"\n"
+"   <session-config>\n"
+"      <session-timeout>10</session-timeout>\n"
+"   </session-config>\n"
+"   \n"
+"    <listener>\n"
+"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
+"class>\n"
+"    </listener>\n"
+"\n"
+"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
+"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
+"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
+"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
+"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
+"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
+"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
+"session timeout of 10 minutes </para> </callout> <callout arearefs="
+"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
+"Beans services can be used in the servlet request </para> </callout> </"
+"calloutlist> </programlistingco> <note> <para> The only configuration "
+"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
+"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
+"the Web Beans RI with any Servlet based web framework; just configure the "
+"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
+"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
+"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
+"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
+"\"30\"/> <area id=\"submit\" coords=\"33\"/> </areaspec> <programlisting><!"
+"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
+"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
+"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
+"\n"
+"  <ui:composition template=\"template.xhtml\">\n"
+"    <ui:define name=\"content\">\n"
+"       <h1>Guess a number...</h1>\n"
+"       <h:form id=\"NumberGuessMain\">\n"
+"          <div style=\"color: red\">\n"
+"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
+"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
+"number gt game.guess and game.guess ne 0}\"/>\n"
+"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
+"number lt game.guess and game.guess ne 0}\"/>\n"
+"          </div>\n"
+"   \n"
+"          <div>\n"
+"             I'm thinking of a number between #{game.smallest} and #{game."
+"biggest}.\n"
+"             You have #{game.remainingGuesses} guesses.\n"
+"          </div>\n"
+"     \n"
+"          <div>\n"
+"             Your guess: \n"
+"             <h:inputText id=\"inputGuess\" \n"
+"                          value=\"#{game.guess}\" \n"
+"                          required=\"true\" \n"
+"                          size=\"3\" \n"
+"                          disabled=\"#{game.number eq game.guess}\">\n"
+"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
+"                                     minimum=\"#{game.smallest}\"/>\n"
+"             </h:inputText>\n"
+"            <h:commandButton id=\"GuessButton\"  \n"
+"                             value=\"Guess\" \n"
+"                             action=\"#{game.check}\" \n"
+"                             disabled=\"#{game.number eq game.guess}\"/>\n"
+"          </div>\n"
+"          <div>\n"
+"            <h:commandButton id=\"RestartButton\" value=\"Reset\" action=\"#"
+"{game.reset}\" immediate=\"true\" />\n"
+"          </div>\n"
+"       </h:form>\n"
+"    </ui:define>\n"
+"  </ui:composition>\n"
+"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
+"<para> Facelets is a templating language for JSF, here we are wrapping our "
+"page in a template which defines the header. </para> </callout> <callout "
+"arearefs=\"messages\"> <para> There are a number of messages which can be "
+"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
+"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
+"range of numbers they can guess gets smaller - this sentance changes to make "
+"sure they know what range to guess in. </para> </callout> <callout arearefs="
+"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
+"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
+"range validator is used to make sure the user doesn't accidentally input a "
+"number outside of the range in which they can guess - if the validator "
+"wasn't here, the user might use up a guess on an out of range number. </"
+"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
+"must be a way for the user to send their guess to the server. Here we bind "
+"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
+"programlistingco>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:298
+#, no-c-format
+msgid ""
+"The example exists of 4 classes, the first two of which are binding types. "
+"First, there is the <literal>@Random</literal> binding type, used for "
+"injecting a random number:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:304
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface Random {}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:306
+#, no-c-format
+msgid ""
+"There is also the <literal>@MaxNumber</literal> binding type, used for "
+"injecting the maximum number that can be injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface MaxNumber {}\n"
+"]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:313
+#, no-c-format
+msgid ""
+"The <literal>Generator</literal> class is responsible for creating the "
+"random number, via a producer method. It also exposes the maximum possible "
+"number via a producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:319
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"   \n"
+"   private java.util.Random random = new java.util.Random( System."
+"currentTimeMillis() );\n"
+"   \n"
+"   private int maxNumber = 100;\n"
+"   \n"
+"   java.util.Random getRandom()\n"
+"   {\n"
+"      return random;\n"
+"   }\n"
+"   \n"
+"   @Produces @Random int next() { \n"
+"      return getRandom().nextInt(maxNumber); \n"
+"   }\n"
+"   \n"
+"   @Produces @MaxNumber int getMaxNumber()\n"
+"   {\n"
+"      return maxNumber;\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:321
+#, no-c-format
+msgid ""
+"You'll notice that the <literal>Generator</literal> is application scoped; "
+"therefore we don't get a different random each time."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:326
+#, no-c-format
+msgid ""
+"The final Web Bean in the application is the session scoped <literal>Game</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:331
+#, no-c-format
+msgid ""
+"You'll note that we've used the <literal>@Named</literal> annotation, so "
+"that we can use the bean through EL in the JSF page. Finally, we've used "
+"constructor injection to initialize the game with a random number. And of "
+"course, we need to tell the player when they've won, so we give feedback "
+"with a <literal>FacesMessage</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:339
+#, no-c-format
+msgid ""
+"<![CDATA[package org.jboss.webbeans.examples.numberguess;\n"
+"\n"
+"\n"
+"import javax.annotation.PostConstruct;\n"
+"import javax.faces.application.FacesMessage;\n"
+"import javax.faces.context.FacesContext;\n"
+"import javax.webbeans.AnnotationLiteral;\n"
+"import javax.webbeans.Current;\n"
+"import javax.webbeans.Initializer;\n"
+"import javax.webbeans.Named;\n"
+"import javax.webbeans.SessionScoped;\n"
+"import javax.webbeans.manager.Manager;\n"
+"\n"
+"@Named\n"
+"@SessionScoped\n"
+"public class Game\n"
+"{\n"
+"   private int number;\n"
+"   \n"
+"   private int guess;\n"
+"   private int smallest;\n"
+"   private int biggest;\n"
+"   private int remainingGuesses;\n"
+"   \n"
+"   @Current Manager manager;\n"
+"   \n"
+"   public Game()\n"
+"   {\n"
+"   }\n"
+"   \n"
+"   @Initializer\n"
+"   Game(@MaxNumber int maxNumber)\n"
+"   {      \n"
+"      this.biggest = maxNumber;\n"
+"   }\n"
+"\n"
+"   public int getNumber()\n"
+"   {\n"
+"      return number;\n"
+"   }\n"
+"   \n"
+"   public int getGuess()\n"
+"   {\n"
+"      return guess;\n"
+"   }\n"
+"   \n"
+"   public void setGuess(int guess)\n"
+"   {\n"
+"      this.guess = guess;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getRemainingGuesses()\n"
+"   {\n"
+"      return remainingGuesses;\n"
+"   }\n"
+"   \n"
+"   public String check()\n"
+"   {\n"
+"      if (guess>number)\n"
+"      {\n"
+"         biggest = guess - 1;\n"
+"      }\n"
+"      if (guess<number)\n"
+"      {\n"
+"         smallest = guess + 1;\n"
+"      }\n"
+"      if (guess == number)\n"
+"      {\n"
+"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
+"(\"Correct!\"));\n"
+"      }\n"
+"      remainingGuesses--;\n"
+"      return null;\n"
+"   }\n"
+"   \n"
+"   @PostConstruct\n"
+"   public void reset()\n"
+"   {\n"
+"      this.smallest = 0;\n"
+"      this.guess = 0;\n"
+"      this.remainingGuesses = 10;\n"
+"      this.number = manager.getInstanceByType(Integer.class, new "
+"AnnotationLiteral<Random>(){});\n"
+"   }\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:343
+#, no-c-format
+msgid "The translator example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:345
+#, no-c-format
+msgid ""
+"The translator example will take any sentences you enter, and translate them "
+"to Latin."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:350
+#, no-c-format
+msgid ""
+"The translator example is built as an ear, and contains EJBs and enterprise "
+"beans. As a result, it's structure is more complex than the numberguess "
+"example."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:357
+#, no-c-format
+msgid ""
+"EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will make "
+"this structure much simpler!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:363
+#, no-c-format
+msgid ""
+"First, let's take a look at the ear aggregator, which is located in "
+"<literal>webbeans-translator-ear</literal> module. Maven automatically "
+"generates the <literal>application.xml</literal> and <literal>jboss-app.xml</"
+"literal> for us:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:370
+#, no-c-format
+msgid ""
+"<![CDATA[<plugin>\n"
+"   <groupId>org.apache.maven.plugins</groupId>\n"
+"   <artifactId>maven-ear-plugin</artifactId>\n"
+"   <configuration>\n"
+"      <modules>\n"
+"         <webModule>\n"
+"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
+"            <artifactId>webbeans-translator-war</artifactId>\n"
+"            <contextRoot>/webbeans-translator</contextRoot>\n"
+"         </webModule>\n"
+"      </modules>\n"
+"      <jboss>\n"
+"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
+"loader-repository>\n"
+"      </jboss>\n"
+"   </configuration>\n"
+"</plugin>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:372
+#, no-c-format
+msgid ""
+"We're doing a couple of things here - firstly we set the context path, which "
+"gives us a nice url (<ulink url=\"http://localhost:8080/webbeans-translator"
+"\">http://localhost:8080/webbeans-translator</ulink>) and we also enable "
+"class loader isolation for JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:380
+#, no-c-format
+msgid ""
+"If you aren't using Maven to generate these files, you would need "
+"<literal>META-INF/jboss-app.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:385
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<!DOCTYPE jboss-app\n"
+"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
+"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
+"<jboss-app>\n"
+"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
+"repository>\n"
+"</jboss-app>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:387
+#, no-c-format
+msgid "and <literal>META-INF/application.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:391
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\">\n"
+"  <display-name>webbeans-translator-ear</display-name>\n"
+"  <description>Ear Example for the reference implementation of JSR 299: Web "
+"Beans</description>\n"
+"  \n"
+"  <module>\n"
+"    <web>\n"
+"      <web-uri>webbeans-translator.war</web-uri>\n"
+"      <context-root>/webbeans-translator</context-root>\n"
+"    </web>\n"
+"  </module>\n"
+"  <module>\n"
+"    <ejb>webbeans-translator.jar</ejb>\n"
+"  </module>\n"
+"</application>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:394
+#, no-c-format
+msgid ""
+"Next, lets look at the war. Just as in the numberguess example, we have a "
+"<literal>faces-config.xml</literal> (to enabled Facelets) and a <literal>web."
+"xml</literal> (to enable JSF and attach Web Beans services to the servlet "
+"container) in <literal>WebContent/WEB-INF</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:401
+#, no-c-format
+msgid ""
+"More intersting is the facelet used to translate text. Just as in the "
+"numberguess example we have a template, which surrounds the form (ommitted "
+"here for brevity):"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:407
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
+"            \n"
+"   <table>\n"
+"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
+"         <td>\n"
+"            Your text\n"
+"         </td>\n"
+"         <td>\n"
+"            Translation\n"
+"         </td>\n"
+"      </tr>\n"
+"      <tr>\n"
+"         <td>\n"
+"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
+"required=\"true\" rows=\"5\" cols=\"80\" />\n"
+"         </td>\n"
+"         <td>\n"
+"            <h:outputText value=\"#{translator.translatedText}\" />\n"
+"         </td>\n"
+"      </tr>\n"
+"   </table>\n"
+"   <div>\n"
+"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
+"{translator.translate}\"/>\n"
+"   </div>\n"
+"   \n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:409
+#, no-c-format
+msgid ""
+"The user can enter some text in the lefthand textarea, and hit the translate "
+"button to see the result to the right."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:414
+#, no-c-format
+msgid ""
+"Finally, let's look at the ejb module, <literal>webbeans-translator-ejb</"
+"literal>. There are two configuration files in <literal>src/main/resources/"
+"META-INF</literal>, an empty <literal>web-beans.xml</literal>, used to mark "
+"the archive as containing Web Beans, and <literal>ejb-jar.xml</literal>. Web "
+"Beans provides injection and initializtion services for all EJBs, and uses "
+"<literal>ejb-jar.xml</literal> to enable this, you'll need this in any EJB "
+"project which uses Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:426
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
+"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\">\n"
+"         \n"
+"   <interceptors>\n"
+"     <interceptor>\n"
+"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"     </interceptor>\n"
+"   </interceptors>\n"
+"   \n"
+"   <assembly-descriptor>\n"
+"      <interceptor-binding>\n"
+"         <ejb-name>*</ejb-name>\n"
+"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"      </interceptor-binding>\n"
+"   </assembly-descriptor>\n"
+"   \n"
+"</ejb-jar>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:428
+#, no-c-format
+msgid ""
+"We've saved the most interesting bit to last, the code! The project has two "
+"simple beans, <literal>SentanceParser</literal> and <literal>TextTranslator</"
+"literal> and two enterprise beans, <literal>TanslatorControllerBean</"
+"literal> and <literal>SentenceTranslator</literal>. You should be getting "
+"quite familiar with what a Web Bean looks like by now, so we'll just "
+"highlight the most interesting bits here."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:438
+#, no-c-format
+msgid ""
+"Both <literal>SentanceParser</literal> and <literal>TextTranslator</literal> "
+"are dependent beans, and <literal>TextTranslator</literal> uses constructor "
+"initialization:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:444
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator { \n"
+"   private SentenceParser sentenceParser; \n"
+"   private Translator sentenceTranslator; \n"
+"   \n"
+"   @Initializer\n"
+"   TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) \n"
+"   { \n"
+"      this.sentenceParser = sentenceParser; \n"
+"      this.sentenceTranslator = sentenceTranslator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:446
+#, no-c-format
+msgid ""
+"<literal>TextTranslator</literal> is a stateless bean (with a local business "
+"interface), where the magic happens - of course, we couldn't develop a full "
+"translator, but we gave it a good go!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:452
+#, no-c-format
+msgid ""
+"Finally, there is UI orientated controller, that collects the text from the "
+"user, and dispatches it to the translator. This is a request scoped, named, "
+"stateful session bean, which injects the translator."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:458
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful\n"
+"@RequestScoped\n"
+"@Named(\"translator\")\n"
+"public class TranslatorControllerBean implements TranslatorController\n"
+"{\n"
+"   \n"
+"   @Current TextTranslator translator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:460
+#, no-c-format
+msgid "The bean also has getters and setters for all the fields on the page."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:464
+#, no-c-format
+msgid "As this is a stateful session bean, we have to have a remove method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:468
+#, no-c-format
+msgid ""
+"<![CDATA[   @Remove\n"
+"   public void remove()\n"
+"   {\n"
+"      \n"
+"   }]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:470
+#, no-c-format
+msgid ""
+"The Web Beans manager will call the remove method for you when the bean is "
+"destroyed; in this case at the end of the request."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:476
+#, no-c-format
+msgid ""
+"That concludes our short tour of the Web Beans RI examples. For more on the "
+"RI, or to help out, please visit <ulink url=\"http://www.seamframework.org/"
+"WebBeans/Development\">http://www.seamframework.org/WebBeans/Development</"
+"ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:482
+#, no-c-format
+msgid ""
+"We need help in all areas - bug fixing, writing new features, writing "
+"examples and translating this reference guide."
+msgstr ""


Property changes on: doc/trunk/reference/pot/ri.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/scopescontexts.pot (from rev 638, doc/trunk/reference/pot/modules/scopescontexts.pot)
===================================================================
--- doc/trunk/reference/pot/scopescontexts.pot	                        (rev 0)
+++ doc/trunk/reference/pot/scopescontexts.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,583 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: scopescontexts.xml:4
+#, no-c-format
+msgid "Scopes and contexts"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen a few examples of <emphasis>scope type annotations</"
+"emphasis>. The scope of a Web Bean determines the lifecycle of instances of "
+"the Web Bean. The scope also determines which clients refer to which "
+"instances of the Web Bean. According to the Web Beans specification, a scope "
+"determines:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:14
+#, no-c-format
+msgid "When a new instance of any Web Bean with that scope is created"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:17
+#, no-c-format
+msgid "When an existing instance of any Web Bean with that scope is destroyed"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:20
+#, no-c-format
+msgid ""
+"Which injected references refer to any instance of a Web Bean with that scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:25
+#, no-c-format
+msgid ""
+"For example, if we have a session scoped Web Bean, <literal>CurrentUser</"
+"literal>, all Web Beans that are called in the context of the same "
+"<literal>HttpSession</literal> will see the same instance of "
+"<literal>CurrentUser</literal>. This instance will be automatically created "
+"the first time a <literal>CurrentUser</literal> is needed in that session, "
+"and automatically destroyed when the session ends."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:32
+#, no-c-format
+msgid "Scope types"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:34
+#, no-c-format
+msgid ""
+"Web Beans features an <emphasis>extensible context model</emphasis>. It is "
+"possible to define new scopes by creating a new scope type annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:37
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD})\n"
+"@ScopeType\n"
+"public @interface ClusterScoped {}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:39
+#, no-c-format
+msgid ""
+"Of course, that's the easy part of the job. For this scope type to be "
+"useful, we will also need to define a <literal>Context</literal> object that "
+"implements the scope! Implementing a <literal>Context</literal> is usually a "
+"very technical task, intended for framework development only."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:44
+#, no-c-format
+msgid ""
+"We can apply a scope type annotation to a Web Bean implementation class to "
+"specify the scope of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[@ClusterScoped\n"
+"public class SecondLevelCache { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:58
+#, no-c-format
+msgid "Usually, you'll use one of Web Beans' built-in scopes."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:63
+#, no-c-format
+msgid "Built-in scopes"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:65
+#, no-c-format
+msgid "Web Beans defines four built-in scopes:"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:69
+#, no-c-format
+msgid "@RequestScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:72
+#, no-c-format
+msgid "@SessionScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:75
+#, no-c-format
+msgid "@ApplicationScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:78
+#, no-c-format
+msgid "@ConversationScoped"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:82
+#, no-c-format
+msgid "For a web application that uses Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:86
+#, no-c-format
+msgid ""
+"any servlet request has access to active request, session and application "
+"scopes, and, additionally"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:90
+#, no-c-format
+msgid "any JSF request has access to an active conversation scope."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:94
+#, no-c-format
+msgid "The request and application scopes are also active:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:98
+#, no-c-format
+msgid "during invocations of EJB remote methods,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:101
+#, no-c-format
+msgid "during EJB timeouts,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:104
+#, no-c-format
+msgid "during message delivery to a message-driven bean, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:107
+#, no-c-format
+msgid "during web service invocations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:111
+#, no-c-format
+msgid ""
+"If the application tries to invoke a Web Bean with a scope that does not "
+"have an active context, a <literal>ContextNotActiveException</literal> is "
+"thrown by the Web Bean manager at runtime."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:115
+#, no-c-format
+msgid ""
+"Three of the four built-in scopes should be extremely familiar to every Java "
+"EE developer, so let's not waste time discussing them here. One of the "
+"scopes, however, is new."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:122
+#, no-c-format
+msgid "The conversation scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:124
+#, no-c-format
+msgid ""
+"The Web Beans conversation scope is a bit like the traditional session scope "
+"in that it holds state associated with a user of the system, and spans "
+"multiple requests to the server. However, unlike the session scope, the "
+"conversation scope:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:130
+#, no-c-format
+msgid "is demarcated explicitly by the application, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:133
+#, no-c-format
+msgid ""
+"holds state associated with a particular web browser tab in a JSF "
+"application."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:138
+#, no-c-format
+msgid ""
+"A conversation represents a task, a unit of work from the point of view of "
+"the user. The conversation context holds state associated with what the user "
+"is currently working on. If the user is doing multiple things at the same "
+"time, there are multiple conversations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:143
+#, no-c-format
+msgid ""
+"The conversation context is active during any JSF request. However, most "
+"conversations are destroyed at the end of the request. If a conversation "
+"should hold state across multiple requests, it must be explicitly promoted "
+"to a <emphasis>long-running conversation</emphasis>."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:149
+#, no-c-format
+msgid "Conversation demarcation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:151
+#, no-c-format
+msgid ""
+"Web Beans provides a built-in Web Bean for controlling the lifecyle of "
+"conversations in a JSF application. This Web Bean may be obtained by "
+"injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:154
+#, no-c-format
+msgid "@Current Conversation conversation;"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:156
+#, no-c-format
+msgid ""
+"To promote the conversation associated with the current request to a long-"
+"running conversation, call the <literal>begin()</literal> method from "
+"application code. To schedule the current long-running conversation context "
+"for destruction at the end of the current request, call <literal>end()</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:161
+#, no-c-format
+msgid ""
+"In the following example, a conversation-scoped Web Bean controls the "
+"conversation with which it is associated:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:164
+#, no-c-format
+msgid ""
+"@ConversationScoped @Stateful\n"
+"public class OrderBuilder {\n"
+"\n"
+"    private Order order;\n"
+"    private @Current Conversation conversation;\n"
+"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
+"    \n"
+"    @Produces public Order getOrder() {\n"
+"        return order;\n"
+"    }\n"
+"\n"
+"    public Order createOrder() {\n"
+"        order = new Order();\n"
+"        conversation.begin();\n"
+"        return order;\n"
+"    }\n"
+"    \n"
+"    public void addLineItem(Product product, int quantity) {\n"
+"        order.add( new LineItem(product, quantity) );\n"
+"    }\n"
+"\n"
+"    public void saveOrder(Order order) {\n"
+"        em.persist(order);\n"
+"        conversation.end();\n"
+"    }\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:166
+#, no-c-format
+msgid ""
+"This Web Bean is able to control its own lifecycle through use of the "
+"<literal>Conversation</literal> API. But some other Web Beans have a "
+"lifecycle which depends completely upon another object."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:173
+#, no-c-format
+msgid "Conversation propagation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:175
+#, no-c-format
+msgid ""
+"The conversation context automatically propagates with any JSF faces request "
+"(JSF form submission). It does not automatically propagate with non-faces "
+"requests, for example, navigation via a link."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:179
+#, no-c-format
+msgid ""
+"We can force the conversation to propagate with a non-faces request by "
+"including the unique identifier of the conversation as a request parameter. "
+"The Web Beans specification reserves the request parameter named "
+"<literal>cid</literal> for this use. The unique identifier of the "
+"conversation may be obtained from the <literal>Conversation</literal> "
+"object, which has the Web Beans name <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:186
+#, no-c-format
+msgid "Therefore, the following link propagates the conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:188
+#, no-c-format
+msgid ""
+"<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]"
+">"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:190
+#, no-c-format
+msgid ""
+"The Web Bean manager is also required to propagate conversations across any "
+"redirect, even if the conversation is not marked long-running. This makes it "
+"very easy to implement the common POST-then-redirect pattern, without resort "
+"to fragile constructs such as a \"flash\" object. In this case, the Web Bean "
+"manager automatically adds a request parameter to the redirect URL."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:200
+#, no-c-format
+msgid "Conversation timeout"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:202
+#, no-c-format
+msgid ""
+"The Web Bean manager is permitted to destroy a conversation and all state "
+"held in its context at any time in order to preserve resources. A Web Bean "
+"manager implementation will normally do this on the basis of some kind of "
+"timeout&#151;though this is not required by the Web Beans specification. The "
+"timeout is the period of inactivity before the conversation is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:208
+#, no-c-format
+msgid ""
+"The <literal>Conversation</literal> object provides a method to set the "
+"timeout. This is a hint to the Web Bean manager, which is free to ignore the "
+"setting."
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:212
+#, no-c-format
+msgid "conversation.setTimeout(timeoutInMillis);"
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:219
+#, no-c-format
+msgid "The dependent pseudo-scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:221
+#, no-c-format
+msgid ""
+"In addition to the four built-in scopes, Web Beans features the so-called "
+"<emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a "
+"Web Bean which does not explicitly declare a scope type."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:225
+#, no-c-format
+msgid ""
+"For example, this Web Bean has the scope type <literal>@Dependent</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:227
+#, no-c-format
+msgid "<![CDATA[public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:229
+#, no-c-format
+msgid ""
+"When an injection point of a Web Bean resolves to a dependent Web Bean, a "
+"new instance of the dependent Web Bean is created every time the first Web "
+"Bean is instantiated. Instances of dependent Web Beans are never shared "
+"between different Web Beans or different injection points. They are "
+"<emphasis>dependent objects</emphasis> of some other Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:235
+#, no-c-format
+msgid ""
+"Dependent Web Bean instances are destroyed when the instance they depend "
+"upon is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:243
+#, no-c-format
+msgid ""
+"Web Beans makes it easy to obtain a dependent instance of a Java class or "
+"EJB bean, even if the class or EJB bean is already declared as a Web Bean "
+"with some other scope type."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:248
+#, no-c-format
+msgid "The <literal>@New</literal> annotation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:250
+#, no-c-format
+msgid ""
+"The built-in <literal>@New</literal> binding annotation allows "
+"<emphasis>implicit</emphasis> definition of a dependent Web Bean at an "
+"injection point. Suppose we declare the following injected field:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:254
+#, no-c-format
+msgid "<![CDATA[@New Calculator calculator;]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:256
+#, no-c-format
+msgid ""
+"Then a Web Bean with scope <literal>@Dependent</literal>, binding type "
+"<literal>@New</literal>, API type <literal>Calculator</literal>, "
+"implementation class <literal>Calculator</literal> and deployment type "
+"<literal>@Standard</literal> is implicitly defined."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:261
+#, no-c-format
+msgid ""
+"This is true even if <literal>Calculator</literal> is <emphasis>already</"
+"emphasis> declared with a different scope type, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:264
+#, no-c-format
+msgid ""
+"<![CDATA[@ConversationScoped\n"
+"public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:266
+#, no-c-format
+msgid ""
+"So the following injected attributes each get a different instance of "
+"<literal>Calculator</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:269
+#, no-c-format
+msgid ""
+"<![CDATA[public class PaymentCalc {\n"
+"\n"
+"    @Current Calculator calculator;\n"
+"    @New Calculator newCalculator;\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:271
+#, no-c-format
+msgid ""
+"The <literal>calculator</literal> field has a conversation-scoped instance "
+"of <literal>Calculator</literal> injected. The <literal>newCalculator</"
+"literal> field has a new instance of <literal>Calculator</literal> injected, "
+"with a lifecycle that is bound to the owning <literal>PaymentCalc</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:276
+#, no-c-format
+msgid ""
+"This feature is particularly useful with producer methods, as we'll see in "
+"the next chapter."
+msgstr ""


Property changes on: doc/trunk/reference/pot/scopescontexts.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/specialization.pot (from rev 638, doc/trunk/reference/pot/modules/specialization.pot)
===================================================================
--- doc/trunk/reference/pot/specialization.pot	                        (rev 0)
+++ doc/trunk/reference/pot/specialization.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,292 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: specialization.xml:4
+#, no-c-format
+msgid "Specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:6
+#, no-c-format
+msgid ""
+"We've already seen how the Web Beans dependency injection model lets us "
+"<emphasis>override</emphasis> the implementation of an API at deployment "
+"time. For example, the following enterprise Web Bean provides an "
+"implementation of the API <literal>PaymentProcessor</literal> in production:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:11
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless\n"
+"public class CreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:13
+#, no-c-format
+msgid ""
+"But in our staging environment, we override that implementation of "
+"<literal>PaymentProcessor</literal> with a different Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:16
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless @Staging\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:18
+#, no-c-format
+msgid ""
+"What we've tried to do with <literal>StagingCreditCardPaymentProcessor</"
+"literal> is to completely replace <literal>AsyncPaymentProcessor</literal> "
+"in a particular deployment of the system. In that deployment, the deployment "
+"type <literal>@Staging</literal> would have a higher priority than the "
+"default deployment type <literal>@Production</literal>, and therefore "
+"clients with the following injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:24
+#, no-c-format
+msgid "@CreditCard PaymentProcessor ccpp"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:26
+#, no-c-format
+msgid ""
+"Would receive an instance of <literal>StagingCreditCardPaymentProcessor</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:28
+#, no-c-format
+msgid "Unfortunately, there are several traps we can easily fall into:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:32
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not implement all the API types of the Web "
+"Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:36
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not declare all the binding types of the "
+"Web Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:40
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean might not have the same name as the Web Bean "
+"that it attempts to override, or"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:44
+#, no-c-format
+msgid ""
+"the Web Bean that it attempts to override might declare a producer method, "
+"disposal method or observer method."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:49
+#, no-c-format
+msgid ""
+"In each of these cases, the Web Bean that we tried to override could still "
+"be called at runtime. Therefore, overriding is somewhat prone to developer "
+"error."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:52
+#, no-c-format
+msgid ""
+"Web Beans provides a special feature, called <emphasis>specialization</"
+"emphasis>, that helps the developer avoid these traps. Specialization looks "
+"a little esoteric at first, but it's easy to use in practice, and you'll "
+"really appreciate the extra security it provides."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:58
+#, no-c-format
+msgid "Using specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:60
+#, no-c-format
+msgid ""
+"Specialization is a feature that is specific to simple and enterprise Web "
+"Beans. To make use of specialization, the higher-priority Web Bean must:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:65
+#, no-c-format
+msgid "be a direct subclass of the Web Bean it overrides, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:68
+#, no-c-format
+msgid ""
+"be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or an "
+"enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:73
+#, no-c-format
+msgid "be annotated <literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:77
+#, no-c-format
+msgid ""
+"@Stateless @Staging @Specializes\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        extends CreditCardPaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:79
+#, no-c-format
+msgid ""
+"We say that the higher-priority Web Bean <emphasis>specializes</emphasis> "
+"its superclass."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:85
+#, no-c-format
+msgid "Advantages of specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:87
+#, no-c-format
+msgid "When specialization is used:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:91
+#, no-c-format
+msgid ""
+"the binding types of the superclass are automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:95
+#, no-c-format
+msgid ""
+"the Web Bean name of the superclass is automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:99
+#, no-c-format
+msgid ""
+"producer methods, disposal methods and observer methods declared by the "
+"superclass are called upon an instance of the Web Bean annotated "
+"<literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:105
+#, no-c-format
+msgid ""
+"In our example, the binding type <literal>@CreditCard</literal> of "
+"<literal>CreditCardPaymentProcessor</literal> is inherited by "
+"<literal>StagingCreditCardPaymentProcessor</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:109
+#, no-c-format
+msgid "Furthermore, the Web Bean manager will validate that:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:113
+#, no-c-format
+msgid ""
+"all API types of the superclass are API types of the Web Bean annotated "
+"<literal>@Specializes</literal> (all local interfaces of the superclass "
+"enterprise bean are also local interfaces of the subclass),"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:119
+#, no-c-format
+msgid ""
+"the deployment type of the Web Bean annotated <literal>@Specializes</"
+"literal> has a higher precedence than the deployment type of the superclass, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:124
+#, no-c-format
+msgid ""
+"there is no other enabled Web Bean that also specializes the superclass."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:129
+#, no-c-format
+msgid ""
+"If any of these conditions are violated, the Web Bean manager throws an "
+"exception at initialization time."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:132
+#, no-c-format
+msgid ""
+"Therefore, we can be certain that the superclass will <emphasis>never</"
+"emphasis> be called in any deployment of the system where the Web Bean "
+"annotated <literal>@Specializes</literal> is deployed and enabled."
+msgstr ""


Property changes on: doc/trunk/reference/pot/specialization.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/stereotypes.pot (from rev 638, doc/trunk/reference/pot/modules/stereotypes.pot)
===================================================================
--- doc/trunk/reference/pot/stereotypes.pot	                        (rev 0)
+++ doc/trunk/reference/pot/stereotypes.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,353 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: stereotypes.xml:4
+#, no-c-format
+msgid "Stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:6
+#, no-c-format
+msgid "According to the Web Beans specification:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:10
+#, no-c-format
+msgid ""
+"In many systems, use of architectural patterns produces a set of recurring "
+"Web Bean roles. A stereotype allows a framework developer to identify such a "
+"role and declare some common metadata for Web Beans with that role in a "
+"central place."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:14
+#, no-c-format
+msgid "A stereotype encapsulates any combination of:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:18
+#, no-c-format
+msgid "a default deployment type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:21
+#, no-c-format
+msgid "a default scope type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:24
+#, no-c-format
+msgid "a restriction upon the Web Bean scope,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:27
+#, no-c-format
+msgid "a requirement that the Web Bean implement or extend a certain type, and"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:30
+#, no-c-format
+msgid "a set of interceptor binding annotations."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:34
+#, no-c-format
+msgid ""
+"A stereotype may also specify that all Web Beans with the stereotype have "
+"defaulted Web Bean names."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:37
+#, no-c-format
+msgid "A Web Bean may declare zero, one or multiple stereotypes."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:41
+#, no-c-format
+msgid ""
+"A stereotype is a Java annotation type. This stereotype identifies action "
+"classes in some MVC framework:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:46
+#, no-c-format
+msgid "We use the stereotype by applying the annotation to a Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:48
+#, no-c-format
+msgid ""
+"<![CDATA[@Action \n"
+"public class LoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:51
+#, no-c-format
+msgid "Default scope and deployment type for a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:53
+#, no-c-format
+msgid ""
+"A stereotype may specify a default scope and/or default deployment type for "
+"Web Beans with that stereotype. For example, if the deployment type "
+"<literal>@WebTier</literal> identifies Web Beans that should only be "
+"deployed when the system executes as a web application, we might specify the "
+"following defaults for action classes:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:59
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:61
+#, no-c-format
+msgid ""
+"Of course, a particular action may still override these defaults if "
+"necessary:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[@Dependent @Mock @Action \n"
+"public class MockLoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:66
+#, no-c-format
+msgid ""
+"If we want to force all actions to a particular scope, we can do that too."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:72
+#, no-c-format
+msgid "Restricting scope and type with a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:74
+#, no-c-format
+msgid ""
+"Suppose that we wish to prevent actions from declaring certain scopes. Web "
+"Beans lets us explicitly specify the set of allowed scopes for Web Beans "
+"with a certain stereotype. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(supportedScopes=RequestScoped.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:80
+#, no-c-format
+msgid ""
+"If a particular action class attempts to specify a scope other than the Web "
+"Beans request scope, an exception will be thrown by the Web Bean manager at "
+"initialization time."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:84
+#, no-c-format
+msgid ""
+"We can also force all Web Bean with a certain stereotype to implement an "
+"interface or extend a class:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:87
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(requiredTypes=AbstractAction.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:89
+#, no-c-format
+msgid ""
+"If a particular action class does not extend the class "
+"<literal>AbstractAction</literal>, an exception will be thrown by the Web "
+"Bean manager at initialization time."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:96
+#, no-c-format
+msgid "Interceptor bindings for stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:98
+#, no-c-format
+msgid ""
+"A stereotype may specify a set of interceptor bindings to be inherited by "
+"all Web Beans with that stereotype."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:101
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:103
+#, no-c-format
+msgid ""
+"This helps us get technical concerns even further away from the business "
+"code!"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:109
+#, no-c-format
+msgid "Name defaulting with stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:111
+#, no-c-format
+msgid ""
+"Finally, we can specify that all Web Beans with a certain stereotype have a "
+"Web Bean name, defaulted by the Web Bean manager. Actions are often "
+"referenced in JSP pages, so they're a perfect use case for this feature. All "
+"we need to do is add an empty <literal>@Named</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:116
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@Named\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:118
+#, no-c-format
+msgid ""
+"Now, <literal>LoginAction</literal> will have the name <literal>loginAction</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:124
+#, no-c-format
+msgid "Standard stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:126
+#, no-c-format
+msgid ""
+"We've already met two standard stereotypes defined by the Web Beans "
+"specification: <literal>@Interceptor</literal> and <literal>@Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:129
+#, no-c-format
+msgid "Web Beans defines one further standard stereotype:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:131
+#, no-c-format
+msgid ""
+"<![CDATA[@Named \n"
+"@RequestScoped \n"
+"@Stereotype \n"
+"@Target({TYPE, METHOD}) \n"
+"@Retention(RUNTIME) \n"
+"public @interface Model {} ]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:133
+#, no-c-format
+msgid ""
+"This stereotype is intended for use with JSF. Instead of using JSF managed "
+"beans, just annotate a Web Bean <literal>@Model</literal>, and use it "
+"directly in your JSF page."
+msgstr ""


Property changes on: doc/trunk/reference/pot/stereotypes.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/pot/xml.pot (from rev 638, doc/trunk/reference/pot/modules/xml.pot)
===================================================================
--- doc/trunk/reference/pot/xml.pot	                        (rev 0)
+++ doc/trunk/reference/pot/xml.pot	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,353 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: xml.xml:4
+#, no-c-format
+msgid "Defining Web Beans using XML"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen plenty of examples of Web Beans declared using "
+"annotations. However, there are a couple of occasions when we can't use "
+"annotations to define the Web Bean:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:12
+#, no-c-format
+msgid "when the implementation class comes from some preexisting library, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:15
+#, no-c-format
+msgid ""
+"when there should be multiple Web Beans with the same implementation class."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:20
+#, no-c-format
+msgid "In either of these cases, Web Beans gives us two options:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:23
+#, no-c-format
+msgid "write a producer method, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:24
+#, no-c-format
+msgid "declare the Web Bean using XML."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:27
+#, no-c-format
+msgid ""
+"Many frameworks use XML to provide metadata relating to Java classes. "
+"However, Web Beans uses a very different approach to specifying the names of "
+"Java classes, fields or methods to most other frameworks. Instead of writing "
+"class and member names as the string values of XML elements and attributes, "
+"Web Beans lets you use the class or member name as the name of the XML "
+"element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:33
+#, no-c-format
+msgid ""
+"The advantage of this approach is that you can write an XML schema that "
+"prevents spelling errors in your XML document. It's even possible for a tool "
+"to generate the XML schema automatically from the compiled Java code. Or, an "
+"integrated development environment could perform the same validation without "
+"the need for the explicit intermediate generation step."
+msgstr ""
+
+#. Tag: title
+#: xml.xml:40
+#, no-c-format
+msgid "Declaring Web Bean classes"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:42
+#, no-c-format
+msgid ""
+"For each Java package, Web Beans defines a corresponding XML namespace. The "
+"namespace is formed by prepending <literal>urn:java:</literal> to the Java "
+"package name. For the package <literal>com.mydomain.myapp</literal>, the XML "
+"namespace is <literal>urn:java:com.mydomain.myapp</literal>."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:47
+#, no-c-format
+msgid ""
+"Java types belonging to a package are referred to using an XML element in "
+"the namespace corresponding to the package. The name of the element is the "
+"name of the Java type. Fields and methods of the type are specified by child "
+"elements in the same namespace. If the type is an annotation, members are "
+"specified by attributes of the element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:53
+#, no-c-format
+msgid ""
+"For example, the element <literal>&lt;util:Date/&gt;</literal> in the "
+"following XML fragment refers to the class <literal>java.util.Date</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:util=\"urn:java:java.util\">\n"
+"\n"
+"    <util:Date/>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:58
+#, no-c-format
+msgid ""
+"And this is all the code we need to declare that <literal>Date</literal> is "
+"a simple Web Bean! An instance of <literal>Date</literal> may now be "
+"injected by any other Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:62
+#, no-c-format
+msgid "<![CDATA[@Current Date date]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:67
+#, no-c-format
+msgid "Declaring Web Bean metadata"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:69
+#, no-c-format
+msgid ""
+"We can declare the scope, deployment type and interceptor binding types "
+"using direct child elements of the Web Bean declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:72
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:ShoppingCart>\n"
+"    <SessionScoped/>\n"
+"    <myfwk:Transactional requiresNew=\"true\"/>\n"
+"    <myfwk:Secure/>\n"
+"</myapp:ShoppingCart>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:74
+#, no-c-format
+msgid "We use exactly the same approach to specify names and binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[<util:Date>\n"
+"    <Named>currentTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <SessionScoped/>\n"
+"    <myapp:Login/>\n"
+"    <Named>loginTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:SystemStart/>\n"
+"    <Named>systemStartTime</Named>\n"
+"</util:Date>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:78
+#, no-c-format
+msgid ""
+"Where <literal>@Login</literal> and <literal>@SystemStart</literal> are "
+"binding annotations types."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@Current Date currentTime;\n"
+"@Login Date loginTime;\n"
+"@SystemStart Date systemStartTime;]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:83
+#, no-c-format
+msgid "As usual, a Web Bean may support multiple binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:85
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
+"    <myapp:PayByCheque/>\n"
+"    <myapp:Asynchronous/>\n"
+"</myapp:AsynchronousChequePaymentProcessor>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:87
+#, no-c-format
+msgid ""
+"Interceptors and decorators are just simple Web Beans, so they may be "
+"declared just like any other simple Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:90
+#, no-c-format
+msgid ""
+"<![CDATA[<myfwk:TransactionInterceptor>\n"
+"    <Interceptor/>\n"
+"    <myfwk:Transactional/>\n"
+"</myfwk:TransactionInterceptor>]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:95
+#, no-c-format
+msgid "Declaring Web Bean members"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:97
+#, no-c-format
+msgid "TODO!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:104
+#, no-c-format
+msgid "Declaring inline Web Beans"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:106
+#, no-c-format
+msgid "Web Beans lets us define a Web Bean at an injection point. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:108
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:System>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:admin>\n"
+"        <myapp:Name>\n"
+"            <myapp:firstname>Gavin</myapp:firstname>\n"
+"            <myapp:lastname>King</myapp:lastname>\n"
+"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
+"        </myapp:Name>\n"
+"    </myapp:admin>\n"
+"</myapp:System>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:110
+#, no-c-format
+msgid ""
+"The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of "
+"scope <literal>@Dependent</literal> and class <literal>Name</literal>, with "
+"a set of initial field values. This Web Bean has a special, container-"
+"generated binding and is therefore injectable only to the specific injection "
+"point at which it is declared."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:116
+#, no-c-format
+msgid ""
+"This simple but powerful feature allows the Web Beans XML format to be used "
+"to specify whole graphs of Java objects. It's not quite a full databinding "
+"solution, but it's close!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:123
+#, no-c-format
+msgid "Using a schema"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:125
+#, no-c-format
+msgid ""
+"If we want our XML document format to be authored by people who aren't Java "
+"developers, or who don't have access to our code, we need to provide a "
+"schema. There's nothing specific to Web Beans about writing or using the "
+"schema."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
+"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/"
+"jee/web-beans-1.0.xsd\n"
+"                              urn:java:com.mydomain.myapp http://mydomain."
+"com/xsd/myapp-1.2.xsd\">\n"
+"\n"
+"    <myapp:System>\n"
+"        ...\n"
+"    </myapp:System>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:132
+#, no-c-format
+msgid ""
+"Writing an XML schema is quite tedious. Therefore, the Web Beans RI project "
+"will provide a tool which automatically generates the XML schema from "
+"compiled Java code."
+msgstr ""


Property changes on: doc/trunk/reference/pot/xml.pot
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: doc/trunk/reference/zh-CN/Author_Group.po
===================================================================
--- doc/trunk/reference/zh-CN/Author_Group.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/Author_Group.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,60 @@
+# Language zh-CN translations for Introduction_to_Web_Beans package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Introduction_to_Web_Beans VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2009-01-04 23:18+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:4
+#, no-c-format
+msgid "<firstname>Gavin</firstname> <surname>King</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:7
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red Hat "
+"Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: author
+#: Author_Group.xml:12
+#, no-c-format
+msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
+msgstr ""
+
+#. Tag: affiliation
+#: Author_Group.xml:15
+#, no-c-format
+msgid ""
+"<jobtitle>Web Beans (JSR-299) Reference Implementation lead </jobtitle> "
+"<orgname>Red Hat Middleware LLC</orgname>"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:21
+#, no-c-format
+msgid "<firstname>Nicola</firstname> <surname>Benaglia</surname>"
+msgstr ""
+
+#. Tag: contrib
+#: Author_Group.xml:24 Author_Group.xml:29
+#, no-c-format
+msgid "Italian Translation"
+msgstr ""
+
+#. Tag: othercredit
+#: Author_Group.xml:26
+#, no-c-format
+msgid "<firstname>Francesco</firstname> <surname>Milesi</surname>"
+msgstr ""

Copied: doc/trunk/reference/zh-CN/Book_Info.po (from rev 682, doc/trunk/reference/zh-CN/modules/Book_Info.po)
===================================================================
--- doc/trunk/reference/zh-CN/Book_Info.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/Book_Info.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,48 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-22 09:36+0800\n"
+"Last-Translator: Sean Wu <alartin at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:4
+#, no-c-format
+msgid "Introduction to Web Beans"
+msgstr "Web Beans介绍"
+
+#. Tag: subtitle
+#: Book_Info.xml:5
+#, no-c-format
+msgid ""
+"The new Java standard for dependency injection and contextual state "
+"management"
+msgstr "关于依赖注入和上下文状态管理的Java新规范"
+
+#~ msgid "<firstname>Gavin</firstname> <surname>King</surname>"
+#~ msgstr "<firstname>Gavin</firstname> <surname>King</surname>"
+
+#~ msgid ""
+#~ "<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red "
+#~ "Hat Middleware LLC</orgname>"
+#~ msgstr ""
+#~ "<jobtitle>Web Beans (JSR-299) 规范领导人</jobtitle> <orgname>红帽中间件有"
+#~ "限责任公司</orgname>"
+
+#~ msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
+#~ msgstr "<firstname>Pete</firstname> <surname>Muir</surname>"
+
+#~ msgid ""
+#~ "<jobtitle>Web Beans (JSR-299) Reference Implementation lead</jobtitle> "
+#~ "<orgname>Red Hat Middleware LLC</orgname>"
+#~ msgstr ""
+#~ "<jobtitle>Web Beans (JSR-299) 参考实现领导人</jobtitle> <orgname>红帽中间"
+#~ "件有限责任公司</orgname>"


Property changes on: doc/trunk/reference/zh-CN/Book_Info.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/decorators.po (from rev 638, doc/trunk/reference/zh-CN/modules/decorators.po)
===================================================================
--- doc/trunk/reference/zh-CN/decorators.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/decorators.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,243 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: decorators.xml:4
+#, no-c-format
+msgid "Decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:6
+#, no-c-format
+msgid ""
+"Interceptors are a powerful way to capture and separate concerns which are "
+"<emphasis>orthogonal</emphasis> to the type system. Any interceptor is able "
+"to intercept invocations of any Java type. This makes them perfect for "
+"solving technical concerns such as transaction management and security. "
+"However, by nature, interceptors are unaware of the actual semantics of the "
+"events they intercept. Thus, interceptors aren't an appropriate tool for "
+"separating business-related concerns."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:14
+#, no-c-format
+msgid ""
+"The reverse is true of <emphasis>decorators</emphasis>. A decorator "
+"intercepts invocations only for a certain Java interface, and is therefore "
+"aware of all the semantics attached to that interface. This makes decorators "
+"a perfect tool for modeling some kinds of business concerns. It also means "
+"that a decorator doesn't have the generality of an interceptor. Decorators "
+"aren't able to solve technical concerns that cut across many disparate types."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:22
+#, no-c-format
+msgid "Suppose we have an interface that represents accounts:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:24
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Account {\n"
+"    public BigDecimal getBalance();\n"
+"    public User getOwner();\n"
+"    public void withdraw(BigDecimal amount);\n"
+"    public void deposit(BigDecimal amount);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:26
+#, no-c-format
+msgid ""
+"Several different Web Beans in our system implement the <literal>Account</"
+"literal> interface. However, we have a common legal requirement that, for "
+"any kind of account, large transactions must be recorded by the system in a "
+"special log. This is a perfect job for a decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:32
+#, no-c-format
+msgid ""
+"A decorator is a simple Web Bean that implements the type it decorates and "
+"is annotated <literal>@Decorator</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Decorator\n"
+"public abstract class LargeTransactionDecorator \n"
+"        implements Account {\n"
+"    \n"
+"    @Decorates Account account;\n"
+"    \n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    public void withdraw(BigDecimal amount) {\n"
+"        account.withdraw(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedWithdrawl(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"    public void deposit(BigDecimal amount);\n"
+"        account.deposit(amount);\n"
+"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
+"            em.persist( new LoggedDeposit(amount) );\n"
+"        }\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:37
+#, no-c-format
+msgid ""
+"Unlike other simple Web Beans, a decorator may be an abstract class. If "
+"there's nothing special the decorator needs to do for a particular method of "
+"the decorated interface, you don't need to implement that method."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:43
+#, no-c-format
+msgid "Delegate attributes"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:45
+#, no-c-format
+msgid ""
+"All decorators have a <emphasis>delegate attribute</emphasis>. The type and "
+"binding types of the delegate attribute determine which Web Beans the "
+"decorator is bound to. The delegate attribute type must implement or extend "
+"all interfaces implemented by the decorator."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:50
+#, no-c-format
+msgid ""
+"This delegate attribute specifies that the decorator is bound to all Web "
+"Beans that implement <literal>Account</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:53
+#, no-c-format
+msgid "<![CDATA[@Decorates Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:55
+#, no-c-format
+msgid ""
+"A delegate attribute may specify a binding annotation. Then the decorator "
+"will only be bound to Web Beans with the same binding."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:58
+#, no-c-format
+msgid "<![CDATA[@Decorates @Foreign Account account;]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:60
+#, no-c-format
+msgid "A decorator is bound to any Web Bean which:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:64
+#, no-c-format
+msgid "has the type of the delegate attribute as an API type, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:67
+#, no-c-format
+msgid "has all binding types that are declared by the delegate attribute."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:71
+#, no-c-format
+msgid ""
+"The decorator may invoke the delegate attribute, which has much the same "
+"effect as calling <literal>InvocationContext.proceed()</literal> from an "
+"interceptor."
+msgstr ""
+
+#. Tag: title
+#: decorators.xml:78
+#, no-c-format
+msgid "Enabling decorators"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:80
+#, no-c-format
+msgid ""
+"We need to <emphasis>enable</emphasis> our decorator in <literal>web-beans."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: decorators.xml:83
+#, no-c-format
+msgid ""
+"<![CDATA[<Decorators>\n"
+"    <myapp:LargeTransactionDecorator/>\n"
+"</Decorators>]]>"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:85
+#, no-c-format
+msgid ""
+"This declaration serves the same purpose for decorators that the "
+"<literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:90
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all decorators in our system, "
+"ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:94
+#, no-c-format
+msgid "it lets us enable or disable decorator classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: decorators.xml:98
+#, no-c-format
+msgid ""
+"Interceptors for a method are called before decorators that apply to that "
+"method."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/decorators.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/ee.po (from rev 638, doc/trunk/reference/zh-CN/modules/ee.po)
===================================================================
--- doc/trunk/reference/zh-CN/ee.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/ee.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,329 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ee.xml:4
+#, no-c-format
+msgid "Java EE integration"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is fully integrated into the Java EE environment. Web Beans have "
+"access to Java EE resources and JPA persistence contexts. They may be used "
+"in Unified EL expressions in JSF and JSP pages. They may even be injected "
+"into some objects, such as Servlets and Message-Driven Beans, which are not "
+"Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:12
+#, no-c-format
+msgid "Injecting Java EE resources into a Web Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:14
+#, no-c-format
+msgid ""
+"All simple and enterprise Web Beans may take advantage of Java EE dependency "
+"injection using <literal>@Resource</literal>, <literal>@EJB</literal> and "
+"<literal>@PersistenceContext</literal>. We've already seen a couple of "
+"examples of this, though we didn't pay much attention at the time:"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:19
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"    \n"
+"    ...\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:23
+#, no-c-format
+msgid ""
+"The Java EE <literal>@PostConstruct</literal> and <literal>@PreDestroy</"
+"literal> callbacks are also supported for all simple and enterprise Web "
+"Beans. The <literal>@PostConstruct</literal> method is called after "
+"<emphasis>all</emphasis> injection has been performed."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:28
+#, no-c-format
+msgid ""
+"There is one restriction to be aware of here: <literal>@PersistenceContext"
+"(type=EXTENDED)</literal> is not supported for simple Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:35
+#, no-c-format
+msgid "Calling a Web Bean from a Servlet"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:37
+#, no-c-format
+msgid ""
+"It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject the "
+"Web Bean using Web Beans field or initializer method injection."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:40
+#, no-c-format
+msgid ""
+"public class Login extends HttpServlet {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @Current Login login;\n"
+"\n"
+"    @Override\n"
+"    public void service(HttpServletRequest request, HttpServletResponse "
+"response)\n"
+"        throws ServletException, IOException {\n"
+"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
+"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
+"        login.login();\n"
+"        if ( login.isLoggedIn() ) {\n"
+"            response.sendRedirect(\"/home.jsp\");\n"
+"        }\n"
+"        else {\n"
+"            response.sendRedirect(\"/loginError.jsp\");\n"
+"        }\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:42
+#, no-c-format
+msgid ""
+"The Web Beans client proxy takes care of routing method invocations from the "
+"Servlet to the correct instances of <literal>Credentials</literal> and "
+"<literal>Login</literal> for the current request and HTTP session."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:49
+#, no-c-format
+msgid "Calling a Web Bean from a Message-Driven Bean"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:51
+#, no-c-format
+msgid ""
+"Web Beans injection applies to all EJBs, even when they aren't under the "
+"control of the Web Bean manager (if they were obtained by direct JNDI "
+"lookup, or injection using <literal>@EJB</literal>, for example. In "
+"particular, you can use Web Beans injection in Message-Driven Beans, which "
+"are not considered Web Beans because you can't inject them."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:57
+#, no-c-format
+msgid ""
+"You can even use Web Beans interceptor bindings for Message-Driven Beans."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:59
+#, no-c-format
+msgid ""
+"@Transactional @MessageDriven\n"
+"public class ProcessOrder implements MessageListener {\n"
+"\n"
+"    @Current Inventory inventory;\n"
+"    @PersistenceContext EntityManager em;\n"
+"\n"
+"    public void onMessage(Message message) {\n"
+"        ...\n"
+"    }\n"
+"            \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:61
+#, no-c-format
+msgid ""
+"Thus, receiving messages is super-easy in a Web Beans environment. But "
+"beware that there is no session or conversation context available when a "
+"message is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</"
+"literal> and <literal>@ApplicationScoped</literal> Web Beans are available."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:66
+#, no-c-format
+msgid "It's also easy to send messages using Web Beans."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:71
+#, no-c-format
+msgid "JMS endpoints"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:73
+#, no-c-format
+msgid ""
+"Sending messages using JMS can be quite complex, because of the number of "
+"different objects you need to deal with. For queues we have <literal>Queue</"
+"literal>, <literal>QueueConnectionFactory</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> and "
+"<literal>QueueSender</literal>. For topics we have <literal>Topic</literal>, "
+"<literal>TopicConnectionFactory</literal>, <literal>TopicConnection</"
+"literal>, <literal>TopicSession</literal> and <literal>TopicPublisher</"
+"literal>. Each of these objects has its own lifecycle and threading model "
+"that we need to worry about."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:82
+#, no-c-format
+msgid ""
+"Web Beans takes care of all this for us. All we need to do is declare the "
+"queue or topic in <literal>web-beans.xml</literal>, specifying an associated "
+"binding type and connection factory."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:86
+#, no-c-format
+msgid ""
+"<![CDATA[<Queue>\n"
+"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
+"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:OrderProcessor/>    \n"
+"</Queue>]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:88
+#, no-c-format
+msgid ""
+"<![CDATA[<Topic>\n"
+"    <destination>java:comp/env/jms/StockPrices</destination>\n"
+"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
+"connectionFactory>\n"
+"    <myapp:StockPrices/>    \n"
+"</Topic>]]>"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:90
+#, no-c-format
+msgid ""
+"Now we can just inject the <literal>Queue</literal>, "
+"<literal>QueueConnection</literal>, <literal>QueueSession</literal> or "
+"<literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, "
+"<literal>TopicConnection</literal>, <literal>TopicSession</literal> or "
+"<literal>TopicPublisher</literal> for a topic."
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:96
+#, no-c-format
+msgid ""
+"@OrderProcessor QueueSender orderSender;\n"
+"@OrderProcessor QueueSession orderSession;\n"
+"\n"
+"public void sendMessage() {\n"
+"    MapMessage msg = orderSession.createMapMessage();\n"
+"    ...\n"
+"    orderSender.send(msg);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: ee.xml:98
+#, no-c-format
+msgid ""
+"@StockPrices TopicPublisher pricePublisher;\n"
+"@StockPrices TopicSession priceSession;\n"
+"\n"
+"public void sendMessage(String price) {\n"
+"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:100
+#, no-c-format
+msgid ""
+"The lifecycle of the injected JMS objects is completely controlled by the "
+"Web Bean manager."
+msgstr ""
+
+#. Tag: title
+#: ee.xml:106
+#, no-c-format
+msgid "Packaging and deployment"
+msgstr ""
+
+#. Tag: para
+#: ee.xml:108
+#, no-c-format
+msgid ""
+"Web Beans doesn't define any special deployment archive. You can package Web "
+"Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the "
+"application classpath. However, each archive that contains Web Beans must "
+"include a file named <literal>web-beans.xml</literal> in the <literal>META-"
+"INF</literal> or <literal>WEB-INF</literal> directory. The file may be "
+"empty. Web Beans deployed in archives that do not have a <literal>web-beans."
+"xml</literal> file will not be available for use in the application."
+msgstr ""
+
+#. Tag: para
+#: ee.xml:116
+#, no-c-format
+msgid ""
+"For Java SE execution, Web Beans may be deployed in any location in which "
+"EJBs may be deployed for execution by the embeddable EJB Lite container. "
+"Again, each location must contain a <literal>web-beans.xml</literal> file."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/ee.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/events.po (from rev 638, doc/trunk/reference/zh-CN/modules/events.po)
===================================================================
--- doc/trunk/reference/zh-CN/events.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/events.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,649 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: events.xml:4
+#, no-c-format
+msgid "Events"
+msgstr ""
+
+#. Tag: para
+#: events.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans event notification facility allows Web Beans to interact in a "
+"totally decoupled manner. Event <emphasis>producers</emphasis> raise events "
+"that are then delivered to event <emphasis>observers</emphasis> by the Web "
+"Bean manager. This basic schema might sound like the familiar observer/"
+"observable pattern, but there are a couple of twists:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:14
+#, no-c-format
+msgid ""
+"not only are event producers decoupled from observers; observers are "
+"completely decoupled from producers,"
+msgstr ""
+
+#. Tag: para
+#: events.xml:18
+#, no-c-format
+msgid ""
+"observers can specify a combination of \"selectors\" to narrow the set of "
+"event notifications they will receive, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:22
+#, no-c-format
+msgid ""
+"observers can be notified immediately, or can specify that delivery of the "
+"event should be delayed until the end of the current transaction"
+msgstr ""
+
+#. Tag: title
+#: events.xml:28
+#, no-c-format
+msgid "Event observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:30
+#, no-c-format
+msgid ""
+"An <emphasis>observer method</emphasis> is a method of a Web Bean with a "
+"parameter annotated <literal>@Observes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:33
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:35
+#, no-c-format
+msgid ""
+"The annotated parameter is called the <emphasis>event parameter</emphasis>. "
+"The type of the event parameter is the observed <emphasis>event type</"
+"emphasis>. Observer methods may also specify \"selectors\", which are just "
+"instances of Web Beans binding types. When a binding type is used as an "
+"event selector, it is called an <emphasis>event binding type</emphasis>."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Updated { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:43
+#, no-c-format
+msgid ""
+"We specify the event bindings of the observer method by annotating the event "
+"parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:46 events.xml:190
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:48
+#, no-c-format
+msgid ""
+"An observer method need not specify any event bindings&#151;in this case it "
+"is interested in <emphasis>all</emphasis> events of a particular type. If it "
+"does specify event bindings, it is only interested in events which also have "
+"those event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:53
+#, no-c-format
+msgid ""
+"The observer method may have additional parameters, which are injected "
+"according to the usual Web Beans method parameter injection semantics:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
+"document, User user) { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:61
+#, no-c-format
+msgid "Event producers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:63
+#, no-c-format
+msgid ""
+"The event producer may obtain an <emphasis>event notifier</emphasis> object "
+"by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:66
+#, no-c-format
+msgid "<![CDATA[@Observable Event<Document> documentEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:68
+#, no-c-format
+msgid ""
+"The <literal>@Observable</literal> annotation implicitly defines a Web Bean "
+"with scope <literal>@Dependent</literal> and deployment type "
+"<literal>@Standard</literal>, with an implementation provided by the Web "
+"Bean manager."
+msgstr ""
+
+#. Tag: para
+#: events.xml:72
+#, no-c-format
+msgid ""
+"A producer raises events by calling the <literal>fire()</literal> method of "
+"the <literal>Event</literal> interface, passing an <emphasis>event object</"
+"emphasis>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:75
+#, no-c-format
+msgid "<![CDATA[documentEvent.fire(document);]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:77
+#, no-c-format
+msgid ""
+"An event object may be an instance of any Java class that has no type "
+"variables or wildcard type parameters. The event will be delivered to every "
+"observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:83 events.xml:107 events.xml:126
+#, no-c-format
+msgid "has an event parameter to which the event object is assignable, and"
+msgstr ""
+
+#. Tag: para
+#: events.xml:86
+#, no-c-format
+msgid "specifies no event bindings."
+msgstr ""
+
+#. Tag: para
+#: events.xml:90
+#, no-c-format
+msgid ""
+"The Web Bean manager simply calls all the observer methods, passing the "
+"event object as the value of the event parameter. If any observer method "
+"throws an exception, the Web Bean manager stops calling observer methods, "
+"and the exception is rethrown by the <literal>fire()</literal> method."
+msgstr ""
+
+#. Tag: para
+#: events.xml:95
+#, no-c-format
+msgid ""
+"To specify a \"selector\", the event producer may pass an instance of the "
+"event binding type to the <literal>fire()</literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>()"
+"{} );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:100
+#, no-c-format
+msgid ""
+"The helper class <literal>AnnotationLiteral</literal> makes it possible to "
+"instantiate binding types inline, since this is otherwise difficult to do in "
+"Java."
+msgstr ""
+
+#. Tag: para
+#: events.xml:103
+#, no-c-format
+msgid "The event will be delivered to every observer method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:110
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal>."
+msgstr ""
+
+#. Tag: para
+#: events.xml:115
+#, no-c-format
+msgid ""
+"Alternatively, event bindings may be specified by annotating the event "
+"notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:118
+#, no-c-format
+msgid "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:120
+#, no-c-format
+msgid ""
+"Then every event fired via this instance of <literal>Event</literal> has the "
+"annotated event binding. The event will be delivered to every observer "
+"method that:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:129
+#, no-c-format
+msgid ""
+"does not specify any event binding <emphasis>except</emphasis> for the event "
+"bindings passed to <literal>fire()</literal> or the annotated event bindings "
+"of the event notifier injection point."
+msgstr ""
+
+#. Tag: title
+#: events.xml:138
+#, no-c-format
+msgid "Registering observers dynamically"
+msgstr ""
+
+#. Tag: para
+#: events.xml:140
+#, no-c-format
+msgid ""
+"It's often useful to register an event observer dynamically. The application "
+"may implement the <literal>Observer</literal> interface and register an "
+"instance with an event notifier by calling the <literal>observe()</literal> "
+"method."
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:144
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } } );]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:146
+#, no-c-format
+msgid ""
+"Event binding types may be specified by the event notifier injection point "
+"or by passing event binding type instances to the <literal>observe()</"
+"literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:149
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
+"(Document doc) { ... } }, \n"
+"                                                new "
+"AnnotationLiteral<Updated>(){} );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:154
+#, no-c-format
+msgid "Event bindings with members"
+msgstr ""
+
+#. Tag: para
+#: events.xml:156
+#, no-c-format
+msgid "An event binding type may have annotation members:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:158
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Target({PARAMETER, FIELD})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Role {\n"
+"    RoleType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:160
+#, no-c-format
+msgid ""
+"The member value is used to narrow the messages delivered to the observer:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:164
+#, no-c-format
+msgid ""
+"Event binding type members may be specified statically by the event "
+"producer, via annotations at the event notifier injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:167
+#, no-c-format
+msgid "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:169
+#, no-c-format
+msgid ""
+"Alternatively, the value of the event binding type member may be determined "
+"dynamically by the event producer. We start by writing an abstract subclass "
+"of <literal>AnnotationLiteral</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:172
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class RoleBinding \n"
+"    extends AnnotationLiteral<Role> \n"
+"    implements Role {}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:174
+#, no-c-format
+msgid ""
+"The event producer passes an instance of this class to <literal>fire()</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value"
+"() { return user.getRole(); } } );]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:181
+#, no-c-format
+msgid "Multiple event bindings"
+msgstr ""
+
+#. Tag: para
+#: events.xml:183
+#, no-c-format
+msgid "Event binding types may be combined, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:185
+#, no-c-format
+msgid ""
+"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
+"...\n"
+"if (document.isBlog()) blogEvent.fire(document, new "
+"AnnotationLiteral<Updated>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:187
+#, no-c-format
+msgid ""
+"When this event occurs, all of the following observer methods will be "
+"notified:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:189
+#, no-c-format
+msgid ""
+"<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document "
+"document) { ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:191
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) "
+"{ ... }]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:192
+#, no-c-format
+msgid ""
+"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
+"{ ... }}}]]>"
+msgstr ""
+
+#. Tag: title
+#: events.xml:197
+#, no-c-format
+msgid "Transactional observers"
+msgstr ""
+
+#. Tag: para
+#: events.xml:199
+#, no-c-format
+msgid ""
+"Transactional observers receive their event notifications during the before "
+"or after completion phase of the transaction in which the event was raised. "
+"For example, the following observer method needs to refresh a query result "
+"set that is cached in the application context, but only when transactions "
+"that update the <literal>Category</literal> tree succeed:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:205
+#, no-c-format
+msgid ""
+"<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes "
+"CategoryUpdateEvent event) { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:207
+#, no-c-format
+msgid "There are three kinds of transactional observers:"
+msgstr ""
+
+#. Tag: para
+#: events.xml:211
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionSuccess</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction "
+"completes successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:216
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionFailure</literal> observers are called during the "
+"after completion phase of the transaction, but only if the transaction fails "
+"to complete successfully"
+msgstr ""
+
+#. Tag: para
+#: events.xml:221
+#, no-c-format
+msgid ""
+"<literal>@AfterTransactionCompletion</literal> observers are called during "
+"the after completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:225
+#, no-c-format
+msgid ""
+"<literal>@BeforeTransactionCompletion</literal> observers are called during "
+"the before completion phase of the transaction"
+msgstr ""
+
+#. Tag: para
+#: events.xml:230
+#, no-c-format
+msgid ""
+"Transactional observers are very important in a stateful object model like "
+"Web Beans, because state is often held for longer than a single atomic "
+"transaction."
+msgstr ""
+
+#. Tag: para
+#: events.xml:233
+#, no-c-format
+msgid ""
+"Imagine that we have cached a JPA query result set in the application scope:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:235
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    \n"
+"    List<Product> products;\n"
+"\n"
+"    @Produces @Catalog \n"
+"    List<Product> getCatalog() {\n"
+"        if (products==null) {\n"
+"            products = em.createQuery(\"select p from Product p where p."
+"deleted = false\")\n"
+"                .getResultList();\n"
+"        }\n"
+"        return products;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:237
+#, no-c-format
+msgid ""
+"From time to time, a <literal>Product</literal> is created or deleted. When "
+"this occurs, we need to refresh the <literal>Product</literal> catalog. But "
+"we should wait until <emphasis>after</emphasis> the transaction completes "
+"successfully before performing this refresh!"
+msgstr ""
+
+#. Tag: para
+#: events.xml:242
+#, no-c-format
+msgid ""
+"The Web Bean that creates and deletes <literal>Product</literal>s could "
+"raise events, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:245
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class ProductManager {\n"
+"\n"
+"    @PersistenceContext EntityManager em;\n"
+"    @Observable Event<Product> productEvent;\n"
+"\n"
+"    public void delete(Product product) {\n"
+"        em.delete(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
+"    }\n"
+"    \n"
+"    public void persist(Product product) {\n"
+"        em.persist(product);\n"
+"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: events.xml:247
+#, no-c-format
+msgid ""
+"And now <literal>Catalog</literal> can observe the events after successful "
+"completion of the transaction:"
+msgstr ""
+
+#. Tag: programlisting
+#: events.xml:250
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Singleton\n"
+"public class Catalog {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Created Product "
+"product) {\n"
+"        products.add(product);\n"
+"    }\n"
+"    \n"
+"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product "
+"product) {\n"
+"        products.remove(product);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/events.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/example.po (from rev 701, doc/trunk/reference/zh-CN/modules/example.po)
===================================================================
--- doc/trunk/reference/zh-CN/example.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/example.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,255 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-23 17:55+0800\n"
+"Last-Translator: Sean Wu <alartin at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example.xml:4
+#, no-c-format
+msgid "JSF web application example"
+msgstr "JSF Web应用例子"
+
+#. Tag: para
+#: example.xml:6
+#, no-c-format
+msgid ""
+"Let's illustrate these ideas with a full example. We're going to implement "
+"user login/logout for an application that uses JSF. First, we'll define a "
+"Web Bean to hold the username and password entered during login:"
+msgstr ""
+"让我们通过一个完整的例子来演示这些想法。我们将是使用JSF来实现一个应用的用户登"
+"录/退出功能。首先,我们定一个Web Bean来持有登录过程中用户输入的用户名和密码:"
+
+#. Tag: programlisting
+#: example.xml:11
+#, fuzzy, no-c-format
+msgid ""
+"<![CDATA[@Named @RequestScoped\n"
+"public class Credentials {\n"
+"        \n"
+"    private String username;\n"
+"    private String password;\n"
+"    \n"
+"    public String getUsername() { return username; }\n"
+"    public void setUsername(String username) { this.username = username; }\n"
+"    \n"
+"    public String getPassword() { return password; }\n"
+"    public void setPassword(String password) { this.password = password; }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Named\n"
+"public class Credentials {\n"
+"        \n"
+"    private String username;\n"
+"    private String password;\n"
+"    \n"
+"    public String getUsername() { return username; }\n"
+"    public void setUsername(String username) { this.username = username; }\n"
+"    \n"
+"    public String getPassword() { return password; }\n"
+"    public void setPassword(String password) { this.password = password; }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: example.xml:13
+#, no-c-format
+msgid "This Web Bean is bound to the login prompt in the following JSF form:"
+msgstr "这个Web Bean和下面的JSF表单的login绑定:"
+
+#. Tag: programlisting
+#: example.xml:15
+#, fuzzy, no-c-format
+msgid ""
+"<![CDATA[<h:form>\n"
+"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
+"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
+"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
+"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
+"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
+"    </h:panelGrid>\n"
+"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!"
+"login.loggedIn}\"/>\n"
+"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#"
+"{login.loggedIn}\"/>\n"
+"</h:form>]]>"
+msgstr ""
+"<![CDATA[<f:form>\n"
+"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
+"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
+"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
+"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
+"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
+"    </h:panelGrid>\n"
+"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!"
+"login.loggedIn}\"/>\n"
+"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#"
+"{login.loggedIn}\"/>\n"
+"</f:form]]>"
+
+#. Tag: para
+#: example.xml:17
+#, no-c-format
+msgid ""
+"The actual work is done by a session scoped Web Bean that maintains "
+"information about the currently logged-in user and exposes the "
+"<literal>User</literal> entity to other Web Beans:"
+msgstr ""
+"实际的工作由一个会话范围的Web Bean完成。这个会话范围的Web Bean维护当前登录用"
+"户的信息,并且将<literal>User</literal>实体暴露给其他Web Bean:"
+
+#. Tag: programlisting
+#: example.xml:21
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"\n"
+"    private User user;\n"
+"    \n"
+"    public void login() {\n"
+"            \n"
+"        List<User> results = userDatabase.createQuery(\n"
+"           \"select u from User u where u.username=:username and u.password=:"
+"password\")\n"
+"           .setParameter(\"username\", credentials.getUsername())\n"
+"           .setParameter(\"password\", credentials.getPassword())\n"
+"           .getResultList();\n"
+"        \n"
+"        if ( !results.isEmpty() ) {\n"
+"           user = results.get(0);\n"
+"        }\n"
+"        \n"
+"    }\n"
+"    \n"
+"    public void logout() {\n"
+"        user = null;\n"
+"    }\n"
+"    \n"
+"    public boolean isLoggedIn() {\n"
+"       return user!=null;\n"
+"    }\n"
+"    \n"
+"    @Produces @LoggedIn User getCurrentUser() {\n"
+"        return user;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class Login {\n"
+"\n"
+"    @Current Credentials credentials;\n"
+"    @PersistenceContext EntityManager userDatabase;\n"
+"\n"
+"    private User user;\n"
+"    \n"
+"    public void login() {\n"
+"            \n"
+"        List<User> results = userDatabase.createQuery(\n"
+"           \"select u from User u where u.username=:username and u.password=:"
+"password\")\n"
+"           .setParameter(\"username\", credentials.getUsername())\n"
+"           .setParameter(\"password\", credentials.getPassword())\n"
+"           .getResultList();\n"
+"        \n"
+"        if ( !results.isEmpty() ) {\n"
+"           user = results.get(0);\n"
+"        }\n"
+"        \n"
+"    }\n"
+"    \n"
+"    public void logout() {\n"
+"        user = null;\n"
+"    }\n"
+"    \n"
+"    public boolean isLoggedIn() {\n"
+"       return user!=null;\n"
+"    }\n"
+"    \n"
+"    @Produces @LoggedIn User getCurrentUser() {\n"
+"        return user;\n"
+"    }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: example.xml:23
+#, no-c-format
+msgid "Of course, <literal>@LoggedIn</literal> is a binding annotation:"
+msgstr "当然, <literal>@LoggedIn</literal>是一个绑定注释:"
+
+#. Tag: programlisting
+#: example.xml:25
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD})\n"
+"@BindingType\n"
+"public @interface LoggedIn {}]]>"
+msgstr ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD})\n"
+"@BindingType\n"
+"public @interface LoggedIn {}]]>"
+
+#. Tag: para
+#: example.xml:27
+#, no-c-format
+msgid "Now, any other Web Bean can easily inject the current user:"
+msgstr "现在,任何其他的Web Bean可以轻松地将当前用户注入:"
+
+#. Tag: programlisting
+#: example.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class DocumentEditor {\n"
+"\n"
+"    @Current Document document;\n"
+"    @LoggedIn User currentUser;\n"
+"    @PersistenceContext EntityManager docDatabase;\n"
+"    \n"
+"    public void save() {\n"
+"        document.setCreatedBy(currentUser);\n"
+"        docDatabase.persist(document);\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class DocumentEditor {\n"
+"\n"
+"    @Current Document document;\n"
+"    @LoggedIn User currentUser;\n"
+"    @PersistenceContext EntityManager docDatabase;\n"
+"    \n"
+"    public void save() {\n"
+"        document.setCreatedBy(currentUser);\n"
+"        docDatabase.persist(document);\n"
+"    }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: example.xml:31
+#, no-c-format
+msgid ""
+"Hopefully, this example gives a flavor of the Web Bean programming model. In "
+"the next chapter, we'll explore Web Beans dependency injection in greater "
+"depth."
+msgstr ""
+"希望这个例子能够让你尝试了Web Bean的编程模型。在下一章中,我们将更加深入的研"
+"究Web Bean的依赖注入。"


Property changes on: doc/trunk/reference/zh-CN/example.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/extend.po (from rev 638, doc/trunk/reference/zh-CN/modules/extend.po)
===================================================================
--- doc/trunk/reference/zh-CN/extend.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/extend.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,252 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: extend.xml:4
+#, no-c-format
+msgid "Extending Web Beans"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:6
+#, no-c-format
+msgid ""
+"Web Beans is intended to be a platform for frameworks, extensions and "
+"integration with other technologies. Therefore, Web Beans exposes a set of "
+"SPIs for the use of developers of portable extensions to Web Beans. For "
+"example, the following kinds of extensions were envisaged by the designers "
+"of Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:14
+#, no-c-format
+msgid "integration with Business Process Management engines,"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:17
+#, no-c-format
+msgid ""
+"integration with third-party frameworks such as Spring, Seam, GWT or Wicket, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:21
+#, no-c-format
+msgid "new technology based upon the Web Beans programming model."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:25
+#, no-c-format
+msgid ""
+"The nerve center for extending Web Beans is the <literal>Manager</literal> "
+"object."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:29
+#, no-c-format
+msgid "The <literal>Manager</literal> object"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:31
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> interface lets us register and obtain Web "
+"Beans, interceptors, decorators, observers and contexts programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:34
+#, no-c-format
+msgid ""
+"<![CDATA[public interface Manager\n"
+"{\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... "
+"bindings);\n"
+"\n"
+"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
+"\n"
+"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public Set<Bean<?>> resolveByName(String name);\n"
+"\n"
+"   public Object getInstanceByName(String name);\n"
+"\n"
+"   public <T> T getInstance(Bean<T> bean);\n"
+"\n"
+"   public void fireEvent(Object event, Annotation... bindings);\n"
+"\n"
+"   public Context getContext(Class<? extends Annotation> scopeType);\n"
+"\n"
+"   public Manager addContext(Context context);\n"
+"\n"
+"   public Manager addBean(Bean<?> bean);\n"
+"\n"
+"   public Manager addInterceptor(Interceptor interceptor);\n"
+"\n"
+"   public Manager addDecorator(Decorator decorator);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer, Class<T> "
+"eventType,\n"
+"         Annotation... bindings);\n"
+"\n"
+"   public <T> Manager removeObserver(Observer<T> observer,\n"
+"         TypeLiteral<T> eventType, Annotation... bindings);\n"
+"\n"
+"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... "
+"bindings);\n"
+"\n"
+"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
+"         Annotation... interceptorBindings);\n"
+"\n"
+"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
+"         Annotation... bindings);\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:36
+#, no-c-format
+msgid "We can obtain an instance of <literal>Manager</literal> via injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:38
+#, no-c-format
+msgid "@Current Manager manager"
+msgstr ""
+
+#. Tag: title
+#: extend.xml:43
+#, no-c-format
+msgid "The <literal>Bean</literal> class"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:45
+#, no-c-format
+msgid ""
+"Instances of the abstract class <literal>Bean</literal> represent Web Beans. "
+"There is an instance of <literal>Bean</literal> registered with the "
+"<literal>Manager</literal> object for every Web Bean in the application."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:50
+#, no-c-format
+msgid ""
+"public abstract class Bean&lt;T&gt; {\n"
+"    \n"
+"    private final Manager manager;\n"
+"    \n"
+"    protected Bean(Manager manager) {\n"
+"        this.manager=manager;\n"
+"    }\n"
+"    \n"
+"    protected Manager getManager() {\n"
+"        return manager;\n"
+"    }\n"
+"    \n"
+"    public abstract Set&lt;Class&gt; getTypes();\n"
+"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
+"    public abstract String getName();\n"
+"    \n"
+"    public abstract boolean isSerializable();\n"
+"    public abstract boolean isNullable();\n"
+"\n"
+"    public abstract T create();\n"
+"    public abstract void destroy(T instance);\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:52
+#, no-c-format
+msgid ""
+"It's possible to extend the <literal>Bean</literal> class and register "
+"instances by calling <literal>Manager.addBean()</literal> to provide support "
+"for new kinds of Web Beans, beyond those defined by the Web Beans "
+"specification (simple and enterprise Web Beans, producer methods and JMS "
+"endpoints). For example, we could use the <literal>Bean</literal> class to "
+"allow objects managed by another framework to be injected into Web Beans."
+msgstr ""
+
+#. Tag: para
+#: extend.xml:60
+#, no-c-format
+msgid ""
+"There are two subclasses of <literal>Bean</literal> defined by the Web Beans "
+"specification: <literal>Interceptor</literal> and <literal>Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: extend.xml:67
+#, no-c-format
+msgid "The <literal>Context</literal> interface"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Context</literal> interface supports addition of new scopes to "
+"Web Beans, or extension of the built-in scopes to new environments."
+msgstr ""
+
+#. Tag: programlisting
+#: extend.xml:72
+#, no-c-format
+msgid ""
+"public interface Context {\n"
+"    \n"
+"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
+"    \n"
+"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
+"    \n"
+"    boolean isActive();\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: extend.xml:74
+#, no-c-format
+msgid ""
+"For example, we might implement <literal>Context</literal> to add a business "
+"process scope to Web Beans, or to add support for the conversation scope to "
+"an application that uses Wicket."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/extend.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/injection.po (from rev 638, doc/trunk/reference/zh-CN/modules/injection.po)
===================================================================
--- doc/trunk/reference/zh-CN/injection.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/injection.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1226 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: injection.xml:4
+#, no-c-format
+msgid "Dependency injection"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:6
+#, no-c-format
+msgid "Web Beans supports three primary mechanisms for dependency injection:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:8
+#, no-c-format
+msgid "Constructor parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:10
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private final ShoppingCart cart;\n"
+"    \n"
+"    @Initializer\n"
+"    public Checkout(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:12
+#, no-c-format
+msgid "<emphasis>Initializer</emphasis> method parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:14
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"        \n"
+"    private ShoppingCart cart;\n"
+"\n"
+"    @Initializer \n"
+"    void setShoppingCart(ShoppingCart cart) {\n"
+"        this.cart = cart;\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:16
+#, no-c-format
+msgid "And direct field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:18
+#, no-c-format
+msgid ""
+"<![CDATA[public class Checkout {\n"
+"\n"
+"    private @Current ShoppingCart cart;\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:20
+#, no-c-format
+msgid ""
+"Dependency injection always occurs when the Web Bean instance is first "
+"instantiated."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:25
+#, no-c-format
+msgid ""
+"First, the Web Bean manager calls the Web Bean constructor, to obtain an "
+"instance of the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:29
+#, no-c-format
+msgid ""
+"Next, the Web Bean manager initializes the values of all injected fields of "
+"the Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:33
+#, no-c-format
+msgid "Next, the Web Bean manager calls all initializer methods of Web Bean."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:37
+#, no-c-format
+msgid ""
+"Finally, the <literal>@PostConstruct</literal> method of the Web Bean, if "
+"any, is called."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:42
+#, no-c-format
+msgid ""
+"Constructor parameter injection is not supported for EJB beans, since the "
+"EJB is instantiated by the EJB container, not the Web Bean manager."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:45
+#, no-c-format
+msgid ""
+"Parameters of constructors and initializer methods need not be explicitly "
+"annotated when the default binding type <literal>@Current</literal> applies. "
+"Injected fields, however, <emphasis>must</emphasis> specify a binding type, "
+"even when the default binding type applies. If the field does not specify a "
+"binding type, it will not be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:51
+#, no-c-format
+msgid "Producer methods also support parameter injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:53
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
+"    return new Checkout(cart);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:55
+#, no-c-format
+msgid ""
+"Finally, observer methods (which we'll meet in <xref linkend=\"events\"/>), "
+"disposal methods and destructor methods all support parameter injection."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:58
+#, no-c-format
+msgid ""
+"The Web Beans specification defines a procedure, called the "
+"<emphasis>typesafe resolution algorithm</emphasis>, that the Web Bean "
+"manager follows when identifying the Web Bean to inject to an injection "
+"point. This algorithm looks complex at first, but once you understand it, "
+"it's really quite intuitive. Typesafe resolution is performed at system "
+"initialization time, which means that the manager will inform the user "
+"immediately if a Web Bean's dependencies cannot be satisfied, by throwing a "
+"<literal>UnsatisfiedDependencyException</literal> or "
+"<literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:67
+#, no-c-format
+msgid ""
+"The purpose of this algorithm is to allow multiple Web Beans to implement "
+"the same API type and either:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:72
+#, no-c-format
+msgid ""
+"allow the client to select which implementation it requires using "
+"<emphasis>binding annotations</emphasis>,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:77
+#, no-c-format
+msgid ""
+"allow the application deployer to select which implementation is appropriate "
+"for a particular deployment, without changes to the client, by enabling or "
+"disabling <emphasis>deployment types</emphasis>, or"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:82
+#, no-c-format
+msgid ""
+"allow one implementation of an API to override another implementation of the "
+"same API at deployment time, without changes to the client, using "
+"<emphasis>deployment type precedence</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:88
+#, no-c-format
+msgid ""
+"Let's explore how the Web Beans manager determines a Web Bean to be injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:91
+#, no-c-format
+msgid "Binding annotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:93
+#, no-c-format
+msgid ""
+"If we have more than one Web Bean that implements a particular API type, the "
+"injection point can specify exactly which Web Bean should be injected using "
+"a binding annotation. For example, there might be two implementations of "
+"<literal>PaymentProcessor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque\n"
+"public class ChequePaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:100
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCreditCard\n"
+"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
+"    public void process(Payment payment) { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:102
+#, no-c-format
+msgid ""
+"Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</"
+"literal> are binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:105
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCheque {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:107
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayByCreditCard {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:109
+#, no-c-format
+msgid ""
+"A client Web Bean developer uses the binding annotation to specify exactly "
+"which Web Bean should be injected."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:112
+#, no-c-format
+msgid "Using field injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:114
+#, no-c-format
+msgid ""
+"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
+"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:116
+#, no-c-format
+msgid "Using initializer method injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:118
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public void setPaymentProcessors(@PayByCheque PaymentProcessor "
+"chequePaymentProcessor, \n"
+"                                 @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:120
+#, no-c-format
+msgid "Or using constructor injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:122
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
+"                @PayByCreditCard PaymentProcessor "
+"creditCardPaymentProcessor) {\n"
+"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
+"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:125
+#, no-c-format
+msgid "Binding annotations with members"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:127
+#, no-c-format
+msgid "Binding annotations may have members:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:129
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"@BindingType\n"
+"public @interface PayBy {\n"
+"    PaymentType value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:131
+#, no-c-format
+msgid "In which case, the member value is significant:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:133
+#, no-c-format
+msgid ""
+"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
+"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:135
+#, no-c-format
+msgid ""
+"You can tell the Web Bean manager to ignore a member of a binding annotation "
+"type by annotating the member <literal>@NonBinding</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:141
+#, no-c-format
+msgid "Combinations of binding annnotations"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:143
+#, no-c-format
+msgid "An injection point may even specify multiple binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:145
+#, no-c-format
+msgid ""
+"<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:147
+#, no-c-format
+msgid ""
+"In this case, only a Web Bean which has <emphasis>both</emphasis> binding "
+"annotations would be eligible for injection."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:153
+#, no-c-format
+msgid "Binding annotations and producer methods"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:155
+#, no-c-format
+msgid "Even producer methods may specify binding annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces \n"
+"@Asynchronous @PayByCheque \n"
+"PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor "
+"processor) {\n"
+"    return new AsynchronousPaymentProcessor(processor);\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:162
+#, no-c-format
+msgid "The default binding type"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:164
+#, no-c-format
+msgid ""
+"Web Beans defines a binding type <literal>@Current</literal> that is the "
+"default binding type for any injection point or Web Bean that does not "
+"explicitly specify a binding type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:168
+#, no-c-format
+msgid ""
+"There are two common circumstances in which it is necessary to explicitly "
+"specify <literal>@Current</literal>:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:173
+#, no-c-format
+msgid ""
+"on a field, in order to declare it as an injected field with the default "
+"binding type, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:177
+#, no-c-format
+msgid ""
+"on a Web Bean which has another binding type in addition to the default "
+"binding type."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:187
+#, no-c-format
+msgid "Deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:189
+#, no-c-format
+msgid ""
+"All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment "
+"type identifies a set of Web Beans that should be conditionally installed in "
+"some deployments of the system."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:193
+#, no-c-format
+msgid ""
+"For example, we could define a deployment type named <literal>@Mock</"
+"literal>, which would identify Web Beans that should only be installed when "
+"the system executes inside an integration testing environment:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:197
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"  @Target({TYPE, METHOD})\n"
+"  @DeploymentType\n"
+"  public @interface Mock {}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:199
+#, no-c-format
+msgid ""
+"Suppose we had some Web Bean that interacted with an external system to "
+"process payments:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:202
+#, no-c-format
+msgid ""
+"<![CDATA[public class ExternalPaymentProcessor {\n"
+"        \n"
+"    public void process(Payment p) {\n"
+"        ...\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:204
+#, no-c-format
+msgid ""
+"Since this Web Bean does not explicitly specify a deployment type, it has "
+"the default deployment type <literal>@Production</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:207
+#, no-c-format
+msgid ""
+"For integration or unit testing, the external system is slow or unavailable. "
+"So we would create a mock object:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:210
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock \n"
+"public class MockPaymentProcessor implements PaymentProcessor {\n"
+"\n"
+"    @Override\n"
+"    public void process(Payment p) {\n"
+"        p.setSuccessful(true);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:212
+#, no-c-format
+msgid ""
+"But how does the Web Bean manager determine which implementation to use in a "
+"particular deployment?"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:216
+#, no-c-format
+msgid "Enabling deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:218
+#, no-c-format
+msgid ""
+"Web Beans defines two built-in deployment types: <literal>@Production</"
+"literal> and <literal>@Standard</literal>. By default, only Web Beans with "
+"the built-in deployment types are enabled when the system is deployed. We "
+"can identify additional deployment types to be enabled in a particular "
+"deployment by listing them in <literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:224
+#, no-c-format
+msgid ""
+"Going back to our example, when we deploy our integration tests, we want all "
+"our <literal>@Mock</literal> objects to be installed:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:227
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans>\n"
+"    <Deploy>\n"
+"        <Standard/>\n"
+"        <Production/>\n"
+"        <test:Mock/>\n"
+"    </Deploy>\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:229
+#, no-c-format
+msgid ""
+"Now the Web Bean manager will identify and install all Web Beans annotated "
+"<literal>@Production</literal>, <literal>@Standard</literal> or "
+"<literal>@Mock</literal> at deployment time."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:233
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Standard</literal> is used only for certain "
+"special Web Beans defined by the Web Beans specification. We can't use it "
+"for our own Web Beans, and we can't disable it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:237
+#, no-c-format
+msgid ""
+"The deployment type <literal>@Production</literal> is the default deployment "
+"type for Web Beans which don't explicitly declare a deployment type, and may "
+"be disabled."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:244
+#, no-c-format
+msgid "Deployment type precedence"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:246
+#, no-c-format
+msgid ""
+"If you've been paying attention, you're probably wondering how the Web Bean "
+"manager decides which implementation&#151;<literal>ExternalPaymentProcessor</"
+"literal> or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider "
+"what happens when the manager encounters this injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:251
+#, no-c-format
+msgid "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:253
+#, no-c-format
+msgid ""
+"There are now two Web Beans which satisfy the <literal>PaymentProcessor</"
+"literal> contract. Of course, we can't use a binding annotation to "
+"disambiguate, since binding annotations are hard-coded into the source at "
+"the injection point, and we want the manager to be able to decide at "
+"deployment time!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:258
+#, no-c-format
+msgid ""
+"The solution to this problem is that each deployment type has a different "
+"<emphasis>precedence</emphasis>. The precedence of the deployment types is "
+"determined by the order in which they appear in <literal>web-beans.xml</"
+"literal>. In our example, <literal>@Mock</literal> appears later than "
+"<literal>@Production</literal> so it has a higher precedence."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:264
+#, no-c-format
+msgid ""
+"Whenever the manager discovers that more than one Web Bean could satisfy the "
+"contract (API type plus binding annotations) specified by an injection "
+"point, it considers the relative precedence of the Web Beans. If one has a "
+"higher precedence than the others, it chooses the higher precedence Web Bean "
+"to inject. So, in our example, the Web Bean manager will inject "
+"<literal>MockPaymentProcessor</literal> when executing in our integration "
+"testing environment (which is exactly what we want)."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:271
+#, no-c-format
+msgid ""
+"It's interesting to compare this facility to today's popular manager "
+"architectures. Various \"lightweight\" containers also allow conditional "
+"deployment of classes that exist in the classpath, but the classes that are "
+"to be deployed must be explicity, individually, listed in configuration code "
+"or in some XML configuration file. Web Beans does support Web Bean "
+"definition and configuration via XML, but in the common case where no "
+"complex configuration is required, deployment types allow a whole set of Web "
+"Beans to be enabled with a single line of XML. Meanwhile, a developer "
+"browsing the code can easily identify what deployment scenarios the Web Bean "
+"will be used in."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:284
+#, no-c-format
+msgid "Example deployment types"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:286
+#, no-c-format
+msgid ""
+"Deployment types are useful for all kinds of things, here's some examples:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:290
+#, no-c-format
+msgid ""
+"<literal>@Mock</literal> and <literal>@Staging</literal> deployment types "
+"for testing"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:294
+#, no-c-format
+msgid "<literal>@AustralianTaxLaw</literal> for site-specific Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:297
+#, no-c-format
+msgid ""
+"<literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party "
+"frameworks which build on Web Beans"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:301
+#, no-c-format
+msgid ""
+"<literal>@Standard</literal> for standard Web Beans defined by the Web Beans "
+"specification"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:306
+#, no-c-format
+msgid "I'm sure you can think of more applications..."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:313
+#, no-c-format
+msgid "Fixing unsatisfied dependencies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:315
+#, no-c-format
+msgid ""
+"The typesafe resolution algorithm fails when, after considering the binding "
+"annotations and and deployment types of all Web Beans that implement the API "
+"type of an injection point, the Web Bean manager is unable to identify "
+"exactly one Web Bean to inject."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:320
+#, no-c-format
+msgid ""
+"It's usually easy to fix an <literal>UnsatisfiedDependencyException</"
+"literal> or <literal>AmbiguousDependencyException</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:323
+#, no-c-format
+msgid ""
+"To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide "
+"a Web Bean which implements the API type and has the binding types of the "
+"injection point&#151;or enable the deployment type of a Web Bean that "
+"already implements the API type and has the binding types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:328
+#, no-c-format
+msgid ""
+"To fix an <literal>AmbiguousDependencyException</literal>, introduce a "
+"binding type to distinguish between the two implementations of the API type, "
+"or change the deployment type of one of the implementations so that the Web "
+"Bean manager can use deployment type precedence to choose between them. An "
+"<literal>AmbiguousDependencyException</literal> can only occur if two Web "
+"Beans share a binding type and have exactly the same deployment type."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:335
+#, no-c-format
+msgid ""
+"There's one more issue you need to be aware of when using dependency "
+"injection in Web Beans."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:341
+#, no-c-format
+msgid "Client proxies"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:343
+#, no-c-format
+msgid ""
+"Clients of an injected Web Bean do not usually hold a direct reference to a "
+"Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:346
+#, no-c-format
+msgid ""
+"Imagine that a Web Bean bound to the application scope held a direct "
+"reference to a Web Bean bound to the request scope. The application scoped "
+"Web Bean is shared between many different requests. However, each request "
+"should see a different instance of the request scoped Web bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:351
+#, no-c-format
+msgid ""
+"Now imagine that a Web Bean bound to the session scope held a direct "
+"reference to a Web Bean bound to the application scope. From time to time, "
+"the session context is serialized to disk in order to use memory more "
+"efficiently. However, the application scoped Web Bean instance should not be "
+"serialized along with the session scoped Web Bean!"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:357
+#, no-c-format
+msgid ""
+"Therefore, unless a Web Bean has the default scope <literal>@Dependent</"
+"literal>, the Web Bean manager must indirect all injected references to the "
+"Web Bean through a proxy object. This <emphasis>client proxy</emphasis> is "
+"responsible for ensuring that the Web Bean instance that receives a method "
+"invocation is the instance that is associated with the current context. The "
+"client proxy also allows Web Beans bound to contexts such as the session "
+"context to be serialized to disk without recursively serializing other "
+"injected Web Beans."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:365
+#, no-c-format
+msgid ""
+"Unfortunately, due to limitations of the Java language, some Java types "
+"cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager "
+"throws an <literal>UnproxyableDependencyException</literal> if the type of "
+"an injection point cannot be proxied."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:370
+#, no-c-format
+msgid "The following Java types cannot be proxied by the Web Bean manager:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:374
+#, no-c-format
+msgid ""
+"classes which are declared <literal>final</literal> or have a "
+"<literal>final</literal> method,"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:378
+#, no-c-format
+msgid "classes which have no non-private constructor with no parameters, and"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:381
+#, no-c-format
+msgid "arrays and primitive types."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:385
+#, no-c-format
+msgid ""
+"It's usually very easy to fix an <literal>UnproxyableDependencyException</"
+"literal>. Simply add a constructor with no parameters to the injected class, "
+"introduce an interface, or change the scope of the injected Web Bean to "
+"<literal>@Dependent</literal>."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:392
+#, no-c-format
+msgid "Obtaining a Web Bean by programatic lookup"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:394
+#, no-c-format
+msgid ""
+"The application may obtain an instance of the interface <literal>Manager</"
+"literal> by injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:397
+#, no-c-format
+msgid "<![CDATA[@Current Manager manager;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:399
+#, no-c-format
+msgid ""
+"The <literal>Manager</literal> object provides a set of methods for "
+"obtaining a Web Bean instance programatically."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:402
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class);]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:404
+#, no-c-format
+msgid ""
+"Binding annotations may be specified by subclassing the helper class "
+"<literal>AnnotationLiteral</literal>, since it is otherwise difficult to "
+"instantiate an annotation type in Java."
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:408
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new "
+"AnnotationLiteral<CreditCard>(){});]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:410
+#, no-c-format
+msgid ""
+"If the binding type has an annotation member, we can't use an anonymous "
+"subclass of <literal>AnnotationLiteral</literal>&#151;instead we'll need to "
+"create a named subclass:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:413
+#, no-c-format
+msgid ""
+"<![CDATA[abstract class CreditCardBinding \n"
+"    extends AnnotationLiteral<CreditCard> \n"
+"    implements CreditCard {}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:415
+#, no-c-format
+msgid ""
+"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
+"class, \n"
+"                                               new CreditCardBinding() { \n"
+"                                                   public void value() "
+"{ return paymentType; } \n"
+"                                               } );]]>"
+msgstr ""
+
+#. Tag: title
+#: injection.xml:419
+#, no-c-format
+msgid ""
+"Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> "
+"and <literal>@PersistenceContext</literal>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:422
+#, no-c-format
+msgid ""
+"Enterprise Web Beans support all the lifecycle callbacks defined by the EJB "
+"specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:426
+#, no-c-format
+msgid ""
+"Simple Web Beans support only the <literal>@PostConstruct</literal> and "
+"<literal>@PreDestroy</literal> callbacks."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:429
+#, no-c-format
+msgid ""
+"Both enterprise and simple Web Beans support the use of <literal>@Resource</"
+"literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal> "
+"for injection of Java EE resources, EJBs and JPA persistence contexts, "
+"respectively. Simple Web Beans do not support the use of "
+"<literal>@PersistenceContext(type=EXTENDED)</literal>."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:434
+#, no-c-format
+msgid ""
+"The <literal>@PostConstruct</literal> callback always occurs after all "
+"dependencies have been injected."
+msgstr ""
+
+#. Tag: title
+#: injection.xml:440
+#, no-c-format
+msgid "The <literal>InjectionPoint</literal> object"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:442
+#, no-c-format
+msgid ""
+"There are certain kinds of dependent objects&#151;Web Beans with scope "
+"<literal>@Dependent</literal>&#151;that need to know something about the "
+"object or injection point into which they are injected in order to be able "
+"to do what they do. For example:"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:448
+#, no-c-format
+msgid ""
+"The log category for a <literal>Logger</literal> depends upon the class of "
+"the object that owns it."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:452
+#, no-c-format
+msgid ""
+"Injection of a HTTP parameter or header value depends upon what parameter or "
+"header name was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:456
+#, no-c-format
+msgid ""
+"Injection of the result of an EL expression evaluation depends upon the "
+"expression that was specified at the injection point."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:461
+#, no-c-format
+msgid ""
+"A Web Bean with scope <literal>@Dependent</literal> may inject an instance "
+"of <literal>InjectionPoint</literal> and access metadata relating to the "
+"injection point to which it belongs."
+msgstr ""
+
+#. Tag: para
+#: injection.xml:465
+#, no-c-format
+msgid ""
+"Let's look at an example. The following code is verbose, and vulnerable to "
+"refactoring problems:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:468
+#, no-c-format
+msgid "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:470
+#, no-c-format
+msgid ""
+"This clever little producer method lets you inject a JDK <literal>Logger</"
+"literal> without explicitly specifying the log category:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:473
+#, no-c-format
+msgid ""
+"<![CDATA[class LogFactory {\n"
+"\n"
+"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
+"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass()."
+"getName()); \n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:475
+#, no-c-format
+msgid "We can now write:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:477
+#, no-c-format
+msgid "<![CDATA[@Current Logger log;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:479
+#, no-c-format
+msgid ""
+"Not convinced? Then here's a second example. To inject HTTP parameters, we "
+"need to define a binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:482
+#, no-c-format
+msgid ""
+"<![CDATA[@BindingType\n"
+"@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
+"public @interface HttpParam {\n"
+"   @NonBinding public String value();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:484
+#, no-c-format
+msgid "We would use this binding type at injection points as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:486
+#, no-c-format
+msgid ""
+"<![CDATA[@HttpParam(\"username\") String username;\n"
+"@HttpParam(\"password\") String password;]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:488
+#, no-c-format
+msgid "The following producer method does the work:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:490
+#, no-c-format
+msgid ""
+"<![CDATA[class HttpParams\n"
+"\n"
+"   @Produces @HttpParam(\"\")\n"
+"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
+"      return request.getParameter(ip.getAnnotation(HttpParam.class).value"
+"());\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:492
+#, no-c-format
+msgid ""
+"(Note that the <literal>value()</literal> member of the <literal>HttpParam</"
+"literal> annotation is ignored by the Web Bean manager since it is annotated "
+"<literal>@NonBinding.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: injection.xml:495
+#, no-c-format
+msgid ""
+"The Web Bean manager provides a built-in Web Bean that implements the "
+"<literal>InjectionPoint</literal> interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: injection.xml:498
+#, no-c-format
+msgid ""
+"<![CDATA[public interface InjectionPoint { \n"
+"   public Object getInstance(); \n"
+"   public Bean<?> getBean(); \n"
+"   public Member getMember(): \n"
+"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
+"   public Set<T extends Annotation> getAnnotations(); \n"
+"}]]>"
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/injection.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/interceptors.po (from rev 638, doc/trunk/reference/zh-CN/modules/interceptors.po)
===================================================================
--- doc/trunk/reference/zh-CN/interceptors.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/interceptors.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,572 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: interceptors.xml:4
+#, no-c-format
+msgid "Interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:6
+#, no-c-format
+msgid ""
+"Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending "
+"the functionality in two directions:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:11
+#, no-c-format
+msgid "Any Web Bean may have interceptors, not just session beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:14
+#, no-c-format
+msgid ""
+"Web Beans features a more sophisticated annotation-based approach to binding "
+"interceptors to Web Beans."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:22
+#, no-c-format
+msgid "The EJB specification defines two kinds of interception points:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:26
+#, no-c-format
+msgid "business method interception, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:29
+#, no-c-format
+msgid "lifecycle callback interception."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:33
+#, no-c-format
+msgid ""
+"A <emphasis>business method interceptor</emphasis> applies to invocations of "
+"methods of the Web Bean by clients of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:36
+#, no-c-format
+msgid ""
+"<![CDATA[public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:38
+#, no-c-format
+msgid ""
+"A <emphasis>lifecycle callback interceptor</emphasis> applies to invocations "
+"of lifecycle callbacks by the container:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:41
+#, no-c-format
+msgid ""
+"<![CDATA[public class DependencyInjectionInterceptor {\n"
+"    @PostConstruct public void injectDependencies(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:43
+#, no-c-format
+msgid ""
+"An interceptor class may intercept both lifecycle callbacks and business "
+"methods."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:49
+#, no-c-format
+msgid "Interceptor bindings"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:51
+#, no-c-format
+msgid ""
+"Suppose we want to declare that some of our Web Beans are transactional. The "
+"first thing we need is an <emphasis>interceptor binding annotation</"
+"emphasis> to specify exactly which Web Beans we're interested in:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:55
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:57
+#, no-c-format
+msgid ""
+"Now we can easily specify that our <literal>ShoppingCart</literal> is a "
+"transactional object:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:60
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:62
+#, no-c-format
+msgid "Or, if we prefer, we can specify that just one method is transactional:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:69
+#, no-c-format
+msgid "Implementing interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:71
+#, no-c-format
+msgid ""
+"That's great, but somewhere along the line we're going to have to actually "
+"implement the interceptor that provides this transaction management aspect. "
+"All we need to do is create a standard EJB interceptor, and annotate it "
+"<literal>@Interceptor</literal> and <literal>@Transactional</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:78
+#, no-c-format
+msgid ""
+"All Web Beans interceptors are simple Web Beans, and can take advantage of "
+"dependency injection and contextual lifecycle management."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
+"public class TransactionInterceptor {\n"
+"\n"
+"    @Resource Transaction transaction;\n"
+"\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"    \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:83
+#, no-c-format
+msgid "Multiple interceptors may use the same interceptor binding type."
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:88
+#, no-c-format
+msgid "Enabling interceptors"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:90
+#, no-c-format
+msgid ""
+"Finally, we need to <emphasis>enable</emphasis> our interceptor in "
+"<literal>web-beans.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:93
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:95
+#, no-c-format
+msgid "Whoah! Why the angle bracket stew?"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:97
+#, no-c-format
+msgid "Well, the XML declaration solves two problems:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:101
+#, no-c-format
+msgid ""
+"it enables us to specify a total ordering for all the interceptors in our "
+"system, ensuring deterministic behavior, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:105
+#, no-c-format
+msgid "it lets us enable or disable interceptor classes at deployment time."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:109
+#, no-c-format
+msgid ""
+"For example, we could specify that our security interceptor runs before our "
+"<literal>TransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:112
+#, no-c-format
+msgid ""
+"<![CDATA[<Interceptors>\n"
+"    <sx:SecurityInterceptor/>\n"
+"    <tx:TransactionInterceptor/>\n"
+"</Interceptors>]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:114
+#, no-c-format
+msgid "Or we could turn them both off in our test environment!"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:119
+#, no-c-format
+msgid "Interceptor bindings with members"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:121
+#, no-c-format
+msgid ""
+"Suppose we want to add some extra information to our "
+"<literal>@Transactional</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:124
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Transactional {\n"
+"    boolean requiresNew() default false;\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:126
+#, no-c-format
+msgid ""
+"Web Beans will use the value of <literal>requiresNew</literal> to choose "
+"between two different interceptors, <literal>TransactionInterceptor</"
+"literal> and <literal>RequiresNewTransactionInterceptor</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
+"public class RequiresNewTransactionInterceptor {\n"
+"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
+"{ ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:132
+#, no-c-format
+msgid ""
+"Now we can use <literal>RequiresNewTransactionInterceptor</literal> like "
+"this:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:134
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional(requiresNew=true)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:136
+#, no-c-format
+msgid ""
+"But what if we only have one interceptor and we want the manager to ignore "
+"the value of <literal>requiresNew</literal> when binding interceptors? We "
+"can use the <literal>@NonBinding</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:140
+#, no-c-format
+msgid ""
+"<![CDATA[@InterceptorBindingType\n"
+"@Target({METHOD, TYPE})\n"
+"@Retention(RUNTIME)\n"
+"public @interface Secure {\n"
+"    @NonBinding String[] rolesAllowed() default {};\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:145
+#, no-c-format
+msgid "Multiple interceptor binding annotations"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:147
+#, no-c-format
+msgid ""
+"Usually we use combinations of interceptor bindings types to bind multiple "
+"interceptors to a Web Bean. For example, the following declaration would be "
+"used to bind <literal>TransactionInterceptor</literal> and "
+"<literal>SecurityInterceptor</literal> to the same Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:152
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:154
+#, no-c-format
+msgid ""
+"However, in very complex cases, an interceptor itself may specify some "
+"combination of interceptor binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:157
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure @Interceptor\n"
+"public class TransactionalSecureInterceptor { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:159
+#, no-c-format
+msgid ""
+"Then this interceptor could be bound to the <literal>checkout()</literal> "
+"method using any one of the following combinations:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:162
+#, no-c-format
+msgid ""
+"<![CDATA[public class ShoppingCart {\n"
+"    @Transactional @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:164
+#, no-c-format
+msgid ""
+"<![CDATA[@Secure\n"
+"public class ShoppingCart {\n"
+"    @Transactional public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:166
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactionl\n"
+"public class ShoppingCart {\n"
+"    @Secure public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:168
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:173
+#, no-c-format
+msgid "Interceptor binding type inheritance"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:175
+#, no-c-format
+msgid ""
+"One limitation of the Java language support for annotations is the lack of "
+"annotation inheritance. Really, annotations should have reuse built in, to "
+"allow this kind of thing to work:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:179
+#, no-c-format
+msgid ""
+"<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:181
+#, no-c-format
+msgid ""
+"Well, fortunately, Web Beans works around this missing feature of Java. We "
+"may annotate one interceptor binding type with other interceptor binding "
+"types. The interceptor bindings are transitive&#151;any Web Bean with the "
+"first interceptor binding inherits the interceptor bindings declared as meta-"
+"annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:186
+#, no-c-format
+msgid ""
+"<![CDATA[@Transactional @Secure\n"
+"@InterceptorBindingType\n"
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"public @interface Action { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:188
+#, no-c-format
+msgid ""
+"Any Web Bean annotated <literal>@Action</literal> will be bound to both "
+"<literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</"
+"literal>. (And even <literal>TransactionalSecureInterceptor</literal>, if it "
+"exists.)"
+msgstr ""
+
+#. Tag: title
+#: interceptors.xml:195
+#, no-c-format
+msgid "Use of <literal>@Interceptors</literal>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:197
+#, no-c-format
+msgid ""
+"The <literal>@Interceptors</literal> annotation defined by the EJB "
+"specification is supported for both enterprise and simple Web Beans, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: interceptors.xml:200
+#, no-c-format
+msgid ""
+"<![CDATA[@Interceptors({TransactionInterceptor.class, SecurityInterceptor."
+"class})\n"
+"public class ShoppingCart {\n"
+"    public void checkout() { ... }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:202
+#, no-c-format
+msgid "However, this approach suffers the following drawbacks:"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:206
+#, no-c-format
+msgid "the interceptor implementation is hardcoded in business code,"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:209
+#, no-c-format
+msgid "interceptors may not be easily disabled at deployment time, and"
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:212
+#, no-c-format
+msgid ""
+"the interceptor ordering is non-global&#151;it is determined by the order in "
+"which interceptors are listed at the class level."
+msgstr ""
+
+#. Tag: para
+#: interceptors.xml:217
+#, no-c-format
+msgid ""
+"Therefore, we recommend the use of Web Beans-style interceptor bindings."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/interceptors.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/intro.po (from rev 701, doc/trunk/reference/zh-CN/modules/intro.po)
===================================================================
--- doc/trunk/reference/zh-CN/intro.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/intro.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,931 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-23 16:43+0800\n"
+"Last-Translator: Sean Wu <alartin at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: intro.xml:4
+#, no-c-format
+msgid "Getting started with Web Beans"
+msgstr "Web Beans起步"
+
+#. Tag: para
+#: intro.xml:6
+#, no-c-format
+msgid "So you're already keen to get started writing your first Web Bean? Or perhaps you're skeptical, wondering what kinds of hoops the Web Beans specification will make you jump through! The good news is that you've probably already written and used hundreds, perhaps thousands of Web Beans. You might not even remember the first Web Bean you wrote."
+msgstr "你是否已经迫不及待想要开始编写你的第一个Web Bean了?或许,你仍旧抱有怀疑态度,想要知道Web Beans规范会给出什么样的圈套让你跳。好消息是你也许已经编写并且使用了好几百个或者好几千个Web Bean了。你也许甚至想不起来你写的第一个Web Bean了。"
+
+#. Tag: title
+#: intro.xml:13
+#, no-c-format
+msgid "Your first Web Bean"
+msgstr "你的第一个Web Bean"
+
+#. Tag: para
+#: intro.xml:15
+#, no-c-format
+msgid "With certain, very special exceptions, every Java class with a constructor that accepts no parameters is a Web Bean. That includes every JavaBean. Furthermore, every EJB 3-style session bean is a Web Bean. Sure, the JavaBeans and EJBs you've been writing every day have not been able to take advantage of the new services defined by the Web Beans specification, but you'll be able to use every one of them as Web Beans&#151;injecting them into other Web Beans, configuring them via the Web Beans XML configuration facility, even adding interceptors and decorators to them&#151;without touching your existing code."
+msgstr "除非特殊情况,每个具有一个非参构造器的Java类都可以是一个Web Bean。这包括了每个JavaBean, 并且每个EJB3的会话Bean都是一个Web Bean。当然,你每天已经写过的JavaBean和EJB无法使用Web Beans规范定义的新服务,但是你能够通过Web Beans的XML配置将这些组件配置为Web Bean,然后将其注入到其他Web Bean中。你甚至可以不用修改已有代码就可以为其添加拦截器和装饰器。"
+
+#. Tag: para
+#: intro.xml:25
+#, no-c-format
+msgid "Suppose that we have two existing Java classes, that we've been using for years in various applications. The first class parses a string into a list of sentences:"
+msgstr "假定我们有两个已经写好的Java类,我们已经在不同的应用中使用它们好多年了。第一个类将一个字符串解析为一个句子列表:"
+
+#. Tag: programlisting
+#: intro.xml:29
+#, no-c-format
+msgid ""
+"<![CDATA[public class SentenceParser {\n"
+"    public List<String> parse(String text) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class SentenceParser {\n"
+"    public List<String> parse(String text) { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:31
+#, no-c-format
+msgid "The second existing class is a stateless session bean front-end for an external system that is able to translate sentences from one language to another:"
+msgstr "第二个已有类是一个无状态的会话Bean,这个会话Bean作为一个外部系统的前端,能够将句子从一种语言翻译到另一个语言:"
+
+#. Tag: programlisting
+#: intro.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateless\n"
+"public class SentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) { ... }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Stateless\n"
+"public class SentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) { ... }\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:37
+#, no-c-format
+msgid "Where <literal>Translator</literal> is the local interface:"
+msgstr "<literal>Translator</literal>是本地接口:"
+
+#. Tag: programlisting
+#: intro.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[@Local\n"
+"public interface Translator {\n"
+"    public String translate(String sentence);\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Local\n"
+"public interface Translator {\n"
+"    public String translate(String sentence);\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:41
+#, no-c-format
+msgid "Unfortunately, we don't have a preexisting class that translates whole text documents. So let's write a Web Bean that does this job:"
+msgstr "不幸的是,我们没有Java类能够翻译整个文档。因此,让我们写一个Web Bean来做这个工作:"
+
+#. Tag: programlisting
+#: intro.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator {\n"
+"    \n"
+"    private SentenceParser sentenceParser;\n"
+"    private Translator sentenceTranslator;\n"
+"    \n"
+"    @Initializer\n"
+"    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {\n"
+"        this.sentenceParser = sentenceParser;\n"
+"        this.sentenceTranslator = sentenceTranslator;\n"
+"    }\n"
+"    \n"
+"    public String translate(String text) {\n"
+"        StringBuilder sb = new StringBuilder();\n"
+"        for (String sentence: sentenceParser.parse(text)) {\n"
+"            sb.append(sentenceTranslator.translate(sentence));\n"
+"        }\n"
+"        return sb.toString();\n"
+"    }\n"
+"    \n"
+"}]]>"
+msgstr ""
+"<![CDATA[public class TextTranslator {\n"
+"    \n"
+"    private SentenceParser sentenceParser;\n"
+"    private Translator sentenceTranslator;\n"
+"    \n"
+"    @Initializer\n"
+"    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {\n"
+"        this.sentenceParser = sentenceParser;\n"
+"        this.sentenceTranslator = sentenceTranslator;\n"
+"    }\n"
+"    \n"
+"    public String translate(String text) {\n"
+"        StringBuilder sb = new StringBuilder();\n"
+"        for (String sentence: sentenceParser.parse(text)) {\n"
+"            sb.append(sentenceTranslator.translate(sentence));\n"
+"        }\n"
+"        return sb.toString();\n"
+"    }\n"
+"    \n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:46
+#, no-c-format
+msgid "We may obtain an instance of <literal>TextTranslator</literal> by injecting it into a Web Bean, Servlet or EJB:"
+msgstr "通过将其注入到一个Web Bean,Servlet或者EJB,我们能够获得一个 <literal>TextTranslator</literal>的实例:"
+
+#. Tag: programlisting
+#: intro.xml:49
+#, no-c-format
+msgid ""
+"<![CDATA[@Initializer\n"
+"public setTextTranslator(TextTranslator textTranslator) {\n"
+"    this.textTranslator = textTranslator;\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Initializer\n"
+"public setTextTranslator(TextTranslator textTranslator) {\n"
+"    this.textTranslator = textTranslator;\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:51
+#, no-c-format
+msgid "Alternatively, we may obtain an instance by directly calling a method of the Web Bean manager:"
+msgstr "或者,我们可以直接调用Web Bean管理器的方法获得这个实例:"
+
+#. Tag: programlisting
+#: intro.xml:54
+#, no-c-format
+msgid "<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]>"
+msgstr "<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]>"
+
+#. Tag: para
+#: intro.xml:56
+#, no-c-format
+msgid "But wait: <literal>TextTranslator</literal> does not have a constructor with no parameters! Is it still a Web Bean? Well, a class that does not have a constructor with no parameters can still be a Web Bean if it has a constructor annotated <literal>@Initializer</literal>."
+msgstr "但是,等一下:<literal>TextTranslator</literal>并没有一个无参构造器!它仍然是一个Web Bean么?好吧,一个没有无参构造器的类依然能够成为一个Web Bean,只要你在它的一个构造器上使用<literal>@Initializer</literal>注释即可。"
+
+#. Tag: para
+#: intro.xml:61
+#, no-c-format
+msgid "As you've guessed, the <literal>@Initializer</literal> annotation has something to do with dependency injection! <literal>@Initializer</literal> may be applied to a constructor or method of a Web Bean, and tells the Web Bean manager to call that constructor or method when instantiating the Web Bean. The Web Bean manager will inject other Web Beans to the parameters of the constructor or method."
+msgstr "就像你猜到的一样, <literal>@Initializer</literal>注释和依赖注入有关! <literal>@Initializer</literal>可以应用到一个Web Bean的构造器或者方法上,它告诉Web Bean管理器在初始化一个Web Bean的时候去调用这个构造器或者方法。Web Beam管理器能够将其他的Web Bean注入到构造器或者方法的参数中。"
+
+#. Tag: para
+#: intro.xml:68
+#, no-c-format
+msgid "At system initialization time, the Web Bean manager must validate that exactly one Web Bean exists which satisfies each injection point. In our example, if no implementation of <literal>Translator</literal> available&#151;if the <literal>SentenceTranslator</literal> EJB was not deployed&#151;the Web Bean manager would throw an <literal>UnsatisfiedDependencyException</literal>. If more than one implementation of <literal>Translator</literal> was available, the Web Bean manager would throw an <literal>AmbiguousDependencyException</literal>."
+msgstr "在系统初始化的时候,Web Bean管理器必须验证只存在一个Web Bean能够满足每个注入点。在我们的例子中,如果没有<literal>Translator</literal>实现&#151;如果<literal>SentenceTranslator</literal> EJB没有被部署&#151;Web Bean管理器将会抛出一个<literal>UnsatisfiedDependencyException</literal>异常。如果多于一个<literal>Translator</literal>实现,Web Bean管理器将会抛出一个<literal>AmbiguousDependencyException</literal>异常。"
+
+#. Tag: title
+#: intro.xml:80
+#, no-c-format
+msgid "What is a Web Bean?"
+msgstr "什么是Web Bean?"
+
+#. Tag: para
+#: intro.xml:82
+#, no-c-format
+msgid "So what, <emphasis>exactly</emphasis>, is a Web Bean?"
+msgstr "那么, Web Bean<emphasis>究竟</emphasis>是什么?"
+
+#. Tag: para
+#: intro.xml:84
+#, no-c-format
+msgid "A Web Bean is an application class that contains business logic. A Web Bean may be called directly from Java code, or it may be invoked via Unified EL. A Web Bean may access transactional resources. Dependencies between Web Beans are managed automatically by the Web Bean manager. Most Web Beans are <emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The lifecycle of a Web Bean is always managed by the Web Bean manager."
+msgstr "一个Web Bean是一个包含业务逻辑的应用类。一个Web Bean能够从Java代码中直接调用,也可以通过统一表达语言调用。一个Web Bean可以访问事务性的资源。Web Bean之间的依赖通过Web Bean管理器自动管理。大部分Web Bean是具有 <emphasis>状态</emphasis>和<emphasis>上下文</emphasis>的。Web Bean的生命周期总是通过Web Bean管理器进行管理。"
+
+#. Tag: para
+#: intro.xml:91
+#, no-c-format
+msgid "Let's back up a second. What does it really mean to be \"contextual\"? Since Web Beans may be stateful, it matters <emphasis>which</emphasis> bean instance I have. Unlike a stateless component model (for example, stateless session beans) or a singleton component model (such as servlets, or singleton beans), different clients of a Web Bean see the Web Bean in different states. The client-visible state depends upon which instance of the Web Bean the client has a reference to."
+msgstr "让我们后退一步。\"上下文\"究竟意味着什么?既然Web Beans可以是有状态的,那它关系到我到底拥有<emphasis>哪个</emphasis>Bean实例。和无状态组件模型(例如无状态的会话Bean)或者一个单例模型组件(例如Servlet或者单例Bean)不同,一个Web Bean的不同客户端看到的Web Bean的状态是不同的。客户端所见的状态取决于这个客户端拥有的是哪一个Web Bean实例的引用。"
+
+#. Tag: para
+#: intro.xml:98
+#, no-c-format
+msgid "However, like a stateless or singleton model, but <emphasis>unlike</emphasis> stateful session beans, the client does not control the lifecycle of the instance by explicitly creating and destroying it. Instead, the <emphasis>scope</emphasis> of the Web Bean determines:"
+msgstr "然而,Web Bean像无状态或者单例模型那样,却和有状态的会话Bean<emphasis>不同</emphasis>,客户端无法通过显式地创建或者销毁它来控制实例的生命周期。取而代之,Web Bean的<emphasis>范围</emphasis>决定了:"
+
+#. Tag: para
+#: intro.xml:105
+#, no-c-format
+msgid "the lifecycle of each instance of the Web Bean and"
+msgstr "每个Web Bean实例的生命周期,以及"
+
+#. Tag: para
+#: intro.xml:108
+#, no-c-format
+msgid "which clients share a reference to a particular instance of the Web Bean."
+msgstr "哪些客户端共享Web Bean特定实例的一个引用。"
+
+#. Tag: para
+#: intro.xml:113
+#, no-c-format
+msgid "For a given thread in a Web Beans application, there may be an <emphasis>active context</emphasis> associated with the scope of the Web Bean. This context may be unique to the thread (for example, if the Web Bean is request scoped), or it may be shared with certain other threads (for example, if the Web Bean is session scoped) or even all other threads (if it is application scoped)."
+msgstr "给定一个Web Bean应用的线程,将可能有一个<emphasis>激活的上下文</emphasis>和Web Bean的范围关联。这个上下文可能对于该线程是唯一的(例如,如果这个Web Bean是请求范围的),或者这个上下文可能被某些其他线程共享(例如,如果这个Web Bean是会话范围的),这个上下文甚至可以被所有线程共享(例如,这个Web Bean是应用范围的)。"
+
+#. Tag: para
+#: intro.xml:119
+#, no-c-format
+msgid "Clients (for example, other Web Beans) executing in the same context will see the same instance of the Web Bean. But clients in a different context will see a different instance."
+msgstr "在同一个上下文中执行的客户端(例如,其他的Web Bean)看到的是同一个Web Bean的实例。但是不同的上下文中的客户端看到的是不同的实例。"
+
+#. Tag: para
+#: intro.xml:123
+#, no-c-format
+msgid "One great advantage of the contextual model is that it allows stateful Web Beans to be treated like services! The client need not concern itself with managing the lifecycle of the Web Bean it is using, <emphasis>nor does it even need to know what that lifecyle is.</emphasis> Web Beans interact by passing messages, and the Web Bean implementations define the lifecycle of their own state. The Web Beans are loosely coupled because:"
+msgstr "具备上下文的模型带来的一个巨大优点是它允许有状态的Web Bean可以像服务一样使用!客户端不需要关注本身以及它使用的Web Bean的生命周期,<emphasis>甚至它根本不需要知道生命周期是什么</emphasis>。Web Bean通过传递消息来交互,Web Bean的实现定义了他们自己状态的生命周期。Web Bean是松耦合的,因为:"
+
+#. Tag: para
+#: intro.xml:132
+#, no-c-format
+msgid "they interact via well-defined public APIs"
+msgstr "它们通过定义良好的公共接口交互"
+
+#. Tag: para
+#: intro.xml:135
+#, no-c-format
+msgid "their lifecycles are completely decoupled"
+msgstr "它们的生命周期是完全解耦的"
+
+#. Tag: para
+#: intro.xml:139
+#, no-c-format
+msgid "We can replace one Web Bean with a different Web Bean that implements the same API and has a different lifecycle (a different scope) without affecting the other Web Bean implementation. In fact, Web Beans defines a sophisticated facility for overriding Web Bean implementations at deployment time, as we will see in <xref linkend=\"deploymenttypes\"/>."
+msgstr "我们能够使用一个实现相同接口,具有不同生命周期(一个不同的范围)的Web Bean替换一个Web Bean而不会影响其他的Web Bean实现。实际上,Web Bean定义了一个复杂的机制能够在部署时覆盖Web Bean的实现,我们将在<xref linkend=\"deploymenttypes\"/>一章阐述。"
+
+#. Tag: para
+#: intro.xml:145
+#, no-c-format
+msgid "Note that not all clients of a Web Bean are Web Beans. Other objects such as Servlets or Message-Driven Beans&#151;which are by nature not injectable, contextual objects&#151;may also obtain references to Web Beans by injection."
+msgstr "需要注意的是并非所有的Web Bean的客户端都是Web Bean。其他对象诸如Servlet或者消息驱动Bean#151;天生不可注入的, 具备上下文的对象&#151;也可以通过注入获得Web Bean的引用。"
+
+#. Tag: para
+#: intro.xml:149
+#, no-c-format
+msgid "Enough hand-waving. More formally, according to the spec:"
+msgstr "讨论的够多了。我们看些更正式些的,依据规范:"
+
+#. Tag: para
+#: intro.xml:153
+#, no-c-format
+msgid "A Web Bean comprises:"
+msgstr "一个Web Bean包括:"
+
+#. Tag: para
+#: intro.xml:156
+#, no-c-format
+msgid "A (nonempty) set of API types"
+msgstr "一套(非空)API类型"
+
+#. Tag: para
+#: intro.xml:157
+#, no-c-format
+msgid "A (nonempty) set of binding annotation types"
+msgstr "一套(非空)绑定注释类型"
+
+#. Tag: para
+#: intro.xml:158
+#, no-c-format
+msgid "A scope"
+msgstr "一个范围"
+
+#. Tag: para
+#: intro.xml:159
+#, no-c-format
+msgid "A deployment type"
+msgstr "一个部署类型"
+
+#. Tag: para
+#: intro.xml:160
+#, no-c-format
+msgid "Optionally, a Web Bean name"
+msgstr "可选的,一个Web Bean的名字"
+
+#. Tag: para
+#: intro.xml:161
+#, no-c-format
+msgid "A set of interceptor binding types"
+msgstr "一套拦截器绑定类型"
+
+#. Tag: para
+#: intro.xml:162
+#, no-c-format
+msgid "A Web Bean implementation"
+msgstr "一个Web Bean实现"
+
+#. Tag: para
+#: intro.xml:167
+#, no-c-format
+msgid "Let's see what some of these terms mean, to the Web Bean developer."
+msgstr "让我们看看这些术语对于Web Bean的开发者都意味着什么。"
+
+#. Tag: title
+#: intro.xml:170
+#, no-c-format
+msgid "API types, binding types and dependency injection"
+msgstr "API类型,绑定类型和依赖注入"
+
+#. Tag: para
+#: intro.xml:172
+#, no-c-format
+msgid "Web Beans usually acquire references to other Web Beans via dependency injection. Any injected attribute specifies a \"contract\" that must be satisfied by the Web Bean to be injected. The contract is:"
+msgstr "Web Bean通常通过依赖注入获得其他Web Bean的引用。任何注入的属性都要指定一个\"合约\",这个合约必须满足注入的Web Bean的要求。这个合约是:"
+
+#. Tag: para
+#: intro.xml:177
+#, no-c-format
+msgid "an API type, together with"
+msgstr "一个API类型,和"
+
+#. Tag: para
+#: intro.xml:178
+#, no-c-format
+msgid "a set of binding types."
+msgstr "一套绑定类型"
+
+#. Tag: para
+#: intro.xml:181
+#, no-c-format
+msgid "An API is a user-defined class or interface. (If the Web Bean is an EJB session bean, the API type is the <literal>@Local</literal> interface or bean-class local view). A binding type represents some client-visible semantic that is satisfied by some implementations of the API and not by others."
+msgstr "一个API指的是用户定义的类或者接口。(如果Web Bean是一个EJB会话Bean,API类型是 <literal>@Local</literal> 接口或者Bean类的本地视图)。一个绑定类型表示某个客户端可见的语义,这个语义由API的某个实现而不是其他实现来满足。"
+
+#. Tag: para
+#: intro.xml:186
+#, no-c-format
+msgid "Binding types are represented by user-defined annotations that are themselves annotated <literal>@BindingType</literal>. For example, the following injection point has API type <literal>PaymentProcessor</literal> and binding type <literal>@CreditCard</literal>:"
+msgstr "绑定类型通过用户定义的注释来表现,这些注释自己需要通过<literal>@BindingType</literal>来注释。例如,下面的注入点有一个API类型 <literal>PaymentProcessor</literal>和绑定类型<literal>@CreditCard</literal>:"
+
+#. Tag: programlisting
+#: intro.xml:191
+#, no-c-format
+msgid "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
+msgstr "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
+
+#. Tag: para
+#: intro.xml:193
+#, no-c-format
+msgid "If no binding type is explicitly specified at an injection point, the default binding type <literal>@Current</literal> is assumed."
+msgstr "如果在一个注入点没有显式的指定一个绑定类型,那么默认的绑定类型是<literal>@Current</literal>。"
+
+#. Tag: para
+#: intro.xml:196
+#, no-c-format
+msgid "For each injection point, the Web Bean manager searches for a Web Bean which satisfies the contract (implements the API, and has all the binding types), and injects that Web Bean."
+msgstr "对于每个注入点,Web Bean管理器都会搜索满足合约的Web Bean(实现了API并且拥有所有的绑定类型),然后将这个Web Bean注入。"
+
+#. Tag: para
+#: intro.xml:200
+#, no-c-format
+msgid "The following Web Bean has the binding type <literal>@CreditCard</literal> and implements the API type <literal>PaymentProcessor</literal>. It could therefore be injected to the example injection point:"
+msgstr "下面的Web Bean拥有一个绑定类型<literal>@CreditCard</literal>,并且实现了API类型<literal>PaymentProcessor</literal>。因此,这个Web Bean可以被注入到这个例子的注入点中:"
+
+#. Tag: programlisting
+#: intro.xml:204
+#, no-c-format
+msgid ""
+"<![CDATA[@CreditCard\n"
+"public class CreditCardPaymentProcessor \n"
+"    implements PaymentProcessor { ... }]]>"
+msgstr ""
+"<![CDATA[@CreditCard\n"
+"public class CreditCardPaymentProcessor \n"
+"    implements PaymentProcessor { ... }]]>"
+
+#. Tag: para
+#: intro.xml:206
+#, no-c-format
+msgid "If a Web Bean does not explicitly specify a set of binding types, it has exactly one binding type: the default binding type <literal>@Current</literal>."
+msgstr "如果一个Web Bean没有显式的指定一套绑定类型,它将只有一个绑定类型:默认的绑定类型<literal>@Current</literal>。"
+
+#. Tag: para
+#: intro.xml:209
+#, no-c-format
+msgid "Web Beans defines a sophisticated but intuitive <emphasis>resolution algorithm</emphasis> that helps the container decide what to do if there is more than one Web Bean that satisfies a particular contract. We'll get into the details in <xref linkend=\"injection\"/>."
+msgstr "Web Bean定义了一个复杂但是很直观的<emphasis>解析算法</emphasis>来帮助容器确定如何处理多个Web Bean满足特定合约的情况。我们将在 <xref linkend=\"injection\"/>一章中详述。"
+
+#. Tag: title
+#: intro.xml:217
+#, no-c-format
+msgid "Deployment types"
+msgstr "部署类型"
+
+#. Tag: para
+#: intro.xml:219
+#, no-c-format
+msgid "<emphasis>Deployment types</emphasis> let us classify our Web Beans by deployment scenario. A deployment type is an annotation that represents a particular deployment scenario, for example <literal>@Mock</literal>, <literal>@Staging</literal> or <literal>@AustralianTaxLaw</literal>. We apply the annotation to Web Beans which should be deployed in that scenario. A deployment type allows a whole set of Web Beans to be conditionally deployed, with a just single line of configuration."
+msgstr "<emphasis>部署类型</emphasis>能够让我们根据部署场景来划分我们的Web Bean。一个部署类型是一个注释,这个注释代表了一种特定的部署场景,例如<literal>@Mock</literal>,<literal>@Staging</literal>或者<literal>@AustralianTaxLaw</literal>。我们通过这些注释来决定哪些Web Bean部署在哪些场景中。一个部署类型允许我们只使用一行配置就可以对一整套Web Bean进行条件化的部署。"
+
+#. Tag: para
+#: intro.xml:226
+#, no-c-format
+msgid "Many Web Beans just use the default deployment type <literal>@Production</literal>, in which case no deployment type need be explicitly specified. All three Web Bean in our example have the deployment type <literal>@Production</literal>."
+msgstr "很多Web Bean只使用默认的部署类型<literal>@Production</literal>。在这种情况下,不需要显式的指定部署类型。在我们的例子中的三个Web Bean都拥有部署类型<literal>@Production</literal>。"
+
+#. Tag: para
+#: intro.xml:230
+#, no-c-format
+msgid "In a testing environment, we might want to replace the <literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
+msgstr "在一个测试环境中,我们有可能将<literal>SentenceTranslator</literal> Web Bean替换为一个\"模拟对象\":"
+
+#. Tag: programlisting
+#: intro.xml:233
+#, no-c-format
+msgid ""
+"<![CDATA[@Mock\n"
+"public class MockSentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) {\n"
+"        return \"Lorem ipsum dolor sit amet\";\n"
+"    }\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Mock\n"
+"public class MockSentenceTranslator implements Translator {\n"
+"    public String translate(String sentence) {\n"
+"        return \"Lorem ipsum dolor sit amet\";\n"
+"    }\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:236
+#, no-c-format
+msgid "We would enable the deployment type <literal>@Mock</literal> in our testing environment, to indicate that <literal>MockSentenceTranslator</literal> and any other Web Bean annotated <literal>@Mock</literal> should be used."
+msgstr "我们需要在测试环境中激活部署类型<literal>@Mock</literal>,这时应用会使用 <literal>MockSentenceTranslator</literal>或者其他拥有<literal>@Mock</literal>注释的Web Bean。"
+
+#. Tag: para
+#: intro.xml:240
+#, no-c-format
+msgid "We'll talk more about this unique and powerful feature in <xref linkend=\"deploymenttypes\"/>."
+msgstr "我们将在<xref linkend=\"deploymenttypes\"/>一章中详述这个独特而强大的特性。"
+
+#. Tag: title
+#: intro.xml:246
+#, no-c-format
+msgid "Scope"
+msgstr "范围"
+
+#. Tag: para
+#: intro.xml:248
+#, no-c-format
+msgid "The <emphasis>scope</emphasis> defines the lifecycle and visibility of instances of the Web Bean. The Web Beans context model is extensible, accommodating arbitrary scopes. However, certain important scopes are built-in to the specification, and provided by the Web Bean manager. A scope is represented by an annotation type."
+msgstr " <emphasis>范围</emphasis>定义了一个Web Bean实例的生命周期和可见度。Web Bean的上下文模型是可扩展的,可以适应任意范围。不过某些特定的重要的范围已经内置于规范中了,由Web Bean管理器提供这些范围。一个范围也是通过注释类型来表示的。"
+
+#. Tag: para
+#: intro.xml:254
+#, no-c-format
+msgid "For example, any web application may have <emphasis>session scoped</emphasis> Web Beans:"
+msgstr "例如,任何一个Web应用都可能拥有 <emphasis>会话范围</emphasis>的Web Bean:"
+
+#. Tag: programlisting
+#: intro.xml:257
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:259
+#, no-c-format
+msgid "An instance of a session scoped Web Bean is bound to a user session and is shared by all requests that execute in the context of that session."
+msgstr "一个会话范围的Web Bean实例将绑定到用户会话中,它被这个会话上下文中的所有请求共享。"
+
+#. Tag: para
+#: intro.xml:262
+#, no-c-format
+msgid "By default, Web Beans belong to a special scope called the <emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are pure dependent objects of the object into which they are injected, and their lifecycle is bound to the lifecycle of that object."
+msgstr "默认情况下,Web Bean属于一个名为<emphasis>依赖伪范围</emphasis>的特殊范围。拥有这个范围的Web Bean的范围取决于其所注入的对象的范围,它的生命周期和所注入的对象的生命周期绑定在一起。"
+
+#. Tag: para
+#: intro.xml:267
+#, no-c-format
+msgid "We'll talk more about scopes in <xref linkend=\"scopescontexts\"/>."
+msgstr "我们将在<xref linkend=\"scopescontexts\"/>一章中详述范围。"
+
+#. Tag: title
+#: intro.xml:272
+#, no-c-format
+msgid "Web Bean names and Unified EL"
+msgstr "Web Bean的名字和统一表达式语言"
+
+#. Tag: para
+#: intro.xml:274
+#, no-c-format
+msgid "A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in Unified EL expressions. It's easy to specify the name of a Web Bean:"
+msgstr "一个Web Bean可能有一个<emphasis>名字</emphasis>,通过名字,Web Bean可以在统一表达式语言中使用。为Web Bean指定一个名字非常简单:"
+
+#. Tag: programlisting
+#: intro.xml:278
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named(\"cart\")\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped @Named(\"cart\")\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:280
+#, no-c-format
+msgid "Now we can easily use the Web Bean in any JSF or JSP page:"
+msgstr "现在我们可以轻松地在任何JSF或者JSP页面中使用这个Web Bean:"
+
+#. Tag: programlisting
+#: intro.xml:282
+#, no-c-format
+msgid ""
+"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
+"    ....\n"
+"</h:dataTable>]]>"
+msgstr ""
+"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
+"    ....\n"
+"</h:dataTable>]]>"
+
+#. Tag: para
+#: intro.xml:284
+#, no-c-format
+msgid "It's even easier to just let the name be defaulted by the Web Bean manager:"
+msgstr "甚至我们可以让Web Bean管理器来给Web Bean指定默认的名字:"
+
+#. Tag: programlisting
+#: intro.xml:287
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped @Named\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:289
+#, no-c-format
+msgid "In this case, the name defaults to <literal>shoppingCart</literal>&#151;the unqualified class name, with the first character changed to lowercase."
+msgstr "在这种情况下,Web Bean的名字默认为<literal>shoppingCart</literal>&#151;非完整的类名,首字母改为小写"
+
+#. Tag: title
+#: intro.xml:295
+#, no-c-format
+msgid "Interceptor binding types"
+msgstr "拦截器绑定类型"
+
+#. Tag: para
+#: intro.xml:297
+#, no-c-format
+msgid "Web Beans supports the interceptor functionality defined by EJB 3, not only for EJB beans, but also for plain Java classes. In addition, Web Beans provides a new approach to binding interceptors to EJB beans and other Web Beans."
+msgstr "Web Bean支持EJB3定义的拦截器功能,Web Bean将其扩展,使得POJO也具备该功能。另外,Web Bean提供一个新的方式来将拦截器绑定到EJB Bean和其他Web Bean上。"
+
+#. Tag: para
+#: intro.xml:302
+#, no-c-format
+msgid "It remains possible to directly specify the interceptor class via use of the <literal>@Interceptors</literal> annotation:"
+msgstr "可以通过<literal>@Interceptors</literal> 注释直接指定拦截器类:"
+
+#. Tag: programlisting
+#: intro.xml:305
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped \n"
+"@Interceptors(TransactionInterceptor.class)\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped \n"
+"@Interceptors(TransactionInterceptor.class)\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:307
+#, no-c-format
+msgid "However, it is more elegant, and better practice, to indirect the interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
+msgstr "然而,更优雅的方式或者更佳的实践是通过<emphasis>拦截器绑定类型</emphasis>来间接地绑定拦截器:"
+
+#. Tag: programlisting
+#: intro.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@SessionScoped @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+msgstr ""
+"<![CDATA[@SessionScoped @Transactional\n"
+"public class ShoppingCart { ... }]]>"
+
+#. Tag: para
+#: intro.xml:313
+#, no-c-format
+msgid "We'll discuss Web Beans interceptors and decorators in <xref linkend=\"interceptors\"/> and <xref linkend=\"decorators\"/>."
+msgstr "我们将在<xref linkend=\"interceptors\"/>和<xref linkend=\"decorators\"/>两章分别讨论Web Bean拦截器和装饰器。"
+
+#. Tag: title
+#: intro.xml:321
+#, no-c-format
+msgid "What kinds of objects can be Web Beans?"
+msgstr "什么样的对象能够称为Web Bean?"
+
+#. Tag: para
+#: intro.xml:323
+#, no-c-format
+msgid "We've already seen that JavaBeans, EJBs and some other Java classes can be Web Beans. But exactly what kinds of objects are Web Beans?"
+msgstr "我们已经看到,JavaBean, EJB和其他Java类都可以成为Web Bean。但是,确切地说,什么样的对象能够称为Web Bean?"
+
+#. Tag: title
+#: intro.xml:327
+#, no-c-format
+msgid "Simple Web Beans"
+msgstr "简单的Web Bean"
+
+#. Tag: para
+#: intro.xml:329
+#, no-c-format
+msgid "The Web Beans specification says that a concrete Java class is a <emphasis>simple</emphasis> Web Bean if:"
+msgstr "Web Bean规范声称一个具体的Java类可以成为一个<emphasis>简单</emphasis>的Web Bean, 只要这个类:"
+
+#. Tag: para
+#: intro.xml:334
+#, no-c-format
+msgid "it is not an EE container-managed component, like an EJB, a Servlet or a JPA entity,"
+msgstr "它不是一个EE容器管理的组件,例如一个EJB,一个Servlet或者一个JPA实体,"
+
+#. Tag: para
+#: intro.xml:338
+#, no-c-format
+msgid "it is not a non-static static inner class,"
+msgstr "她不是一个非静态的静态内嵌类,"
+
+#. Tag: para
+#: intro.xml:341
+#, no-c-format
+msgid "it is not a parameterized type, and"
+msgstr "它不是一个参数化类型,并且"
+
+#. Tag: para
+#: intro.xml:344
+#, no-c-format
+msgid "it has a constructor with no parameters, or a constructor annotated <literal>@Initializer</literal>."
+msgstr "它拥有一个无参构造器,或者构造器具有<literal>@Initializer</literal>注释。"
+
+#. Tag: para
+#: intro.xml:349
+#, no-c-format
+msgid "Thus, almost every JavaBean is a simple Web Bean."
+msgstr "这样,几乎所有的JavaBean都可以是一个简单的Web Bean。"
+
+#. Tag: para
+#: intro.xml:351
+#, no-c-format
+msgid "Every interface implemented directly or indirectly by a simple Web Bean is an API type of the simple Web Bean. The class and its superclasses are also API types."
+msgstr "每个被简单Web Bean直接或者间接实现的接口都是这个简单Web Bean的一个API类型。这个类和它的超类也是API类型。"
+
+#. Tag: title
+#: intro.xml:358
+#, no-c-format
+msgid "Enterprise Web Beans"
+msgstr "企业级Web Bean"
+
+#. Tag: para
+#: intro.xml:360
+#, no-c-format
+msgid "The specification says that all EJB 3-style session and singleton beans are <emphasis>enterprise</emphasis> Web Beans. Message driven beans are not Web Beans&#151;since they are not intended to be injected into other objects&#151;but they can take advantage of most of the functionality of Web Beans, including dependency injection and interceptors."
+msgstr "规范指出所有EJB3类型的会话Bean或者单例Bean都是<emphasis>企业级</emphasis>Web Bean。消息驱动Bean不是Web Beans&#151;因为它们不能被注入到其他对象中#151;但是它们可以使用大部分Web Bean的功能,包括依赖注入和拦截器。"
+
+#. Tag: para
+#: intro.xml:366
+#, no-c-format
+msgid "Every local interface of an enterprise Web Bean that does not have a wildcard type parameter or type variable, and every one of its superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean has a bean class local view, the bean class, and every one of its superclasses, is also an API type."
+msgstr "一个企业级Web Bean的本地接口,只要没有一个通配类型参数或者类型变量,它都是这个企业级Web Bean的API类型,该接口的每个父接口也都是这个企业级Web Bean的API类型。如果EJB Bean有一个Bean类的本地视图,这个Bean类和它的每个父类也是一个API类型。"
+
+#. Tag: para
+#: intro.xml:372
+#, no-c-format
+msgid "Stateful session beans should declare a remove method with no parameters or a remove method annotated <literal>@Destructor</literal>. The Web Bean manager calls this method to destroy the stateful session bean instance at the end of its lifecycle. This method is called the <emphasis>destructor</emphasis> method of the enterprise Web Bean."
+msgstr "有状态的会话Bean应该声明一个无参的删除方法或者一个拥有<literal>@Destructor</literal>注释的删除方法。Web Bean管理器将在这个有状态会话Bean实例的生命周期结束时调用这个方法。这个方法被称为企业级Web Bean的<emphasis>销毁</emphasis>方法。"
+
+#. Tag: programlisting
+#: intro.xml:378
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful @SessionScoped\n"
+"public class ShoppingCart {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Stateful @SessionScoped\n"
+"public class ShoppingCart {\n"
+"\n"
+"    ...\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:380
+#, no-c-format
+msgid "So when should we use an enterprise Web Bean instead of a simple Web Bean? Well, whenever we need the advanced enterprise services offered by EJB, such as:"
+msgstr "我们什么时候使用企业级Web Bean来替代简单Web Bean呢?当我们需要EJB提供的高级的企业服务的时候,例如:"
+
+#. Tag: para
+#: intro.xml:387
+#, no-c-format
+msgid "method-level transaction management and security,"
+msgstr "方法水平的事务管理和安全,"
+
+#. Tag: para
+#: intro.xml:390
+#, no-c-format
+msgid "concurrency management,"
+msgstr "并发管理"
+
+#. Tag: para
+#: intro.xml:393
+#, no-c-format
+msgid "instance-level passivation for stateful session beans and instance-pooling for stateless session beans,"
+msgstr "实例水平的有状态会话Bean的钝化和无状态会话Bean的实例池,"
+
+#. Tag: para
+#: intro.xml:397
+#, no-c-format
+msgid "remote and web service invocation, and"
+msgstr "远程或者Web服务调用,和"
+
+#. Tag: para
+#: intro.xml:400
+#, no-c-format
+msgid "timers and asynchronous methods,"
+msgstr "定时器以及异步方法,"
+
+#. Tag: para
+#: intro.xml:404
+#, no-c-format
+msgid "we should use an enterprise Web Bean. When we don't need any of these things, a simple Web Bean will serve just fine."
+msgstr "在这中情况下,我们应该使用一个企业级Web Bean。当我们不需要这些服务的时候,一个简单Web Bean就足够了。"
+
+#. Tag: para
+#: intro.xml:407
+#, no-c-format
+msgid "Many Web Beans (including any session or application scoped Web Bean) are available for concurrent access. Therefore, the concurrency management provided by EJB 3.1 is especially useful. Most session and application scoped Web Beans should be EJBs."
+msgstr "很多Web Bean(包括任何会话范围或者应用范围的Web Bean)都需要并发访问。因此,EJB3.1提供的并发管理相当有用。大部分会话范围和应用范围的Web Bean应该是EJB。"
+
+#. Tag: para
+#: intro.xml:412
+#, no-c-format
+msgid "Web Beans which hold references to heavy-weight resources, or hold a lot of internal state benefit from the advanced container-managed lifecycle defined by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal> model, with its support for passivation and instance pooling."
+msgstr "对于拥有重量级资源引用或者大量内部状态的Web Bean来说,它能够从高级的容器管理的生命周期获得好处。这些生命周期由EJB的 <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal>模型定义,它支持钝化和实例池。"
+
+#. Tag: para
+#: intro.xml:417
+#, no-c-format
+msgid "Finally, it's usually obvious when method-level transaction management, method-level security, timers, remote methods or asynchronous methods are needed."
+msgstr "最后,什么情况下应该使用方法水平的事务管理,方法水平的安全,计时器,远程方法或者异步方法应该是显而易见的。"
+
+#. Tag: para
+#: intro.xml:420
+#, no-c-format
+msgid "It's usually easy to start with simple Web Bean, and then turn it into an EJB, just by adding an annotation: <literal>@Stateless</literal>, <literal>@Stateful</literal> or <literal>@Singleton</literal>."
+msgstr "从简单Web Bean起步最容易,然后转换到EJB上,过程很简单,只须添加一个注释:<literal>@Stateless</literal>, <literal>@Stateful</literal> 或者 <literal>@Singleton</literal>。"
+
+#. Tag: title
+#: intro.xml:427
+#, no-c-format
+msgid "Producer methods"
+msgstr "生产者方法"
+
+#. Tag: para
+#: intro.xml:429
+#, no-c-format
+msgid "A <emphasis>producer method</emphasis> is a method that is called by the Web Bean manager to obtain an instance of the Web Bean when no instance exists in the current context. A producer method lets the application take full control of the instantiation process, instead of leaving instantiation to the Web Bean manager. For example:"
+msgstr "一个<emphasis>生产者方法</emphasis>由Web Bean管理器在当前上下文中没有某个Web Bean实例的时候调用,用以获得该Web Bean的一个实例。一个生产者方法能够让应用完全控制实例化的过程,而不是将初始化交给Web Bean管理器处理。例如:"
+
+#. Tag: programlisting
+#: intro.xml:435
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"\n"
+"    private Random random = new Random( System.currentTimeMillis() );\n"
+"    \n"
+"    @Produces @Random int next() {\n"
+"        return random.nextInt(100);\n"
+"    }\n"
+"\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"\n"
+"    private Random random = new Random( System.currentTimeMillis() );\n"
+"    \n"
+"    @Produces @Random int next() {\n"
+"        return random.nextInt(100);\n"
+"    }\n"
+"\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:437
+#, no-c-format
+msgid "The result of a producer method is injected just like any other Web Bean."
+msgstr "一个生产者方法的输出或者返回值将被注入到注入点中,就像其他任何的Web Bean一样。"
+
+#. Tag: programlisting
+#: intro.xml:439
+#, no-c-format
+msgid "<![CDATA[@Random int randomNumber]]>"
+msgstr "<![CDATA[@Random int randomNumber]]>"
+
+#. Tag: para
+#: intro.xml:441
+#, no-c-format
+msgid "The method return type and all interfaces it extends/implements directly or indirectly are API types of the producer method. If the return type is a class, all superclasses are also API types."
+msgstr "方法返回的类型和它直接或者间接继承或者实现的所有接口都是这个生产者方法的API类型。如果返回的类型一个类,其所有的父类也是API类型。"
+
+#. Tag: para
+#: intro.xml:445
+#, no-c-format
+msgid "Some producer methods return objects that require explicit destruction:"
+msgstr "一些生产者方法返回的对象需要显式地销毁"
+
+#. Tag: programlisting
+#: intro.xml:447
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
+"    return createConnection( user.getId(), user.getPassword() );\n"
+"}]]>"
+msgstr ""
+"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
+"    return createConnection( user.getId(), user.getPassword() );\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:449
+#, no-c-format
+msgid "These producer methods may define matching <emphasis>disposal methods</emphasis>:"
+msgstr "这些生产者方法可以定义对应的<emphasis>清除方法</emphasis>:"
+
+#. Tag: programlisting
+#: intro.xml:451
+#, no-c-format
+msgid ""
+"<![CDATA[void close(@Disposes Connection connection) {\n"
+"    connection.close();\n"
+"}]]>"
+msgstr ""
+"<![CDATA[void close(@Disposes Connection connection) {\n"
+"    connection.close();\n"
+"}]]>"
+
+#. Tag: para
+#: intro.xml:453
+#, no-c-format
+msgid "This disposal method is called automatically by the Web Bean manager at the end of the request."
+msgstr "这个清除方法将在请求结束的时候自动被Web Bean管理器调用。"
+
+#. Tag: para
+#: intro.xml:456
+#, no-c-format
+msgid "We'll talk much more about producer methods in <xref linkend=\"producermethods\"/>."
+msgstr "我们将在<xref linkend=\"producermethods\"/>一章中详述生产者方法。"
+
+#. Tag: title
+#: intro.xml:461
+#, no-c-format
+msgid "JMS endpoints"
+msgstr "JMS端点"
+
+#. Tag: para
+#: intro.xml:463
+#, no-c-format
+msgid "Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the developer from the tedium of managing the lifecycles of all the various JMS objects required to send messages to queues and topics. We'll discuss JMS endpoints in <xref linkend=\"jms\"/>."
+msgstr "最后,一个JMS的队列或者主题能够成为一个Web Bean。为了向队列或者主题发送消息,开发者不得不处理所有不同JMS对象的生命周期。Web Bean将开发者从这些冗长乏味的工作中解放出来。我们将在<xref linkend=\"jms\"/>一章中讨论JMS端点。"
+


Property changes on: doc/trunk/reference/zh-CN/intro.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Deleted: doc/trunk/reference/zh-CN/modules/Book_Info.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/Book_Info.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/Book_Info.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,51 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:29+0000\n"
-"PO-Revision-Date: 2008-12-22 09:36+0800\n"
-"Last-Translator: Sean Wu <alartin at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: Book_Info.xml:6
-#, no-c-format
-msgid "Introduction to Web Beans"
-msgstr "Web Beans介绍"
-
-#. Tag: subtitle
-#: Book_Info.xml:7
-#, no-c-format
-msgid "The new Java standard for dependency injection and contextual state management"
-msgstr "关于依赖注入和上下文状态管理的Java新规范"
-
-#. Tag: author
-#: Book_Info.xml:10
-#, no-c-format
-msgid "<firstname>Gavin</firstname> <surname>King</surname>"
-msgstr "<firstname>Gavin</firstname> <surname>King</surname>"
-
-#. Tag: affiliation
-#: Book_Info.xml:13
-#, no-c-format
-msgid "<jobtitle>Web Beans (JSR-299) specification lead</jobtitle> <orgname>Red Hat Middleware LLC</orgname>"
-msgstr "<jobtitle>Web Beans (JSR-299) 规范领导人</jobtitle> <orgname>红帽中间件有限责任公司</orgname>"
-
-#. Tag: author
-#: Book_Info.xml:19
-#, no-c-format
-msgid "<firstname>Pete</firstname> <surname>Muir</surname>"
-msgstr "<firstname>Pete</firstname> <surname>Muir</surname>"
-
-#. Tag: affiliation
-#: Book_Info.xml:22
-#, no-c-format
-msgid "<jobtitle>Web Beans (JSR-299) Reference Implementation lead</jobtitle> <orgname>Red Hat Middleware LLC</orgname>"
-msgstr "<jobtitle>Web Beans (JSR-299) 参考实现领导人</jobtitle> <orgname>红帽中间件有限责任公司</orgname>"
-

Deleted: doc/trunk/reference/zh-CN/modules/decorators.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/decorators.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/decorators.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,243 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: decorators.xml:4
-#, no-c-format
-msgid "Decorators"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:6
-#, no-c-format
-msgid ""
-"Interceptors are a powerful way to capture and separate concerns which are "
-"<emphasis>orthogonal</emphasis> to the type system. Any interceptor is able "
-"to intercept invocations of any Java type. This makes them perfect for "
-"solving technical concerns such as transaction management and security. "
-"However, by nature, interceptors are unaware of the actual semantics of the "
-"events they intercept. Thus, interceptors aren't an appropriate tool for "
-"separating business-related concerns."
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:14
-#, no-c-format
-msgid ""
-"The reverse is true of <emphasis>decorators</emphasis>. A decorator "
-"intercepts invocations only for a certain Java interface, and is therefore "
-"aware of all the semantics attached to that interface. This makes decorators "
-"a perfect tool for modeling some kinds of business concerns. It also means "
-"that a decorator doesn't have the generality of an interceptor. Decorators "
-"aren't able to solve technical concerns that cut across many disparate types."
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:22
-#, no-c-format
-msgid "Suppose we have an interface that represents accounts:"
-msgstr ""
-
-#. Tag: programlisting
-#: decorators.xml:24
-#, no-c-format
-msgid ""
-"<![CDATA[public interface Account {\n"
-"    public BigDecimal getBalance();\n"
-"    public User getOwner();\n"
-"    public void withdraw(BigDecimal amount);\n"
-"    public void deposit(BigDecimal amount);\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:26
-#, no-c-format
-msgid ""
-"Several different Web Beans in our system implement the <literal>Account</"
-"literal> interface. However, we have a common legal requirement that, for "
-"any kind of account, large transactions must be recorded by the system in a "
-"special log. This is a perfect job for a decorator."
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:32
-#, no-c-format
-msgid ""
-"A decorator is a simple Web Bean that implements the type it decorates and "
-"is annotated <literal>@Decorator</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: decorators.xml:35
-#, no-c-format
-msgid ""
-"<![CDATA[@Decorator\n"
-"public abstract class LargeTransactionDecorator \n"
-"        implements Account {\n"
-"    \n"
-"    @Decorates Account account;\n"
-"    \n"
-"    @PersistenceContext EntityManager em;\n"
-"    \n"
-"    public void withdraw(BigDecimal amount) {\n"
-"        account.withdraw(amount);\n"
-"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
-"            em.persist( new LoggedWithdrawl(amount) );\n"
-"        }\n"
-"    }\n"
-"    \n"
-"    public void deposit(BigDecimal amount);\n"
-"        account.deposit(amount);\n"
-"        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {\n"
-"            em.persist( new LoggedDeposit(amount) );\n"
-"        }\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:37
-#, no-c-format
-msgid ""
-"Unlike other simple Web Beans, a decorator may be an abstract class. If "
-"there's nothing special the decorator needs to do for a particular method of "
-"the decorated interface, you don't need to implement that method."
-msgstr ""
-
-#. Tag: title
-#: decorators.xml:43
-#, no-c-format
-msgid "Delegate attributes"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:45
-#, no-c-format
-msgid ""
-"All decorators have a <emphasis>delegate attribute</emphasis>. The type and "
-"binding types of the delegate attribute determine which Web Beans the "
-"decorator is bound to. The delegate attribute type must implement or extend "
-"all interfaces implemented by the decorator."
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:50
-#, no-c-format
-msgid ""
-"This delegate attribute specifies that the decorator is bound to all Web "
-"Beans that implement <literal>Account</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: decorators.xml:53
-#, no-c-format
-msgid "<![CDATA[@Decorates Account account;]]>"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:55
-#, no-c-format
-msgid ""
-"A delegate attribute may specify a binding annotation. Then the decorator "
-"will only be bound to Web Beans with the same binding."
-msgstr ""
-
-#. Tag: programlisting
-#: decorators.xml:58
-#, no-c-format
-msgid "<![CDATA[@Decorates @Foreign Account account;]]>"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:60
-#, no-c-format
-msgid "A decorator is bound to any Web Bean which:"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:64
-#, no-c-format
-msgid "has the type of the delegate attribute as an API type, and"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:67
-#, no-c-format
-msgid "has all binding types that are declared by the delegate attribute."
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:71
-#, no-c-format
-msgid ""
-"The decorator may invoke the delegate attribute, which has much the same "
-"effect as calling <literal>InvocationContext.proceed()</literal> from an "
-"interceptor."
-msgstr ""
-
-#. Tag: title
-#: decorators.xml:78
-#, no-c-format
-msgid "Enabling decorators"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:80
-#, no-c-format
-msgid ""
-"We need to <emphasis>enable</emphasis> our decorator in <literal>web-beans."
-"xml</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: decorators.xml:83
-#, no-c-format
-msgid ""
-"<![CDATA[<Decorators>\n"
-"    <myapp:LargeTransactionDecorator/>\n"
-"</Decorators>]]>"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:85
-#, no-c-format
-msgid ""
-"This declaration serves the same purpose for decorators that the "
-"<literal>&lt;Interceptors&gt;</literal> declaration serves for interceptors:"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:90
-#, no-c-format
-msgid ""
-"it enables us to specify a total ordering for all decorators in our system, "
-"ensuring deterministic behavior, and"
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:94
-#, no-c-format
-msgid "it lets us enable or disable decorator classes at deployment time."
-msgstr ""
-
-#. Tag: para
-#: decorators.xml:98
-#, no-c-format
-msgid ""
-"Interceptors for a method are called before decorators that apply to that "
-"method."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/ee.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/ee.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/ee.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,329 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:08+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: ee.xml:4
-#, no-c-format
-msgid "Java EE integration"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:6
-#, no-c-format
-msgid ""
-"Web Beans is fully integrated into the Java EE environment. Web Beans have "
-"access to Java EE resources and JPA persistence contexts. They may be used "
-"in Unified EL expressions in JSF and JSP pages. They may even be injected "
-"into some objects, such as Servlets and Message-Driven Beans, which are not "
-"Web Beans."
-msgstr ""
-
-#. Tag: title
-#: ee.xml:12
-#, no-c-format
-msgid "Injecting Java EE resources into a Web Bean"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:14
-#, no-c-format
-msgid ""
-"All simple and enterprise Web Beans may take advantage of Java EE dependency "
-"injection using <literal>@Resource</literal>, <literal>@EJB</literal> and "
-"<literal>@PersistenceContext</literal>. We've already seen a couple of "
-"examples of this, though we didn't pay much attention at the time:"
-msgstr ""
-
-#. Tag: programlisting
-#: ee.xml:19
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"\n"
-"    @Resource Transaction transaction;\n"
-"\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
-"{ ... }\n"
-"    \n"
-"}]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: ee.xml:21
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped\n"
-"public class Login {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @PersistenceContext EntityManager userDatabase;\n"
-"    \n"
-"    ...\n"
-"\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:23
-#, no-c-format
-msgid ""
-"The Java EE <literal>@PostConstruct</literal> and <literal>@PreDestroy</"
-"literal> callbacks are also supported for all simple and enterprise Web "
-"Beans. The <literal>@PostConstruct</literal> method is called after "
-"<emphasis>all</emphasis> injection has been performed."
-msgstr ""
-
-#. Tag: para
-#: ee.xml:28
-#, no-c-format
-msgid ""
-"There is one restriction to be aware of here: <literal>@PersistenceContext"
-"(type=EXTENDED)</literal> is not supported for simple Web Beans."
-msgstr ""
-
-#. Tag: title
-#: ee.xml:35
-#, no-c-format
-msgid "Calling a Web Bean from a Servlet"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:37
-#, no-c-format
-msgid ""
-"It's easy to use a Web Bean from a Servlet in Java EE 6. Simply inject the "
-"Web Bean using Web Beans field or initializer method injection."
-msgstr ""
-
-#. Tag: programlisting
-#: ee.xml:40
-#, no-c-format
-msgid ""
-"public class Login extends HttpServlet {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @Current Login login;\n"
-"\n"
-"    @Override\n"
-"    public void service(HttpServletRequest request, HttpServletResponse "
-"response)\n"
-"        throws ServletException, IOException {\n"
-"        credentials.setUsername( request.getAttribute(\"username\") ):\n"
-"        credentials.setPassword( request.getAttribute(\"password\") ):\n"
-"        login.login();\n"
-"        if ( login.isLoggedIn() ) {\n"
-"            response.sendRedirect(\"/home.jsp\");\n"
-"        }\n"
-"        else {\n"
-"            response.sendRedirect(\"/loginError.jsp\");\n"
-"        }\n"
-"    }\n"
-"            \n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:42
-#, no-c-format
-msgid ""
-"The Web Beans client proxy takes care of routing method invocations from the "
-"Servlet to the correct instances of <literal>Credentials</literal> and "
-"<literal>Login</literal> for the current request and HTTP session."
-msgstr ""
-
-#. Tag: title
-#: ee.xml:49
-#, no-c-format
-msgid "Calling a Web Bean from a Message-Driven Bean"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:51
-#, no-c-format
-msgid ""
-"Web Beans injection applies to all EJBs, even when they aren't under the "
-"control of the Web Bean manager (if they were obtained by direct JNDI "
-"lookup, or injection using <literal>@EJB</literal>, for example. In "
-"particular, you can use Web Beans injection in Message-Driven Beans, which "
-"are not considered Web Beans because you can't inject them."
-msgstr ""
-
-#. Tag: para
-#: ee.xml:57
-#, no-c-format
-msgid ""
-"You can even use Web Beans interceptor bindings for Message-Driven Beans."
-msgstr ""
-
-#. Tag: programlisting
-#: ee.xml:59
-#, no-c-format
-msgid ""
-"@Transactional @MessageDriven\n"
-"public class ProcessOrder implements MessageListener {\n"
-"\n"
-"    @Current Inventory inventory;\n"
-"    @PersistenceContext EntityManager em;\n"
-"\n"
-"    public void onMessage(Message message) {\n"
-"        ...\n"
-"    }\n"
-"            \n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:61
-#, no-c-format
-msgid ""
-"Thus, receiving messages is super-easy in a Web Beans environment. But "
-"beware that there is no session or conversation context available when a "
-"message is delivered to a Message-Driven Bean. Only <literal>@RequestScoped</"
-"literal> and <literal>@ApplicationScoped</literal> Web Beans are available."
-msgstr ""
-
-#. Tag: para
-#: ee.xml:66
-#, no-c-format
-msgid "It's also easy to send messages using Web Beans."
-msgstr ""
-
-#. Tag: title
-#: ee.xml:71
-#, no-c-format
-msgid "JMS endpoints"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:73
-#, no-c-format
-msgid ""
-"Sending messages using JMS can be quite complex, because of the number of "
-"different objects you need to deal with. For queues we have <literal>Queue</"
-"literal>, <literal>QueueConnectionFactory</literal>, "
-"<literal>QueueConnection</literal>, <literal>QueueSession</literal> and "
-"<literal>QueueSender</literal>. For topics we have <literal>Topic</literal>, "
-"<literal>TopicConnectionFactory</literal>, <literal>TopicConnection</"
-"literal>, <literal>TopicSession</literal> and <literal>TopicPublisher</"
-"literal>. Each of these objects has its own lifecycle and threading model "
-"that we need to worry about."
-msgstr ""
-
-#. Tag: para
-#: ee.xml:82
-#, no-c-format
-msgid ""
-"Web Beans takes care of all this for us. All we need to do is declare the "
-"queue or topic in <literal>web-beans.xml</literal>, specifying an associated "
-"binding type and connection factory."
-msgstr ""
-
-#. Tag: programlisting
-#: ee.xml:86
-#, no-c-format
-msgid ""
-"<![CDATA[<Queue>\n"
-"    <destination>java:comp/env/jms/OrderQueue</destination>\n"
-"    <connectionFactory>java:comp/env/jms/QueueConnectionFactory</"
-"connectionFactory>\n"
-"    <myapp:OrderProcessor/>    \n"
-"</Queue>]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: ee.xml:88
-#, no-c-format
-msgid ""
-"<![CDATA[<Topic>\n"
-"    <destination>java:comp/env/jms/StockPrices</destination>\n"
-"    <connectionFactory>java:comp/env/jms/TopicConnectionFactory</"
-"connectionFactory>\n"
-"    <myapp:StockPrices/>    \n"
-"</Topic>]]>"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:90
-#, no-c-format
-msgid ""
-"Now we can just inject the <literal>Queue</literal>, "
-"<literal>QueueConnection</literal>, <literal>QueueSession</literal> or "
-"<literal>QueueSender</literal> for a queue, or the <literal>Topic</literal>, "
-"<literal>TopicConnection</literal>, <literal>TopicSession</literal> or "
-"<literal>TopicPublisher</literal> for a topic."
-msgstr ""
-
-#. Tag: programlisting
-#: ee.xml:96
-#, no-c-format
-msgid ""
-"@OrderProcessor QueueSender orderSender;\n"
-"@OrderProcessor QueueSession orderSession;\n"
-"\n"
-"public void sendMessage() {\n"
-"    MapMessage msg = orderSession.createMapMessage();\n"
-"    ...\n"
-"    orderSender.send(msg);\n"
-"}"
-msgstr ""
-
-#. Tag: programlisting
-#: ee.xml:98
-#, no-c-format
-msgid ""
-"@StockPrices TopicPublisher pricePublisher;\n"
-"@StockPrices TopicSession priceSession;\n"
-"\n"
-"public void sendMessage(String price) {\n"
-"    pricePublisher.send( priceSession.createTextMessage(price) );\n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:100
-#, no-c-format
-msgid ""
-"The lifecycle of the injected JMS objects is completely controlled by the "
-"Web Bean manager."
-msgstr ""
-
-#. Tag: title
-#: ee.xml:106
-#, no-c-format
-msgid "Packaging and deployment"
-msgstr ""
-
-#. Tag: para
-#: ee.xml:108
-#, no-c-format
-msgid ""
-"Web Beans doesn't define any special deployment archive. You can package Web "
-"Beans in JARs, EJB-JARs or WARs&#151;any deployment location in the "
-"application classpath. However, each archive that contains Web Beans must "
-"include a file named <literal>web-beans.xml</literal> in the <literal>META-"
-"INF</literal> or <literal>WEB-INF</literal> directory. The file may be "
-"empty. Web Beans deployed in archives that do not have a <literal>web-beans."
-"xml</literal> file will not be available for use in the application."
-msgstr ""
-
-#. Tag: para
-#: ee.xml:116
-#, no-c-format
-msgid ""
-"For Java SE execution, Web Beans may be deployed in any location in which "
-"EJBs may be deployed for execution by the embeddable EJB Lite container. "
-"Again, each location must contain a <literal>web-beans.xml</literal> file."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/events.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/events.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/events.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,649 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: events.xml:4
-#, no-c-format
-msgid "Events"
-msgstr ""
-
-#. Tag: para
-#: events.xml:6
-#, no-c-format
-msgid ""
-"The Web Beans event notification facility allows Web Beans to interact in a "
-"totally decoupled manner. Event <emphasis>producers</emphasis> raise events "
-"that are then delivered to event <emphasis>observers</emphasis> by the Web "
-"Bean manager. This basic schema might sound like the familiar observer/"
-"observable pattern, but there are a couple of twists:"
-msgstr ""
-
-#. Tag: para
-#: events.xml:14
-#, no-c-format
-msgid ""
-"not only are event producers decoupled from observers; observers are "
-"completely decoupled from producers,"
-msgstr ""
-
-#. Tag: para
-#: events.xml:18
-#, no-c-format
-msgid ""
-"observers can specify a combination of \"selectors\" to narrow the set of "
-"event notifications they will receive, and"
-msgstr ""
-
-#. Tag: para
-#: events.xml:22
-#, no-c-format
-msgid ""
-"observers can be notified immediately, or can specify that delivery of the "
-"event should be delayed until the end of the current transaction"
-msgstr ""
-
-#. Tag: title
-#: events.xml:28
-#, no-c-format
-msgid "Event observers"
-msgstr ""
-
-#. Tag: para
-#: events.xml:30
-#, no-c-format
-msgid ""
-"An <emphasis>observer method</emphasis> is a method of a Web Bean with a "
-"parameter annotated <literal>@Observes</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:33
-#, no-c-format
-msgid ""
-"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
-"{ ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:35
-#, no-c-format
-msgid ""
-"The annotated parameter is called the <emphasis>event parameter</emphasis>. "
-"The type of the event parameter is the observed <emphasis>event type</"
-"emphasis>. Observer methods may also specify \"selectors\", which are just "
-"instances of Web Beans binding types. When a binding type is used as an "
-"event selector, it is called an <emphasis>event binding type</emphasis>."
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:41
-#, no-c-format
-msgid ""
-"<![CDATA[@BindingType\n"
-"@Target({PARAMETER, FIELD})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Updated { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:43
-#, no-c-format
-msgid ""
-"We specify the event bindings of the observer method by annotating the event "
-"parameter:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:46 events.xml:190
-#, no-c-format
-msgid ""
-"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
-"document) { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:48
-#, no-c-format
-msgid ""
-"An observer method need not specify any event bindings&#151;in this case it "
-"is interested in <emphasis>all</emphasis> events of a particular type. If it "
-"does specify event bindings, it is only interested in events which also have "
-"those event bindings."
-msgstr ""
-
-#. Tag: para
-#: events.xml:53
-#, no-c-format
-msgid ""
-"The observer method may have additional parameters, which are injected "
-"according to the usual Web Beans method parameter injection semantics:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:56
-#, no-c-format
-msgid ""
-"<![CDATA[public void afterDocumentUpdate(@Observes @Updated Document "
-"document, User user) { ... }]]>"
-msgstr ""
-
-#. Tag: title
-#: events.xml:61
-#, no-c-format
-msgid "Event producers"
-msgstr ""
-
-#. Tag: para
-#: events.xml:63
-#, no-c-format
-msgid ""
-"The event producer may obtain an <emphasis>event notifier</emphasis> object "
-"by injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:66
-#, no-c-format
-msgid "<![CDATA[@Observable Event<Document> documentEvent]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:68
-#, no-c-format
-msgid ""
-"The <literal>@Observable</literal> annotation implicitly defines a Web Bean "
-"with scope <literal>@Dependent</literal> and deployment type "
-"<literal>@Standard</literal>, with an implementation provided by the Web "
-"Bean manager."
-msgstr ""
-
-#. Tag: para
-#: events.xml:72
-#, no-c-format
-msgid ""
-"A producer raises events by calling the <literal>fire()</literal> method of "
-"the <literal>Event</literal> interface, passing an <emphasis>event object</"
-"emphasis>:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:75
-#, no-c-format
-msgid "<![CDATA[documentEvent.fire(document);]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:77
-#, no-c-format
-msgid ""
-"An event object may be an instance of any Java class that has no type "
-"variables or wildcard type parameters. The event will be delivered to every "
-"observer method that:"
-msgstr ""
-
-#. Tag: para
-#: events.xml:83 events.xml:107 events.xml:126
-#, no-c-format
-msgid "has an event parameter to which the event object is assignable, and"
-msgstr ""
-
-#. Tag: para
-#: events.xml:86
-#, no-c-format
-msgid "specifies no event bindings."
-msgstr ""
-
-#. Tag: para
-#: events.xml:90
-#, no-c-format
-msgid ""
-"The Web Bean manager simply calls all the observer methods, passing the "
-"event object as the value of the event parameter. If any observer method "
-"throws an exception, the Web Bean manager stops calling observer methods, "
-"and the exception is rethrown by the <literal>fire()</literal> method."
-msgstr ""
-
-#. Tag: para
-#: events.xml:95
-#, no-c-format
-msgid ""
-"To specify a \"selector\", the event producer may pass an instance of the "
-"event binding type to the <literal>fire()</literal> method:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:98
-#, no-c-format
-msgid ""
-"<![CDATA[documentEvent.fire( document, new AnnotationLiteral<Updated>()"
-"{} );]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:100
-#, no-c-format
-msgid ""
-"The helper class <literal>AnnotationLiteral</literal> makes it possible to "
-"instantiate binding types inline, since this is otherwise difficult to do in "
-"Java."
-msgstr ""
-
-#. Tag: para
-#: events.xml:103
-#, no-c-format
-msgid "The event will be delivered to every observer method that:"
-msgstr ""
-
-#. Tag: para
-#: events.xml:110
-#, no-c-format
-msgid ""
-"does not specify any event binding <emphasis>except</emphasis> for the event "
-"bindings passed to <literal>fire()</literal>."
-msgstr ""
-
-#. Tag: para
-#: events.xml:115
-#, no-c-format
-msgid ""
-"Alternatively, event bindings may be specified by annotating the event "
-"notifier injection point:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:118
-#, no-c-format
-msgid "<![CDATA[@Observable @Updated Event<Document> documentUpdatedEvent]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:120
-#, no-c-format
-msgid ""
-"Then every event fired via this instance of <literal>Event</literal> has the "
-"annotated event binding. The event will be delivered to every observer "
-"method that:"
-msgstr ""
-
-#. Tag: para
-#: events.xml:129
-#, no-c-format
-msgid ""
-"does not specify any event binding <emphasis>except</emphasis> for the event "
-"bindings passed to <literal>fire()</literal> or the annotated event bindings "
-"of the event notifier injection point."
-msgstr ""
-
-#. Tag: title
-#: events.xml:138
-#, no-c-format
-msgid "Registering observers dynamically"
-msgstr ""
-
-#. Tag: para
-#: events.xml:140
-#, no-c-format
-msgid ""
-"It's often useful to register an event observer dynamically. The application "
-"may implement the <literal>Observer</literal> interface and register an "
-"instance with an event notifier by calling the <literal>observe()</literal> "
-"method."
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:144
-#, no-c-format
-msgid ""
-"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
-"(Document doc) { ... } } );]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:146
-#, no-c-format
-msgid ""
-"Event binding types may be specified by the event notifier injection point "
-"or by passing event binding type instances to the <literal>observe()</"
-"literal> method:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:149
-#, no-c-format
-msgid ""
-"<![CDATA[documentEvent.observe( new Observer<Document>() { public void notify"
-"(Document doc) { ... } }, \n"
-"                                                new "
-"AnnotationLiteral<Updated>(){} );]]>"
-msgstr ""
-
-#. Tag: title
-#: events.xml:154
-#, no-c-format
-msgid "Event bindings with members"
-msgstr ""
-
-#. Tag: para
-#: events.xml:156
-#, no-c-format
-msgid "An event binding type may have annotation members:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:158
-#, no-c-format
-msgid ""
-"<![CDATA[@BindingType\n"
-"@Target({PARAMETER, FIELD})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Role {\n"
-"    RoleType value();\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:160
-#, no-c-format
-msgid ""
-"The member value is used to narrow the messages delivered to the observer:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:162
-#, no-c-format
-msgid ""
-"<![CDATA[public void adminLoggedIn(@Observes @Role(ADMIN) LoggedIn event) "
-"{ ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:164
-#, no-c-format
-msgid ""
-"Event binding type members may be specified statically by the event "
-"producer, via annotations at the event notifier injection point:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:167
-#, no-c-format
-msgid "<![CDATA[@Observable @Role(ADMIN) Event<LoggedIn> LoggedInEvent;}}]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:169
-#, no-c-format
-msgid ""
-"Alternatively, the value of the event binding type member may be determined "
-"dynamically by the event producer. We start by writing an abstract subclass "
-"of <literal>AnnotationLiteral</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:172
-#, no-c-format
-msgid ""
-"<![CDATA[abstract class RoleBinding \n"
-"    extends AnnotationLiteral<Role> \n"
-"    implements Role {}]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:174
-#, no-c-format
-msgid ""
-"The event producer passes an instance of this class to <literal>fire()</"
-"literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:176
-#, no-c-format
-msgid ""
-"<![CDATA[documentEvent.fire( document, new RoleBinding() { public void value"
-"() { return user.getRole(); } } );]]>"
-msgstr ""
-
-#. Tag: title
-#: events.xml:181
-#, no-c-format
-msgid "Multiple event bindings"
-msgstr ""
-
-#. Tag: para
-#: events.xml:183
-#, no-c-format
-msgid "Event binding types may be combined, for example:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:185
-#, no-c-format
-msgid ""
-"<![CDATA[@Observable @Blog Event<Document> blogEvent;\n"
-"...\n"
-"if (document.isBlog()) blogEvent.fire(document, new "
-"AnnotationLiteral<Updated>(){});]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:187
-#, no-c-format
-msgid ""
-"When this event occurs, all of the following observer methods will be "
-"notified:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:189
-#, no-c-format
-msgid ""
-"<![CDATA[public void afterBlogUpdate(@Observes @Updated @Blog Document "
-"document) { ... }]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:191
-#, no-c-format
-msgid ""
-"<![CDATA[public void onAnyBlogEvent(@Observes @Blog Document document) "
-"{ ... }]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:192
-#, no-c-format
-msgid ""
-"<![CDATA[public void onAnyDocumentEvent(@Observes Document document) "
-"{ ... }}}]]>"
-msgstr ""
-
-#. Tag: title
-#: events.xml:197
-#, no-c-format
-msgid "Transactional observers"
-msgstr ""
-
-#. Tag: para
-#: events.xml:199
-#, no-c-format
-msgid ""
-"Transactional observers receive their event notifications during the before "
-"or after completion phase of the transaction in which the event was raised. "
-"For example, the following observer method needs to refresh a query result "
-"set that is cached in the application context, but only when transactions "
-"that update the <literal>Category</literal> tree succeed:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:205
-#, no-c-format
-msgid ""
-"<![CDATA[public void refreshCategoryTree(@AfterTransactionSuccess @Observes "
-"CategoryUpdateEvent event) { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:207
-#, no-c-format
-msgid "There are three kinds of transactional observers:"
-msgstr ""
-
-#. Tag: para
-#: events.xml:211
-#, no-c-format
-msgid ""
-"<literal>@AfterTransactionSuccess</literal> observers are called during the "
-"after completion phase of the transaction, but only if the transaction "
-"completes successfully"
-msgstr ""
-
-#. Tag: para
-#: events.xml:216
-#, no-c-format
-msgid ""
-"<literal>@AfterTransactionFailure</literal> observers are called during the "
-"after completion phase of the transaction, but only if the transaction fails "
-"to complete successfully"
-msgstr ""
-
-#. Tag: para
-#: events.xml:221
-#, no-c-format
-msgid ""
-"<literal>@AfterTransactionCompletion</literal> observers are called during "
-"the after completion phase of the transaction"
-msgstr ""
-
-#. Tag: para
-#: events.xml:225
-#, no-c-format
-msgid ""
-"<literal>@BeforeTransactionCompletion</literal> observers are called during "
-"the before completion phase of the transaction"
-msgstr ""
-
-#. Tag: para
-#: events.xml:230
-#, no-c-format
-msgid ""
-"Transactional observers are very important in a stateful object model like "
-"Web Beans, because state is often held for longer than a single atomic "
-"transaction."
-msgstr ""
-
-#. Tag: para
-#: events.xml:233
-#, no-c-format
-msgid ""
-"Imagine that we have cached a JPA query result set in the application scope:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:235
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped @Singleton\n"
-"public class Catalog {\n"
-"\n"
-"    @PersistenceContext EntityManager em;\n"
-"    \n"
-"    List<Product> products;\n"
-"\n"
-"    @Produces @Catalog \n"
-"    List<Product> getCatalog() {\n"
-"        if (products==null) {\n"
-"            products = em.createQuery(\"select p from Product p where p."
-"deleted = false\")\n"
-"                .getResultList();\n"
-"        }\n"
-"        return products;\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:237
-#, no-c-format
-msgid ""
-"From time to time, a <literal>Product</literal> is created or deleted. When "
-"this occurs, we need to refresh the <literal>Product</literal> catalog. But "
-"we should wait until <emphasis>after</emphasis> the transaction completes "
-"successfully before performing this refresh!"
-msgstr ""
-
-#. Tag: para
-#: events.xml:242
-#, no-c-format
-msgid ""
-"The Web Bean that creates and deletes <literal>Product</literal>s could "
-"raise events, for example:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:245
-#, no-c-format
-msgid ""
-"<![CDATA[@Stateless\n"
-"public class ProductManager {\n"
-"\n"
-"    @PersistenceContext EntityManager em;\n"
-"    @Observable Event<Product> productEvent;\n"
-"\n"
-"    public void delete(Product product) {\n"
-"        em.delete(product);\n"
-"        productEvent.fire(product, new AnnotationLiteral<Deleted>(){});\n"
-"    }\n"
-"    \n"
-"    public void persist(Product product) {\n"
-"        em.persist(product);\n"
-"        productEvent.fire(product, new AnnotationLiteral<Created>(){});\n"
-"    }\n"
-"    \n"
-"    ...\n"
-"    \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: events.xml:247
-#, no-c-format
-msgid ""
-"And now <literal>Catalog</literal> can observe the events after successful "
-"completion of the transaction:"
-msgstr ""
-
-#. Tag: programlisting
-#: events.xml:250
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped @Singleton\n"
-"public class Catalog {\n"
-"\n"
-"    ...\n"
-"    \n"
-"    void addProduct(@AfterTransactionSuccess @Observes @Created Product "
-"product) {\n"
-"        products.add(product);\n"
-"    }\n"
-"    \n"
-"    void addProduct(@AfterTransactionSuccess @Observes @Deleted Product "
-"product) {\n"
-"        products.remove(product);\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/example.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/example.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/example.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,235 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-23 17:55+0800\n"
-"Last-Translator: Sean Wu <alartin at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: example.xml:4
-#, no-c-format
-msgid "JSF web application example"
-msgstr "JSF Web应用例子"
-
-#. Tag: para
-#: example.xml:6
-#, no-c-format
-msgid "Let's illustrate these ideas with a full example. We're going to implement user login/logout for an application that uses JSF. First, we'll define a Web Bean to hold the username and password entered during login:"
-msgstr "让我们通过一个完整的例子来演示这些想法。我们将是使用JSF来实现一个应用的用户登录/退出功能。首先,我们定一个Web Bean来持有登录过程中用户输入的用户名和密码:"
-
-#. Tag: programlisting
-#: example.xml:11
-#, no-c-format
-msgid ""
-"<![CDATA[@Named\n"
-"public class Credentials {\n"
-"        \n"
-"    private String username;\n"
-"    private String password;\n"
-"    \n"
-"    public String getUsername() { return username; }\n"
-"    public void setUsername(String username) { this.username = username; }\n"
-"    \n"
-"    public String getPassword() { return password; }\n"
-"    public void setPassword(String password) { this.password = password; }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Named\n"
-"public class Credentials {\n"
-"        \n"
-"    private String username;\n"
-"    private String password;\n"
-"    \n"
-"    public String getUsername() { return username; }\n"
-"    public void setUsername(String username) { this.username = username; }\n"
-"    \n"
-"    public String getPassword() { return password; }\n"
-"    public void setPassword(String password) { this.password = password; }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: example.xml:13
-#, no-c-format
-msgid "This Web Bean is bound to the login prompt in the following JSF form:"
-msgstr "这个Web Bean和下面的JSF表单的login绑定:"
-
-#. Tag: programlisting
-#: example.xml:15
-#, no-c-format
-msgid ""
-"<![CDATA[<f:form>\n"
-"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
-"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
-"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
-"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
-"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
-"    </h:panelGrid>\n"
-"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!login.loggedIn}\"/>\n"
-"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#{login.loggedIn}\"/>\n"
-"</f:form]]>"
-msgstr ""
-"<![CDATA[<f:form>\n"
-"    <h:panelGrid columns=\"2\" rendered=\"#{!login.loggedIn}\">\n"
-"        <h:outputLabel for=\"username\">Username:</h:outputLabel>\n"
-"        <h:inputText id=\"username\" value=\"#{credentials.username}\"/>\n"
-"        <h:outputLabel for=\"password\">Password:</h:outputLabel>\n"
-"        <h:inputText id=\"password\" value=\"#{credentials.password}\"/>\n"
-"    </h:panelGrid>\n"
-"    <h:commandButton value=\"Login\" action=\"#{login.login}\" rendered=\"#{!login.loggedIn}\"/>\n"
-"    <h:commandButton value=\"Logout\" acion=\"#{login.logout}\" rendered=\"#{login.loggedIn}\"/>\n"
-"</f:form]]>"
-
-#. Tag: para
-#: example.xml:17
-#, no-c-format
-msgid "The actual work is done by a session scoped Web Bean that maintains information about the currently logged-in user and exposes the <literal>User</literal> entity to other Web Beans:"
-msgstr "实际的工作由一个会话范围的Web Bean完成。这个会话范围的Web Bean维护当前登录用户的信息,并且将<literal>User</literal>实体暴露给其他Web Bean:"
-
-#. Tag: programlisting
-#: example.xml:21
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped @Named\n"
-"public class Login {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @PersistenceContext EntityManager userDatabase;\n"
-"\n"
-"    private User user;\n"
-"    \n"
-"    public void login() {\n"
-"            \n"
-"        List<User> results = userDatabase.createQuery(\n"
-"           \"select u from User u where u.username=:username and u.password=:password\")\n"
-"           .setParameter(\"username\", credentials.getUsername())\n"
-"           .setParameter(\"password\", credentials.getPassword())\n"
-"           .getResultList();\n"
-"        \n"
-"        if ( !results.isEmpty() ) {\n"
-"           user = results.get(0);\n"
-"        }\n"
-"        \n"
-"    }\n"
-"    \n"
-"    public void logout() {\n"
-"        user = null;\n"
-"    }\n"
-"    \n"
-"    public boolean isLoggedIn() {\n"
-"       return user!=null;\n"
-"    }\n"
-"    \n"
-"    @Produces @LoggedIn User getCurrentUser() {\n"
-"        return user;\n"
-"    }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@SessionScoped @Named\n"
-"public class Login {\n"
-"\n"
-"    @Current Credentials credentials;\n"
-"    @PersistenceContext EntityManager userDatabase;\n"
-"\n"
-"    private User user;\n"
-"    \n"
-"    public void login() {\n"
-"            \n"
-"        List<User> results = userDatabase.createQuery(\n"
-"           \"select u from User u where u.username=:username and u.password=:password\")\n"
-"           .setParameter(\"username\", credentials.getUsername())\n"
-"           .setParameter(\"password\", credentials.getPassword())\n"
-"           .getResultList();\n"
-"        \n"
-"        if ( !results.isEmpty() ) {\n"
-"           user = results.get(0);\n"
-"        }\n"
-"        \n"
-"    }\n"
-"    \n"
-"    public void logout() {\n"
-"        user = null;\n"
-"    }\n"
-"    \n"
-"    public boolean isLoggedIn() {\n"
-"       return user!=null;\n"
-"    }\n"
-"    \n"
-"    @Produces @LoggedIn User getCurrentUser() {\n"
-"        return user;\n"
-"    }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: example.xml:23
-#, no-c-format
-msgid "Of course, <literal>@LoggedIn</literal> is a binding annotation:"
-msgstr "当然, <literal>@LoggedIn</literal>是一个绑定注释:"
-
-#. Tag: programlisting
-#: example.xml:25
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD})\n"
-"@BindingType\n"
-"public @interface LoggedIn {}]]>"
-msgstr ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD})\n"
-"@BindingType\n"
-"public @interface LoggedIn {}]]>"
-
-#. Tag: para
-#: example.xml:27
-#, no-c-format
-msgid "Now, any other Web Bean can easily inject the current user:"
-msgstr "现在,任何其他的Web Bean可以轻松地将当前用户注入:"
-
-#. Tag: programlisting
-#: example.xml:29
-#, no-c-format
-msgid ""
-"<![CDATA[public class DocumentEditor {\n"
-"\n"
-"    @Current Document document;\n"
-"    @LoggedIn User currentUser;\n"
-"    @PersistenceContext EntityManager docDatabase;\n"
-"    \n"
-"    public void save() {\n"
-"        document.setCreatedBy(currentUser);\n"
-"        docDatabase.persist(document);\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class DocumentEditor {\n"
-"\n"
-"    @Current Document document;\n"
-"    @LoggedIn User currentUser;\n"
-"    @PersistenceContext EntityManager docDatabase;\n"
-"    \n"
-"    public void save() {\n"
-"        document.setCreatedBy(currentUser);\n"
-"        docDatabase.persist(document);\n"
-"    }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: example.xml:31
-#, no-c-format
-msgid "Hopefully, this example gives a flavor of the Web Bean programming model. In the next chapter, we'll explore Web Beans dependency injection in greater depth."
-msgstr "希望这个例子能够让你尝试了Web Bean的编程模型。在下一章中,我们将更加深入的研究Web Bean的依赖注入。"
-

Deleted: doc/trunk/reference/zh-CN/modules/extend.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/extend.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/extend.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,252 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: extend.xml:4
-#, no-c-format
-msgid "Extending Web Beans"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:6
-#, no-c-format
-msgid ""
-"Web Beans is intended to be a platform for frameworks, extensions and "
-"integration with other technologies. Therefore, Web Beans exposes a set of "
-"SPIs for the use of developers of portable extensions to Web Beans. For "
-"example, the following kinds of extensions were envisaged by the designers "
-"of Web Beans:"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:14
-#, no-c-format
-msgid "integration with Business Process Management engines,"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:17
-#, no-c-format
-msgid ""
-"integration with third-party frameworks such as Spring, Seam, GWT or Wicket, "
-"and"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:21
-#, no-c-format
-msgid "new technology based upon the Web Beans programming model."
-msgstr ""
-
-#. Tag: para
-#: extend.xml:25
-#, no-c-format
-msgid ""
-"The nerve center for extending Web Beans is the <literal>Manager</literal> "
-"object."
-msgstr ""
-
-#. Tag: title
-#: extend.xml:29
-#, no-c-format
-msgid "The <literal>Manager</literal> object"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:31
-#, no-c-format
-msgid ""
-"The <literal>Manager</literal> interface lets us register and obtain Web "
-"Beans, interceptors, decorators, observers and contexts programatically."
-msgstr ""
-
-#. Tag: programlisting
-#: extend.xml:34
-#, no-c-format
-msgid ""
-"<![CDATA[public interface Manager\n"
-"{\n"
-"\n"
-"   public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... "
-"bindings);\n"
-"\n"
-"   public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> T getInstanceByType(Class<T> type, Annotation... bindings);\n"
-"\n"
-"   public <T> T getInstanceByType(TypeLiteral<T> type,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public Set<Bean<?>> resolveByName(String name);\n"
-"\n"
-"   public Object getInstanceByName(String name);\n"
-"\n"
-"   public <T> T getInstance(Bean<T> bean);\n"
-"\n"
-"   public void fireEvent(Object event, Annotation... bindings);\n"
-"\n"
-"   public Context getContext(Class<? extends Annotation> scopeType);\n"
-"\n"
-"   public Manager addContext(Context context);\n"
-"\n"
-"   public Manager addBean(Bean<?> bean);\n"
-"\n"
-"   public Manager addInterceptor(Interceptor interceptor);\n"
-"\n"
-"   public Manager addDecorator(Decorator decorator);\n"
-"\n"
-"   public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> "
-"eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager removeObserver(Observer<T> observer, Class<T> "
-"eventType,\n"
-"         Annotation... bindings);\n"
-"\n"
-"   public <T> Manager removeObserver(Observer<T> observer,\n"
-"         TypeLiteral<T> eventType, Annotation... bindings);\n"
-"\n"
-"   public <T> Set<Observer<T>> resolveObservers(T event, Annotation... "
-"bindings);\n"
-"\n"
-"   public List<Interceptor> resolveInterceptors(InterceptionType type,\n"
-"         Annotation... interceptorBindings);\n"
-"\n"
-"   public List<Decorator> resolveDecorators(Set<Class<?>> types,\n"
-"         Annotation... bindings);\n"
-"\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:36
-#, no-c-format
-msgid "We can obtain an instance of <literal>Manager</literal> via injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: extend.xml:38
-#, no-c-format
-msgid "@Current Manager manager"
-msgstr ""
-
-#. Tag: title
-#: extend.xml:43
-#, no-c-format
-msgid "The <literal>Bean</literal> class"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:45
-#, no-c-format
-msgid ""
-"Instances of the abstract class <literal>Bean</literal> represent Web Beans. "
-"There is an instance of <literal>Bean</literal> registered with the "
-"<literal>Manager</literal> object for every Web Bean in the application."
-msgstr ""
-
-#. Tag: programlisting
-#: extend.xml:50
-#, no-c-format
-msgid ""
-"public abstract class Bean&lt;T&gt; {\n"
-"    \n"
-"    private final Manager manager;\n"
-"    \n"
-"    protected Bean(Manager manager) {\n"
-"        this.manager=manager;\n"
-"    }\n"
-"    \n"
-"    protected Manager getManager() {\n"
-"        return manager;\n"
-"    }\n"
-"    \n"
-"    public abstract Set&lt;Class&gt; getTypes();\n"
-"    public abstract Set&lt;Annotation&gt; getBindingTypes();\n"
-"    public abstract Class&lt;? extends Annotation&gt; getScopeType();\n"
-"    public abstract Class&lt;? extends Annotation&gt; getDeploymentType(); \n"
-"    public abstract String getName();\n"
-"    \n"
-"    public abstract boolean isSerializable();\n"
-"    public abstract boolean isNullable();\n"
-"\n"
-"    public abstract T create();\n"
-"    public abstract void destroy(T instance);\n"
-"    \n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:52
-#, no-c-format
-msgid ""
-"It's possible to extend the <literal>Bean</literal> class and register "
-"instances by calling <literal>Manager.addBean()</literal> to provide support "
-"for new kinds of Web Beans, beyond those defined by the Web Beans "
-"specification (simple and enterprise Web Beans, producer methods and JMS "
-"endpoints). For example, we could use the <literal>Bean</literal> class to "
-"allow objects managed by another framework to be injected into Web Beans."
-msgstr ""
-
-#. Tag: para
-#: extend.xml:60
-#, no-c-format
-msgid ""
-"There are two subclasses of <literal>Bean</literal> defined by the Web Beans "
-"specification: <literal>Interceptor</literal> and <literal>Decorator</"
-"literal>."
-msgstr ""
-
-#. Tag: title
-#: extend.xml:67
-#, no-c-format
-msgid "The <literal>Context</literal> interface"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:69
-#, no-c-format
-msgid ""
-"The <literal>Context</literal> interface supports addition of new scopes to "
-"Web Beans, or extension of the built-in scopes to new environments."
-msgstr ""
-
-#. Tag: programlisting
-#: extend.xml:72
-#, no-c-format
-msgid ""
-"public interface Context {\n"
-"    \n"
-"    public Class&lt;? extends Annotation&gt; getScopeType();\n"
-"    \n"
-"    public &lt;T&gt; T get(Bean&lt;T&gt; bean, boolean create);\n"
-"    \n"
-"    boolean isActive();\n"
-"    \n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: extend.xml:74
-#, no-c-format
-msgid ""
-"For example, we might implement <literal>Context</literal> to add a business "
-"process scope to Web Beans, or to add support for the conversation scope to "
-"an application that uses Wicket."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/injection.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/injection.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/injection.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,1226 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: injection.xml:4
-#, no-c-format
-msgid "Dependency injection"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:6
-#, no-c-format
-msgid "Web Beans supports three primary mechanisms for dependency injection:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:8
-#, no-c-format
-msgid "Constructor parameter injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:10
-#, no-c-format
-msgid ""
-"<![CDATA[public class Checkout {\n"
-"        \n"
-"    private final ShoppingCart cart;\n"
-"    \n"
-"    @Initializer\n"
-"    public Checkout(ShoppingCart cart) {\n"
-"        this.cart = cart;\n"
-"    }\n"
-"\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:12
-#, no-c-format
-msgid "<emphasis>Initializer</emphasis> method parameter injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:14
-#, no-c-format
-msgid ""
-"<![CDATA[public class Checkout {\n"
-"        \n"
-"    private ShoppingCart cart;\n"
-"\n"
-"    @Initializer \n"
-"    void setShoppingCart(ShoppingCart cart) {\n"
-"        this.cart = cart;\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:16
-#, no-c-format
-msgid "And direct field injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:18
-#, no-c-format
-msgid ""
-"<![CDATA[public class Checkout {\n"
-"\n"
-"    private @Current ShoppingCart cart;\n"
-"    \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:20
-#, no-c-format
-msgid ""
-"Dependency injection always occurs when the Web Bean instance is first "
-"instantiated."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:25
-#, no-c-format
-msgid ""
-"First, the Web Bean manager calls the Web Bean constructor, to obtain an "
-"instance of the Web Bean."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:29
-#, no-c-format
-msgid ""
-"Next, the Web Bean manager initializes the values of all injected fields of "
-"the Web Bean."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:33
-#, no-c-format
-msgid "Next, the Web Bean manager calls all initializer methods of Web Bean."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:37
-#, no-c-format
-msgid ""
-"Finally, the <literal>@PostConstruct</literal> method of the Web Bean, if "
-"any, is called."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:42
-#, no-c-format
-msgid ""
-"Constructor parameter injection is not supported for EJB beans, since the "
-"EJB is instantiated by the EJB container, not the Web Bean manager."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:45
-#, no-c-format
-msgid ""
-"Parameters of constructors and initializer methods need not be explicitly "
-"annotated when the default binding type <literal>@Current</literal> applies. "
-"Injected fields, however, <emphasis>must</emphasis> specify a binding type, "
-"even when the default binding type applies. If the field does not specify a "
-"binding type, it will not be injected."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:51
-#, no-c-format
-msgid "Producer methods also support parameter injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:53
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces Checkout createCheckout(ShoppingCart cart) {\n"
-"    return new Checkout(cart);\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:55
-#, no-c-format
-msgid ""
-"Finally, observer methods (which we'll meet in <xref linkend=\"events\"/>), "
-"disposal methods and destructor methods all support parameter injection."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:58
-#, no-c-format
-msgid ""
-"The Web Beans specification defines a procedure, called the "
-"<emphasis>typesafe resolution algorithm</emphasis>, that the Web Bean "
-"manager follows when identifying the Web Bean to inject to an injection "
-"point. This algorithm looks complex at first, but once you understand it, "
-"it's really quite intuitive. Typesafe resolution is performed at system "
-"initialization time, which means that the manager will inform the user "
-"immediately if a Web Bean's dependencies cannot be satisfied, by throwing a "
-"<literal>UnsatisfiedDependencyException</literal> or "
-"<literal>AmbiguousDependencyException</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:67
-#, no-c-format
-msgid ""
-"The purpose of this algorithm is to allow multiple Web Beans to implement "
-"the same API type and either:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:72
-#, no-c-format
-msgid ""
-"allow the client to select which implementation it requires using "
-"<emphasis>binding annotations</emphasis>,"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:77
-#, no-c-format
-msgid ""
-"allow the application deployer to select which implementation is appropriate "
-"for a particular deployment, without changes to the client, by enabling or "
-"disabling <emphasis>deployment types</emphasis>, or"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:82
-#, no-c-format
-msgid ""
-"allow one implementation of an API to override another implementation of the "
-"same API at deployment time, without changes to the client, using "
-"<emphasis>deployment type precedence</emphasis>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:88
-#, no-c-format
-msgid ""
-"Let's explore how the Web Beans manager determines a Web Bean to be injected."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:91
-#, no-c-format
-msgid "Binding annotations"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:93
-#, no-c-format
-msgid ""
-"If we have more than one Web Bean that implements a particular API type, the "
-"injection point can specify exactly which Web Bean should be injected using "
-"a binding annotation. For example, there might be two implementations of "
-"<literal>PaymentProcessor</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:98
-#, no-c-format
-msgid ""
-"<![CDATA[@PayByCheque\n"
-"public class ChequePaymentProcessor implements PaymentProcessor {\n"
-"    public void process(Payment payment) { ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:100
-#, no-c-format
-msgid ""
-"<![CDATA[@PayByCreditCard\n"
-"public class CreditCardPaymentProcessor implements PaymentProcessor {\n"
-"    public void process(Payment payment) { ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:102
-#, no-c-format
-msgid ""
-"Where <literal>@PayByCheque</literal> and <literal>@PayByCreditCard</"
-"literal> are binding annotations:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:105
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayByCheque {}]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:107
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayByCreditCard {}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:109
-#, no-c-format
-msgid ""
-"A client Web Bean developer uses the binding annotation to specify exactly "
-"which Web Bean should be injected."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:112
-#, no-c-format
-msgid "Using field injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:114
-#, no-c-format
-msgid ""
-"<![CDATA[@PayByCheque PaymentProcessor chequePaymentProcessor;\n"
-"@PayByCreditCard PaymentProcessor creditCardPaymentProcessor;]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:116
-#, no-c-format
-msgid "Using initializer method injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:118
-#, no-c-format
-msgid ""
-"<![CDATA[@Initializer\n"
-"public void setPaymentProcessors(@PayByCheque PaymentProcessor "
-"chequePaymentProcessor, \n"
-"                                 @PayByCreditCard PaymentProcessor "
-"creditCardPaymentProcessor) {\n"
-"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
-"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:120
-#, no-c-format
-msgid "Or using constructor injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:122
-#, no-c-format
-msgid ""
-"<![CDATA[@Initializer\n"
-"public Checkout(@PayByCheque PaymentProcessor chequePaymentProcessor, \n"
-"                @PayByCreditCard PaymentProcessor "
-"creditCardPaymentProcessor) {\n"
-"   this.chequePaymentProcessor = chequePaymentProcessor;\n"
-"   this.creditCardPaymentProcessor = creditCardPaymentProcessor;\n"
-"}]]>"
-msgstr ""
-
-#. Tag: title
-#: injection.xml:125
-#, no-c-format
-msgid "Binding annotations with members"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:127
-#, no-c-format
-msgid "Binding annotations may have members:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:129
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"@BindingType\n"
-"public @interface PayBy {\n"
-"    PaymentType value();\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:131
-#, no-c-format
-msgid "In which case, the member value is significant:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:133
-#, no-c-format
-msgid ""
-"<![CDATA[@PayBy(CHEQUE) PaymentProcessor chequePaymentProcessor;\n"
-"@PayBy(CREDIT_CARD) PaymentProcessor creditCardPaymentProcessor;]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:135
-#, no-c-format
-msgid ""
-"You can tell the Web Bean manager to ignore a member of a binding annotation "
-"type by annotating the member <literal>@NonBinding</literal>."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:141
-#, no-c-format
-msgid "Combinations of binding annnotations"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:143
-#, no-c-format
-msgid "An injection point may even specify multiple binding annotations:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:145
-#, no-c-format
-msgid ""
-"<![CDATA[@Asynchronous @PayByCheque PaymentProcessor paymentProcessor]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:147
-#, no-c-format
-msgid ""
-"In this case, only a Web Bean which has <emphasis>both</emphasis> binding "
-"annotations would be eligible for injection."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:153
-#, no-c-format
-msgid "Binding annotations and producer methods"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:155
-#, no-c-format
-msgid "Even producer methods may specify binding annotations:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:157
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces \n"
-"@Asynchronous @PayByCheque \n"
-"PaymentProcessor createAsyncPaymentProcessor(@PayByCheque PaymentProcessor "
-"processor) {\n"
-"    return new AsynchronousPaymentProcessor(processor);\n"
-"}]]>"
-msgstr ""
-
-#. Tag: title
-#: injection.xml:162
-#, no-c-format
-msgid "The default binding type"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:164
-#, no-c-format
-msgid ""
-"Web Beans defines a binding type <literal>@Current</literal> that is the "
-"default binding type for any injection point or Web Bean that does not "
-"explicitly specify a binding type."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:168
-#, no-c-format
-msgid ""
-"There are two common circumstances in which it is necessary to explicitly "
-"specify <literal>@Current</literal>:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:173
-#, no-c-format
-msgid ""
-"on a field, in order to declare it as an injected field with the default "
-"binding type, and"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:177
-#, no-c-format
-msgid ""
-"on a Web Bean which has another binding type in addition to the default "
-"binding type."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:187
-#, no-c-format
-msgid "Deployment types"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:189
-#, no-c-format
-msgid ""
-"All Web Beans have a <emphasis>deployment type</emphasis>. Each deployment "
-"type identifies a set of Web Beans that should be conditionally installed in "
-"some deployments of the system."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:193
-#, no-c-format
-msgid ""
-"For example, we could define a deployment type named <literal>@Mock</"
-"literal>, which would identify Web Beans that should only be installed when "
-"the system executes inside an integration testing environment:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:197
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"  @Target({TYPE, METHOD})\n"
-"  @DeploymentType\n"
-"  public @interface Mock {}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:199
-#, no-c-format
-msgid ""
-"Suppose we had some Web Bean that interacted with an external system to "
-"process payments:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:202
-#, no-c-format
-msgid ""
-"<![CDATA[public class ExternalPaymentProcessor {\n"
-"        \n"
-"    public void process(Payment p) {\n"
-"        ...\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:204
-#, no-c-format
-msgid ""
-"Since this Web Bean does not explicitly specify a deployment type, it has "
-"the default deployment type <literal>@Production</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:207
-#, no-c-format
-msgid ""
-"For integration or unit testing, the external system is slow or unavailable. "
-"So we would create a mock object:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:210
-#, no-c-format
-msgid ""
-"<![CDATA[@Mock \n"
-"public class MockPaymentProcessor implements PaymentProcessor {\n"
-"\n"
-"    @Override\n"
-"    public void process(Payment p) {\n"
-"        p.setSuccessful(true);\n"
-"    }\n"
-"\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:212
-#, no-c-format
-msgid ""
-"But how does the Web Bean manager determine which implementation to use in a "
-"particular deployment?"
-msgstr ""
-
-#. Tag: title
-#: injection.xml:216
-#, no-c-format
-msgid "Enabling deployment types"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:218
-#, no-c-format
-msgid ""
-"Web Beans defines two built-in deployment types: <literal>@Production</"
-"literal> and <literal>@Standard</literal>. By default, only Web Beans with "
-"the built-in deployment types are enabled when the system is deployed. We "
-"can identify additional deployment types to be enabled in a particular "
-"deployment by listing them in <literal>web-beans.xml</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:224
-#, no-c-format
-msgid ""
-"Going back to our example, when we deploy our integration tests, we want all "
-"our <literal>@Mock</literal> objects to be installed:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:227
-#, no-c-format
-msgid ""
-"<![CDATA[<WebBeans>\n"
-"    <Deploy>\n"
-"        <Standard/>\n"
-"        <Production/>\n"
-"        <test:Mock/>\n"
-"    </Deploy>\n"
-"</WebBeans>]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:229
-#, no-c-format
-msgid ""
-"Now the Web Bean manager will identify and install all Web Beans annotated "
-"<literal>@Production</literal>, <literal>@Standard</literal> or "
-"<literal>@Mock</literal> at deployment time."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:233
-#, no-c-format
-msgid ""
-"The deployment type <literal>@Standard</literal> is used only for certain "
-"special Web Beans defined by the Web Beans specification. We can't use it "
-"for our own Web Beans, and we can't disable it."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:237
-#, no-c-format
-msgid ""
-"The deployment type <literal>@Production</literal> is the default deployment "
-"type for Web Beans which don't explicitly declare a deployment type, and may "
-"be disabled."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:244
-#, no-c-format
-msgid "Deployment type precedence"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:246
-#, no-c-format
-msgid ""
-"If you've been paying attention, you're probably wondering how the Web Bean "
-"manager decides which implementation&#151;<literal>ExternalPaymentProcessor</"
-"literal> or <literal>MockPaymentProcessor</literal>&#151;to choose. Consider "
-"what happens when the manager encounters this injection point:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:251
-#, no-c-format
-msgid "<![CDATA[@Current PaymentProcessor paymentProcessor]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:253
-#, no-c-format
-msgid ""
-"There are now two Web Beans which satisfy the <literal>PaymentProcessor</"
-"literal> contract. Of course, we can't use a binding annotation to "
-"disambiguate, since binding annotations are hard-coded into the source at "
-"the injection point, and we want the manager to be able to decide at "
-"deployment time!"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:258
-#, no-c-format
-msgid ""
-"The solution to this problem is that each deployment type has a different "
-"<emphasis>precedence</emphasis>. The precedence of the deployment types is "
-"determined by the order in which they appear in <literal>web-beans.xml</"
-"literal>. In our example, <literal>@Mock</literal> appears later than "
-"<literal>@Production</literal> so it has a higher precedence."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:264
-#, no-c-format
-msgid ""
-"Whenever the manager discovers that more than one Web Bean could satisfy the "
-"contract (API type plus binding annotations) specified by an injection "
-"point, it considers the relative precedence of the Web Beans. If one has a "
-"higher precedence than the others, it chooses the higher precedence Web Bean "
-"to inject. So, in our example, the Web Bean manager will inject "
-"<literal>MockPaymentProcessor</literal> when executing in our integration "
-"testing environment (which is exactly what we want)."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:271
-#, no-c-format
-msgid ""
-"It's interesting to compare this facility to today's popular manager "
-"architectures. Various \"lightweight\" containers also allow conditional "
-"deployment of classes that exist in the classpath, but the classes that are "
-"to be deployed must be explicity, individually, listed in configuration code "
-"or in some XML configuration file. Web Beans does support Web Bean "
-"definition and configuration via XML, but in the common case where no "
-"complex configuration is required, deployment types allow a whole set of Web "
-"Beans to be enabled with a single line of XML. Meanwhile, a developer "
-"browsing the code can easily identify what deployment scenarios the Web Bean "
-"will be used in."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:284
-#, no-c-format
-msgid "Example deployment types"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:286
-#, no-c-format
-msgid ""
-"Deployment types are useful for all kinds of things, here's some examples:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:290
-#, no-c-format
-msgid ""
-"<literal>@Mock</literal> and <literal>@Staging</literal> deployment types "
-"for testing"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:294
-#, no-c-format
-msgid "<literal>@AustralianTaxLaw</literal> for site-specific Web Beans"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:297
-#, no-c-format
-msgid ""
-"<literal>@SeamFramework</literal>, <literal>@Guice</literal> for third-party "
-"frameworks which build on Web Beans"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:301
-#, no-c-format
-msgid ""
-"<literal>@Standard</literal> for standard Web Beans defined by the Web Beans "
-"specification"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:306
-#, no-c-format
-msgid "I'm sure you can think of more applications..."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:313
-#, no-c-format
-msgid "Fixing unsatisfied dependencies"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:315
-#, no-c-format
-msgid ""
-"The typesafe resolution algorithm fails when, after considering the binding "
-"annotations and and deployment types of all Web Beans that implement the API "
-"type of an injection point, the Web Bean manager is unable to identify "
-"exactly one Web Bean to inject."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:320
-#, no-c-format
-msgid ""
-"It's usually easy to fix an <literal>UnsatisfiedDependencyException</"
-"literal> or <literal>AmbiguousDependencyException</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:323
-#, no-c-format
-msgid ""
-"To fix an <literal>UnsatisfiedDependencyException</literal>, simply provide "
-"a Web Bean which implements the API type and has the binding types of the "
-"injection point&#151;or enable the deployment type of a Web Bean that "
-"already implements the API type and has the binding types."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:328
-#, no-c-format
-msgid ""
-"To fix an <literal>AmbiguousDependencyException</literal>, introduce a "
-"binding type to distinguish between the two implementations of the API type, "
-"or change the deployment type of one of the implementations so that the Web "
-"Bean manager can use deployment type precedence to choose between them. An "
-"<literal>AmbiguousDependencyException</literal> can only occur if two Web "
-"Beans share a binding type and have exactly the same deployment type."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:335
-#, no-c-format
-msgid ""
-"There's one more issue you need to be aware of when using dependency "
-"injection in Web Beans."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:341
-#, no-c-format
-msgid "Client proxies"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:343
-#, no-c-format
-msgid ""
-"Clients of an injected Web Bean do not usually hold a direct reference to a "
-"Web Bean instance."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:346
-#, no-c-format
-msgid ""
-"Imagine that a Web Bean bound to the application scope held a direct "
-"reference to a Web Bean bound to the request scope. The application scoped "
-"Web Bean is shared between many different requests. However, each request "
-"should see a different instance of the request scoped Web bean!"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:351
-#, no-c-format
-msgid ""
-"Now imagine that a Web Bean bound to the session scope held a direct "
-"reference to a Web Bean bound to the application scope. From time to time, "
-"the session context is serialized to disk in order to use memory more "
-"efficiently. However, the application scoped Web Bean instance should not be "
-"serialized along with the session scoped Web Bean!"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:357
-#, no-c-format
-msgid ""
-"Therefore, unless a Web Bean has the default scope <literal>@Dependent</"
-"literal>, the Web Bean manager must indirect all injected references to the "
-"Web Bean through a proxy object. This <emphasis>client proxy</emphasis> is "
-"responsible for ensuring that the Web Bean instance that receives a method "
-"invocation is the instance that is associated with the current context. The "
-"client proxy also allows Web Beans bound to contexts such as the session "
-"context to be serialized to disk without recursively serializing other "
-"injected Web Beans."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:365
-#, no-c-format
-msgid ""
-"Unfortunately, due to limitations of the Java language, some Java types "
-"cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager "
-"throws an <literal>UnproxyableDependencyException</literal> if the type of "
-"an injection point cannot be proxied."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:370
-#, no-c-format
-msgid "The following Java types cannot be proxied by the Web Bean manager:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:374
-#, no-c-format
-msgid ""
-"classes which are declared <literal>final</literal> or have a "
-"<literal>final</literal> method,"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:378
-#, no-c-format
-msgid "classes which have no non-private constructor with no parameters, and"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:381
-#, no-c-format
-msgid "arrays and primitive types."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:385
-#, no-c-format
-msgid ""
-"It's usually very easy to fix an <literal>UnproxyableDependencyException</"
-"literal>. Simply add a constructor with no parameters to the injected class, "
-"introduce an interface, or change the scope of the injected Web Bean to "
-"<literal>@Dependent</literal>."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:392
-#, no-c-format
-msgid "Obtaining a Web Bean by programatic lookup"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:394
-#, no-c-format
-msgid ""
-"The application may obtain an instance of the interface <literal>Manager</"
-"literal> by injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:397
-#, no-c-format
-msgid "<![CDATA[@Current Manager manager;]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:399
-#, no-c-format
-msgid ""
-"The <literal>Manager</literal> object provides a set of methods for "
-"obtaining a Web Bean instance programatically."
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:402
-#, no-c-format
-msgid ""
-"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
-"class);]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:404
-#, no-c-format
-msgid ""
-"Binding annotations may be specified by subclassing the helper class "
-"<literal>AnnotationLiteral</literal>, since it is otherwise difficult to "
-"instantiate an annotation type in Java."
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:408
-#, no-c-format
-msgid ""
-"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
-"class, \n"
-"                                               new "
-"AnnotationLiteral<CreditCard>(){});]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:410
-#, no-c-format
-msgid ""
-"If the binding type has an annotation member, we can't use an anonymous "
-"subclass of <literal>AnnotationLiteral</literal>&#151;instead we'll need to "
-"create a named subclass:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:413
-#, no-c-format
-msgid ""
-"<![CDATA[abstract class CreditCardBinding \n"
-"    extends AnnotationLiteral<CreditCard> \n"
-"    implements CreditCard {}]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:415
-#, no-c-format
-msgid ""
-"<![CDATA[PaymentProcessor p = manager.getInstanceByType(PaymentProcessor."
-"class, \n"
-"                                               new CreditCardBinding() { \n"
-"                                                   public void value() "
-"{ return paymentType; } \n"
-"                                               } );]]>"
-msgstr ""
-
-#. Tag: title
-#: injection.xml:419
-#, no-c-format
-msgid ""
-"Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> "
-"and <literal>@PersistenceContext</literal>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:422
-#, no-c-format
-msgid ""
-"Enterprise Web Beans support all the lifecycle callbacks defined by the EJB "
-"specification: <literal>@PostConstruct</literal>, <literal>@PreDestroy</"
-"literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</"
-"literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:426
-#, no-c-format
-msgid ""
-"Simple Web Beans support only the <literal>@PostConstruct</literal> and "
-"<literal>@PreDestroy</literal> callbacks."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:429
-#, no-c-format
-msgid ""
-"Both enterprise and simple Web Beans support the use of <literal>@Resource</"
-"literal>, <literal>@EJB</literal> and <literal>@PersistenceContext</literal> "
-"for injection of Java EE resources, EJBs and JPA persistence contexts, "
-"respectively. Simple Web Beans do not support the use of "
-"<literal>@PersistenceContext(type=EXTENDED)</literal>."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:434
-#, no-c-format
-msgid ""
-"The <literal>@PostConstruct</literal> callback always occurs after all "
-"dependencies have been injected."
-msgstr ""
-
-#. Tag: title
-#: injection.xml:440
-#, no-c-format
-msgid "The <literal>InjectionPoint</literal> object"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:442
-#, no-c-format
-msgid ""
-"There are certain kinds of dependent objects&#151;Web Beans with scope "
-"<literal>@Dependent</literal>&#151;that need to know something about the "
-"object or injection point into which they are injected in order to be able "
-"to do what they do. For example:"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:448
-#, no-c-format
-msgid ""
-"The log category for a <literal>Logger</literal> depends upon the class of "
-"the object that owns it."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:452
-#, no-c-format
-msgid ""
-"Injection of a HTTP parameter or header value depends upon what parameter or "
-"header name was specified at the injection point."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:456
-#, no-c-format
-msgid ""
-"Injection of the result of an EL expression evaluation depends upon the "
-"expression that was specified at the injection point."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:461
-#, no-c-format
-msgid ""
-"A Web Bean with scope <literal>@Dependent</literal> may inject an instance "
-"of <literal>InjectionPoint</literal> and access metadata relating to the "
-"injection point to which it belongs."
-msgstr ""
-
-#. Tag: para
-#: injection.xml:465
-#, no-c-format
-msgid ""
-"Let's look at an example. The following code is verbose, and vulnerable to "
-"refactoring problems:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:468
-#, no-c-format
-msgid "<![CDATA[Logger log = Logger.getLogger(MyClass.class.getName());]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:470
-#, no-c-format
-msgid ""
-"This clever little producer method lets you inject a JDK <literal>Logger</"
-"literal> without explicitly specifying the log category:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:473
-#, no-c-format
-msgid ""
-"<![CDATA[class LogFactory {\n"
-"\n"
-"   @Produces Logger createLogger(InjectionPoint injectionPoint) { \n"
-"      return Logger.getLogger(injectionPoint.getMember().getDeclaringClass()."
-"getName()); \n"
-"   }\n"
-"\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:475
-#, no-c-format
-msgid "We can now write:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:477
-#, no-c-format
-msgid "<![CDATA[@Current Logger log;]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:479
-#, no-c-format
-msgid ""
-"Not convinced? Then here's a second example. To inject HTTP parameters, we "
-"need to define a binding type:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:482
-#, no-c-format
-msgid ""
-"<![CDATA[@BindingType\n"
-"@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD, FIELD, PARAMETER})\n"
-"public @interface HttpParam {\n"
-"   @NonBinding public String value();\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:484
-#, no-c-format
-msgid "We would use this binding type at injection points as follows:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:486
-#, no-c-format
-msgid ""
-"<![CDATA[@HttpParam(\"username\") String username;\n"
-"@HttpParam(\"password\") String password;]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:488
-#, no-c-format
-msgid "The following producer method does the work:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:490
-#, no-c-format
-msgid ""
-"<![CDATA[class HttpParams\n"
-"\n"
-"   @Produces @HttpParam(\"\")\n"
-"   String getParamValue(ServletRequest request, InjectionPoint ip) {\n"
-"      return request.getParameter(ip.getAnnotation(HttpParam.class).value"
-"());\n"
-"   }\n"
-"\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:492
-#, no-c-format
-msgid ""
-"(Note that the <literal>value()</literal> member of the <literal>HttpParam</"
-"literal> annotation is ignored by the Web Bean manager since it is annotated "
-"<literal>@NonBinding.</literal>)"
-msgstr ""
-
-#. Tag: para
-#: injection.xml:495
-#, no-c-format
-msgid ""
-"The Web Bean manager provides a built-in Web Bean that implements the "
-"<literal>InjectionPoint</literal> interface:"
-msgstr ""
-
-#. Tag: programlisting
-#: injection.xml:498
-#, no-c-format
-msgid ""
-"<![CDATA[public interface InjectionPoint { \n"
-"   public Object getInstance(); \n"
-"   public Bean<?> getBean(); \n"
-"   public Member getMember(): \n"
-"   public <T extends Annotation> T getAnnotation(Class<T> annotation); \n"
-"   public Set<T extends Annotation> getAnnotations(); \n"
-"}]]>"
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/interceptors.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/interceptors.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/interceptors.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,572 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: interceptors.xml:4
-#, no-c-format
-msgid "Interceptors"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:6
-#, no-c-format
-msgid ""
-"Web Beans re-uses the basic interceptor architecture of EJB 3.0, extending "
-"the functionality in two directions:"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:11
-#, no-c-format
-msgid "Any Web Bean may have interceptors, not just session beans."
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:14
-#, no-c-format
-msgid ""
-"Web Beans features a more sophisticated annotation-based approach to binding "
-"interceptors to Web Beans."
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:22
-#, no-c-format
-msgid "The EJB specification defines two kinds of interception points:"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:26
-#, no-c-format
-msgid "business method interception, and"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:29
-#, no-c-format
-msgid "lifecycle callback interception."
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:33
-#, no-c-format
-msgid ""
-"A <emphasis>business method interceptor</emphasis> applies to invocations of "
-"methods of the Web Bean by clients of the Web Bean:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:36
-#, no-c-format
-msgid ""
-"<![CDATA[public class TransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
-"{ ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:38
-#, no-c-format
-msgid ""
-"A <emphasis>lifecycle callback interceptor</emphasis> applies to invocations "
-"of lifecycle callbacks by the container:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:41
-#, no-c-format
-msgid ""
-"<![CDATA[public class DependencyInjectionInterceptor {\n"
-"    @PostConstruct public void injectDependencies(InvocationContext ctx) "
-"{ ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:43
-#, no-c-format
-msgid ""
-"An interceptor class may intercept both lifecycle callbacks and business "
-"methods."
-msgstr ""
-
-#. Tag: title
-#: interceptors.xml:49
-#, no-c-format
-msgid "Interceptor bindings"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:51
-#, no-c-format
-msgid ""
-"Suppose we want to declare that some of our Web Beans are transactional. The "
-"first thing we need is an <emphasis>interceptor binding annotation</"
-"emphasis> to specify exactly which Web Beans we're interested in:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:55
-#, no-c-format
-msgid ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Transactional {}]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:57
-#, no-c-format
-msgid ""
-"Now we can easily specify that our <literal>ShoppingCart</literal> is a "
-"transactional object:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:60
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:62
-#, no-c-format
-msgid "Or, if we prefer, we can specify that just one method is transactional:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:64
-#, no-c-format
-msgid ""
-"<![CDATA[public class ShoppingCart {\n"
-"    @Transactional public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: title
-#: interceptors.xml:69
-#, no-c-format
-msgid "Implementing interceptors"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:71
-#, no-c-format
-msgid ""
-"That's great, but somewhere along the line we're going to have to actually "
-"implement the interceptor that provides this transaction management aspect. "
-"All we need to do is create a standard EJB interceptor, and annotate it "
-"<literal>@Interceptor</literal> and <literal>@Transactional</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:76
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
-"{ ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:78
-#, no-c-format
-msgid ""
-"All Web Beans interceptors are simple Web Beans, and can take advantage of "
-"dependency injection and contextual lifecycle management."
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:81
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped @Transactional @Interceptor\n"
-"public class TransactionInterceptor {\n"
-"\n"
-"    @Resource Transaction transaction;\n"
-"\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
-"{ ... }\n"
-"    \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:83
-#, no-c-format
-msgid "Multiple interceptors may use the same interceptor binding type."
-msgstr ""
-
-#. Tag: title
-#: interceptors.xml:88
-#, no-c-format
-msgid "Enabling interceptors"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:90
-#, no-c-format
-msgid ""
-"Finally, we need to <emphasis>enable</emphasis> our interceptor in "
-"<literal>web-beans.xml</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:93
-#, no-c-format
-msgid ""
-"<![CDATA[<Interceptors>\n"
-"    <tx:TransactionInterceptor/>\n"
-"</Interceptors>]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:95
-#, no-c-format
-msgid "Whoah! Why the angle bracket stew?"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:97
-#, no-c-format
-msgid "Well, the XML declaration solves two problems:"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:101
-#, no-c-format
-msgid ""
-"it enables us to specify a total ordering for all the interceptors in our "
-"system, ensuring deterministic behavior, and"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:105
-#, no-c-format
-msgid "it lets us enable or disable interceptor classes at deployment time."
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:109
-#, no-c-format
-msgid ""
-"For example, we could specify that our security interceptor runs before our "
-"<literal>TransactionInterceptor</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:112
-#, no-c-format
-msgid ""
-"<![CDATA[<Interceptors>\n"
-"    <sx:SecurityInterceptor/>\n"
-"    <tx:TransactionInterceptor/>\n"
-"</Interceptors>]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:114
-#, no-c-format
-msgid "Or we could turn them both off in our test environment!"
-msgstr ""
-
-#. Tag: title
-#: interceptors.xml:119
-#, no-c-format
-msgid "Interceptor bindings with members"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:121
-#, no-c-format
-msgid ""
-"Suppose we want to add some extra information to our "
-"<literal>@Transactional</literal> annotation:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:124
-#, no-c-format
-msgid ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Transactional {\n"
-"    boolean requiresNew() default false;\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:126
-#, no-c-format
-msgid ""
-"Web Beans will use the value of <literal>requiresNew</literal> to choose "
-"between two different interceptors, <literal>TransactionInterceptor</"
-"literal> and <literal>RequiresNewTransactionInterceptor</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:130
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional(requiresNew=true) @Interceptor\n"
-"public class RequiresNewTransactionInterceptor {\n"
-"    @AroundInvoke public Object manageTransaction(InvocationContext ctx) "
-"{ ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:132
-#, no-c-format
-msgid ""
-"Now we can use <literal>RequiresNewTransactionInterceptor</literal> like "
-"this:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:134
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional(requiresNew=true)\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:136
-#, no-c-format
-msgid ""
-"But what if we only have one interceptor and we want the manager to ignore "
-"the value of <literal>requiresNew</literal> when binding interceptors? We "
-"can use the <literal>@NonBinding</literal> annotation:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:140
-#, no-c-format
-msgid ""
-"<![CDATA[@InterceptorBindingType\n"
-"@Target({METHOD, TYPE})\n"
-"@Retention(RUNTIME)\n"
-"public @interface Secure {\n"
-"    @NonBinding String[] rolesAllowed() default {};\n"
-"}]]>"
-msgstr ""
-
-#. Tag: title
-#: interceptors.xml:145
-#, no-c-format
-msgid "Multiple interceptor binding annotations"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:147
-#, no-c-format
-msgid ""
-"Usually we use combinations of interceptor bindings types to bind multiple "
-"interceptors to a Web Bean. For example, the following declaration would be "
-"used to bind <literal>TransactionInterceptor</literal> and "
-"<literal>SecurityInterceptor</literal> to the same Web Bean:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:152
-#, no-c-format
-msgid ""
-"<![CDATA[@Secure(rolesAllowed=\"admin\") @Transactional\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:154
-#, no-c-format
-msgid ""
-"However, in very complex cases, an interceptor itself may specify some "
-"combination of interceptor binding types:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:157
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Secure @Interceptor\n"
-"public class TransactionalSecureInterceptor { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:159
-#, no-c-format
-msgid ""
-"Then this interceptor could be bound to the <literal>checkout()</literal> "
-"method using any one of the following combinations:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:162
-#, no-c-format
-msgid ""
-"<![CDATA[public class ShoppingCart {\n"
-"    @Transactional @Secure public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:164
-#, no-c-format
-msgid ""
-"<![CDATA[@Secure\n"
-"public class ShoppingCart {\n"
-"    @Transactional public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:166
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactionl\n"
-"public class ShoppingCart {\n"
-"    @Secure public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:168
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Secure\n"
-"public class ShoppingCart {\n"
-"    public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: title
-#: interceptors.xml:173
-#, no-c-format
-msgid "Interceptor binding type inheritance"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:175
-#, no-c-format
-msgid ""
-"One limitation of the Java language support for annotations is the lack of "
-"annotation inheritance. Really, annotations should have reuse built in, to "
-"allow this kind of thing to work:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:179
-#, no-c-format
-msgid ""
-"<![CDATA[public @interface Action extends Transactional, Secure { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:181
-#, no-c-format
-msgid ""
-"Well, fortunately, Web Beans works around this missing feature of Java. We "
-"may annotate one interceptor binding type with other interceptor binding "
-"types. The interceptor bindings are transitive&#151;any Web Bean with the "
-"first interceptor binding inherits the interceptor bindings declared as meta-"
-"annotations."
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:186
-#, no-c-format
-msgid ""
-"<![CDATA[@Transactional @Secure\n"
-"@InterceptorBindingType\n"
-"@Target(TYPE)\n"
-"@Retention(RUNTIME)\n"
-"public @interface Action { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:188
-#, no-c-format
-msgid ""
-"Any Web Bean annotated <literal>@Action</literal> will be bound to both "
-"<literal>TransactionInterceptor</literal> and <literal>SecurityInterceptor</"
-"literal>. (And even <literal>TransactionalSecureInterceptor</literal>, if it "
-"exists.)"
-msgstr ""
-
-#. Tag: title
-#: interceptors.xml:195
-#, no-c-format
-msgid "Use of <literal>@Interceptors</literal>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:197
-#, no-c-format
-msgid ""
-"The <literal>@Interceptors</literal> annotation defined by the EJB "
-"specification is supported for both enterprise and simple Web Beans, for "
-"example:"
-msgstr ""
-
-#. Tag: programlisting
-#: interceptors.xml:200
-#, no-c-format
-msgid ""
-"<![CDATA[@Interceptors({TransactionInterceptor.class, @SecurityInterceptor."
-"class})\n"
-"public class ShoppingCart {\n"
-"    public void checkout() { ... }\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:202
-#, no-c-format
-msgid "However, this approach suffers the following drawbacks:"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:206
-#, no-c-format
-msgid "the interceptor implementation is hardcoded in business code,"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:209
-#, no-c-format
-msgid "interceptors may not be easily disabled at deployment time, and"
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:212
-#, no-c-format
-msgid ""
-"the interceptor ordering is non-global&#151;it is determined by the order in "
-"which interceptors are listed at the class level."
-msgstr ""
-
-#. Tag: para
-#: interceptors.xml:217
-#, no-c-format
-msgid ""
-"Therefore, we recommend the use of Web Beans-style interceptor bindings."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/intro.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/intro.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/intro.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,931 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-23 16:43+0800\n"
-"Last-Translator: Sean Wu <alartin at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: intro.xml:4
-#, no-c-format
-msgid "Getting started with Web Beans"
-msgstr "Web Beans起步"
-
-#. Tag: para
-#: intro.xml:6
-#, no-c-format
-msgid "So you're already keen to get started writing your first Web Bean? Or perhaps you're skeptical, wondering what kinds of hoops the Web Beans specification will make you jump through! The good news is that you've probably already written and used hundreds, perhaps thousands of Web Beans. You might not even remember the first Web Bean you wrote."
-msgstr "你是否已经迫不及待想要开始编写你的第一个Web Bean了?或许,你仍旧抱有怀疑态度,想要知道Web Beans规范会给出什么样的圈套让你跳。好消息是你也许已经编写并且使用了好几百个或者好几千个Web Bean了。你也许甚至想不起来你写的第一个Web Bean了。"
-
-#. Tag: title
-#: intro.xml:13
-#, no-c-format
-msgid "Your first Web Bean"
-msgstr "你的第一个Web Bean"
-
-#. Tag: para
-#: intro.xml:15
-#, no-c-format
-msgid "With certain, very special exceptions, every Java class with a constructor that accepts no parameters is a Web Bean. That includes every JavaBean. Furthermore, every EJB 3-style session bean is a Web Bean. Sure, the JavaBeans and EJBs you've been writing every day have not been able to take advantage of the new services defined by the Web Beans specification, but you'll be able to use every one of them as Web Beans&#151;injecting them into other Web Beans, configuring them via the Web Beans XML configuration facility, even adding interceptors and decorators to them&#151;without touching your existing code."
-msgstr "除非特殊情况,每个具有一个非参构造器的Java类都可以是一个Web Bean。这包括了每个JavaBean, 并且每个EJB3的会话Bean都是一个Web Bean。当然,你每天已经写过的JavaBean和EJB无法使用Web Beans规范定义的新服务,但是你能够通过Web Beans的XML配置将这些组件配置为Web Bean,然后将其注入到其他Web Bean中。你甚至可以不用修改已有代码就可以为其添加拦截器和装饰器。"
-
-#. Tag: para
-#: intro.xml:25
-#, no-c-format
-msgid "Suppose that we have two existing Java classes, that we've been using for years in various applications. The first class parses a string into a list of sentences:"
-msgstr "假定我们有两个已经写好的Java类,我们已经在不同的应用中使用它们好多年了。第一个类将一个字符串解析为一个句子列表:"
-
-#. Tag: programlisting
-#: intro.xml:29
-#, no-c-format
-msgid ""
-"<![CDATA[public class SentenceParser {\n"
-"    public List<String> parse(String text) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class SentenceParser {\n"
-"    public List<String> parse(String text) { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:31
-#, no-c-format
-msgid "The second existing class is a stateless session bean front-end for an external system that is able to translate sentences from one language to another:"
-msgstr "第二个已有类是一个无状态的会话Bean,这个会话Bean作为一个外部系统的前端,能够将句子从一种语言翻译到另一个语言:"
-
-#. Tag: programlisting
-#: intro.xml:35
-#, no-c-format
-msgid ""
-"<![CDATA[@Stateless\n"
-"public class SentenceTranslator implements Translator {\n"
-"    public String translate(String sentence) { ... }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Stateless\n"
-"public class SentenceTranslator implements Translator {\n"
-"    public String translate(String sentence) { ... }\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:37
-#, no-c-format
-msgid "Where <literal>Translator</literal> is the local interface:"
-msgstr "<literal>Translator</literal>是本地接口:"
-
-#. Tag: programlisting
-#: intro.xml:39
-#, no-c-format
-msgid ""
-"<![CDATA[@Local\n"
-"public interface Translator {\n"
-"    public String translate(String sentence);\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Local\n"
-"public interface Translator {\n"
-"    public String translate(String sentence);\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:41
-#, no-c-format
-msgid "Unfortunately, we don't have a preexisting class that translates whole text documents. So let's write a Web Bean that does this job:"
-msgstr "不幸的是,我们没有Java类能够翻译整个文档。因此,让我们写一个Web Bean来做这个工作:"
-
-#. Tag: programlisting
-#: intro.xml:44
-#, no-c-format
-msgid ""
-"<![CDATA[public class TextTranslator {\n"
-"    \n"
-"    private SentenceParser sentenceParser;\n"
-"    private Translator sentenceTranslator;\n"
-"    \n"
-"    @Initializer\n"
-"    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {\n"
-"        this.sentenceParser = sentenceParser;\n"
-"        this.sentenceTranslator = sentenceTranslator;\n"
-"    }\n"
-"    \n"
-"    public String translate(String text) {\n"
-"        StringBuilder sb = new StringBuilder();\n"
-"        for (String sentence: sentenceParser.parse(text)) {\n"
-"            sb.append(sentenceTranslator.translate(sentence));\n"
-"        }\n"
-"        return sb.toString();\n"
-"    }\n"
-"    \n"
-"}]]>"
-msgstr ""
-"<![CDATA[public class TextTranslator {\n"
-"    \n"
-"    private SentenceParser sentenceParser;\n"
-"    private Translator sentenceTranslator;\n"
-"    \n"
-"    @Initializer\n"
-"    TextTranslator(SentenceParser sentenceParser, Translator sentenceTranslator) {\n"
-"        this.sentenceParser = sentenceParser;\n"
-"        this.sentenceTranslator = sentenceTranslator;\n"
-"    }\n"
-"    \n"
-"    public String translate(String text) {\n"
-"        StringBuilder sb = new StringBuilder();\n"
-"        for (String sentence: sentenceParser.parse(text)) {\n"
-"            sb.append(sentenceTranslator.translate(sentence));\n"
-"        }\n"
-"        return sb.toString();\n"
-"    }\n"
-"    \n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:46
-#, no-c-format
-msgid "We may obtain an instance of <literal>TextTranslator</literal> by injecting it into a Web Bean, Servlet or EJB:"
-msgstr "通过将其注入到一个Web Bean,Servlet或者EJB,我们能够获得一个 <literal>TextTranslator</literal>的实例:"
-
-#. Tag: programlisting
-#: intro.xml:49
-#, no-c-format
-msgid ""
-"<![CDATA[@Initializer\n"
-"public setTextTranslator(TextTranslator textTranslator) {\n"
-"    this.textTranslator = textTranslator;\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Initializer\n"
-"public setTextTranslator(TextTranslator textTranslator) {\n"
-"    this.textTranslator = textTranslator;\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:51
-#, no-c-format
-msgid "Alternatively, we may obtain an instance by directly calling a method of the Web Bean manager:"
-msgstr "或者,我们可以直接调用Web Bean管理器的方法获得这个实例:"
-
-#. Tag: programlisting
-#: intro.xml:54
-#, no-c-format
-msgid "<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]>"
-msgstr "<![CDATA[TextTranslator tt = manager.getInstanceByType(TextTranslator.class);]]>"
-
-#. Tag: para
-#: intro.xml:56
-#, no-c-format
-msgid "But wait: <literal>TextTranslator</literal> does not have a constructor with no parameters! Is it still a Web Bean? Well, a class that does not have a constructor with no parameters can still be a Web Bean if it has a constructor annotated <literal>@Initializer</literal>."
-msgstr "但是,等一下:<literal>TextTranslator</literal>并没有一个无参构造器!它仍然是一个Web Bean么?好吧,一个没有无参构造器的类依然能够成为一个Web Bean,只要你在它的一个构造器上使用<literal>@Initializer</literal>注释即可。"
-
-#. Tag: para
-#: intro.xml:61
-#, no-c-format
-msgid "As you've guessed, the <literal>@Initializer</literal> annotation has something to do with dependency injection! <literal>@Initializer</literal> may be applied to a constructor or method of a Web Bean, and tells the Web Bean manager to call that constructor or method when instantiating the Web Bean. The Web Bean manager will inject other Web Beans to the parameters of the constructor or method."
-msgstr "就像你猜到的一样, <literal>@Initializer</literal>注释和依赖注入有关! <literal>@Initializer</literal>可以应用到一个Web Bean的构造器或者方法上,它告诉Web Bean管理器在初始化一个Web Bean的时候去调用这个构造器或者方法。Web Beam管理器能够将其他的Web Bean注入到构造器或者方法的参数中。"
-
-#. Tag: para
-#: intro.xml:68
-#, no-c-format
-msgid "At system initialization time, the Web Bean manager must validate that exactly one Web Bean exists which satisfies each injection point. In our example, if no implementation of <literal>Translator</literal> available&#151;if the <literal>SentenceTranslator</literal> EJB was not deployed&#151;the Web Bean manager would throw an <literal>UnsatisfiedDependencyException</literal>. If more than one implementation of <literal>Translator</literal> was available, the Web Bean manager would throw an <literal>AmbiguousDependencyException</literal>."
-msgstr "在系统初始化的时候,Web Bean管理器必须验证只存在一个Web Bean能够满足每个注入点。在我们的例子中,如果没有<literal>Translator</literal>实现&#151;如果<literal>SentenceTranslator</literal> EJB没有被部署&#151;Web Bean管理器将会抛出一个<literal>UnsatisfiedDependencyException</literal>异常。如果多于一个<literal>Translator</literal>实现,Web Bean管理器将会抛出一个<literal>AmbiguousDependencyException</literal>异常。"
-
-#. Tag: title
-#: intro.xml:80
-#, no-c-format
-msgid "What is a Web Bean?"
-msgstr "什么是Web Bean?"
-
-#. Tag: para
-#: intro.xml:82
-#, no-c-format
-msgid "So what, <emphasis>exactly</emphasis>, is a Web Bean?"
-msgstr "那么, Web Bean<emphasis>究竟</emphasis>是什么?"
-
-#. Tag: para
-#: intro.xml:84
-#, no-c-format
-msgid "A Web Bean is an application class that contains business logic. A Web Bean may be called directly from Java code, or it may be invoked via Unified EL. A Web Bean may access transactional resources. Dependencies between Web Beans are managed automatically by the Web Bean manager. Most Web Beans are <emphasis>stateful</emphasis> and <emphasis>contextual</emphasis>. The lifecycle of a Web Bean is always managed by the Web Bean manager."
-msgstr "一个Web Bean是一个包含业务逻辑的应用类。一个Web Bean能够从Java代码中直接调用,也可以通过统一表达语言调用。一个Web Bean可以访问事务性的资源。Web Bean之间的依赖通过Web Bean管理器自动管理。大部分Web Bean是具有 <emphasis>状态</emphasis>和<emphasis>上下文</emphasis>的。Web Bean的生命周期总是通过Web Bean管理器进行管理。"
-
-#. Tag: para
-#: intro.xml:91
-#, no-c-format
-msgid "Let's back up a second. What does it really mean to be \"contextual\"? Since Web Beans may be stateful, it matters <emphasis>which</emphasis> bean instance I have. Unlike a stateless component model (for example, stateless session beans) or a singleton component model (such as servlets, or singleton beans), different clients of a Web Bean see the Web Bean in different states. The client-visible state depends upon which instance of the Web Bean the client has a reference to."
-msgstr "让我们后退一步。\"上下文\"究竟意味着什么?既然Web Beans可以是有状态的,那它关系到我到底拥有<emphasis>哪个</emphasis>Bean实例。和无状态组件模型(例如无状态的会话Bean)或者一个单例模型组件(例如Servlet或者单例Bean)不同,一个Web Bean的不同客户端看到的Web Bean的状态是不同的。客户端所见的状态取决于这个客户端拥有的是哪一个Web Bean实例的引用。"
-
-#. Tag: para
-#: intro.xml:98
-#, no-c-format
-msgid "However, like a stateless or singleton model, but <emphasis>unlike</emphasis> stateful session beans, the client does not control the lifecycle of the instance by explicitly creating and destroying it. Instead, the <emphasis>scope</emphasis> of the Web Bean determines:"
-msgstr "然而,Web Bean像无状态或者单例模型那样,却和有状态的会话Bean<emphasis>不同</emphasis>,客户端无法通过显式地创建或者销毁它来控制实例的生命周期。取而代之,Web Bean的<emphasis>范围</emphasis>决定了:"
-
-#. Tag: para
-#: intro.xml:105
-#, no-c-format
-msgid "the lifecycle of each instance of the Web Bean and"
-msgstr "每个Web Bean实例的生命周期,以及"
-
-#. Tag: para
-#: intro.xml:108
-#, no-c-format
-msgid "which clients share a reference to a particular instance of the Web Bean."
-msgstr "哪些客户端共享Web Bean特定实例的一个引用。"
-
-#. Tag: para
-#: intro.xml:113
-#, no-c-format
-msgid "For a given thread in a Web Beans application, there may be an <emphasis>active context</emphasis> associated with the scope of the Web Bean. This context may be unique to the thread (for example, if the Web Bean is request scoped), or it may be shared with certain other threads (for example, if the Web Bean is session scoped) or even all other threads (if it is application scoped)."
-msgstr "给定一个Web Bean应用的线程,将可能有一个<emphasis>激活的上下文</emphasis>和Web Bean的范围关联。这个上下文可能对于该线程是唯一的(例如,如果这个Web Bean是请求范围的),或者这个上下文可能被某些其他线程共享(例如,如果这个Web Bean是会话范围的),这个上下文甚至可以被所有线程共享(例如,这个Web Bean是应用范围的)。"
-
-#. Tag: para
-#: intro.xml:119
-#, no-c-format
-msgid "Clients (for example, other Web Beans) executing in the same context will see the same instance of the Web Bean. But clients in a different context will see a different instance."
-msgstr "在同一个上下文中执行的客户端(例如,其他的Web Bean)看到的是同一个Web Bean的实例。但是不同的上下文中的客户端看到的是不同的实例。"
-
-#. Tag: para
-#: intro.xml:123
-#, no-c-format
-msgid "One great advantage of the contextual model is that it allows stateful Web Beans to be treated like services! The client need not concern itself with managing the lifecycle of the Web Bean it is using, <emphasis>nor does it even need to know what that lifecyle is.</emphasis> Web Beans interact by passing messages, and the Web Bean implementations define the lifecycle of their own state. The Web Beans are loosely coupled because:"
-msgstr "具备上下文的模型带来的一个巨大优点是它允许有状态的Web Bean可以像服务一样使用!客户端不需要关注本身以及它使用的Web Bean的生命周期,<emphasis>甚至它根本不需要知道生命周期是什么</emphasis>。Web Bean通过传递消息来交互,Web Bean的实现定义了他们自己状态的生命周期。Web Bean是松耦合的,因为:"
-
-#. Tag: para
-#: intro.xml:132
-#, no-c-format
-msgid "they interact via well-defined public APIs"
-msgstr "它们通过定义良好的公共接口交互"
-
-#. Tag: para
-#: intro.xml:135
-#, no-c-format
-msgid "their lifecycles are completely decoupled"
-msgstr "它们的生命周期是完全解耦的"
-
-#. Tag: para
-#: intro.xml:139
-#, no-c-format
-msgid "We can replace one Web Bean with a different Web Bean that implements the same API and has a different lifecycle (a different scope) without affecting the other Web Bean implementation. In fact, Web Beans defines a sophisticated facility for overriding Web Bean implementations at deployment time, as we will see in <xref linkend=\"deploymenttypes\"/>."
-msgstr "我们能够使用一个实现相同接口,具有不同生命周期(一个不同的范围)的Web Bean替换一个Web Bean而不会影响其他的Web Bean实现。实际上,Web Bean定义了一个复杂的机制能够在部署时覆盖Web Bean的实现,我们将在<xref linkend=\"deploymenttypes\"/>一章阐述。"
-
-#. Tag: para
-#: intro.xml:145
-#, no-c-format
-msgid "Note that not all clients of a Web Bean are Web Beans. Other objects such as Servlets or Message-Driven Beans&#151;which are by nature not injectable, contextual objects&#151;may also obtain references to Web Beans by injection."
-msgstr "需要注意的是并非所有的Web Bean的客户端都是Web Bean。其他对象诸如Servlet或者消息驱动Bean#151;天生不可注入的, 具备上下文的对象&#151;也可以通过注入获得Web Bean的引用。"
-
-#. Tag: para
-#: intro.xml:149
-#, no-c-format
-msgid "Enough hand-waving. More formally, according to the spec:"
-msgstr "讨论的够多了。我们看些更正式些的,依据规范:"
-
-#. Tag: para
-#: intro.xml:153
-#, no-c-format
-msgid "A Web Bean comprises:"
-msgstr "一个Web Bean包括:"
-
-#. Tag: para
-#: intro.xml:156
-#, no-c-format
-msgid "A (nonempty) set of API types"
-msgstr "一套(非空)API类型"
-
-#. Tag: para
-#: intro.xml:157
-#, no-c-format
-msgid "A (nonempty) set of binding annotation types"
-msgstr "一套(非空)绑定注释类型"
-
-#. Tag: para
-#: intro.xml:158
-#, no-c-format
-msgid "A scope"
-msgstr "一个范围"
-
-#. Tag: para
-#: intro.xml:159
-#, no-c-format
-msgid "A deployment type"
-msgstr "一个部署类型"
-
-#. Tag: para
-#: intro.xml:160
-#, no-c-format
-msgid "Optionally, a Web Bean name"
-msgstr "可选的,一个Web Bean的名字"
-
-#. Tag: para
-#: intro.xml:161
-#, no-c-format
-msgid "A set of interceptor binding types"
-msgstr "一套拦截器绑定类型"
-
-#. Tag: para
-#: intro.xml:162
-#, no-c-format
-msgid "A Web Bean implementation"
-msgstr "一个Web Bean实现"
-
-#. Tag: para
-#: intro.xml:167
-#, no-c-format
-msgid "Let's see what some of these terms mean, to the Web Bean developer."
-msgstr "让我们看看这些术语对于Web Bean的开发者都意味着什么。"
-
-#. Tag: title
-#: intro.xml:170
-#, no-c-format
-msgid "API types, binding types and dependency injection"
-msgstr "API类型,绑定类型和依赖注入"
-
-#. Tag: para
-#: intro.xml:172
-#, no-c-format
-msgid "Web Beans usually acquire references to other Web Beans via dependency injection. Any injected attribute specifies a \"contract\" that must be satisfied by the Web Bean to be injected. The contract is:"
-msgstr "Web Bean通常通过依赖注入获得其他Web Bean的引用。任何注入的属性都要指定一个\"合约\",这个合约必须满足注入的Web Bean的要求。这个合约是:"
-
-#. Tag: para
-#: intro.xml:177
-#, no-c-format
-msgid "an API type, together with"
-msgstr "一个API类型,和"
-
-#. Tag: para
-#: intro.xml:178
-#, no-c-format
-msgid "a set of binding types."
-msgstr "一套绑定类型"
-
-#. Tag: para
-#: intro.xml:181
-#, no-c-format
-msgid "An API is a user-defined class or interface. (If the Web Bean is an EJB session bean, the API type is the <literal>@Local</literal> interface or bean-class local view). A binding type represents some client-visible semantic that is satisfied by some implementations of the API and not by others."
-msgstr "一个API指的是用户定义的类或者接口。(如果Web Bean是一个EJB会话Bean,API类型是 <literal>@Local</literal> 接口或者Bean类的本地视图)。一个绑定类型表示某个客户端可见的语义,这个语义由API的某个实现而不是其他实现来满足。"
-
-#. Tag: para
-#: intro.xml:186
-#, no-c-format
-msgid "Binding types are represented by user-defined annotations that are themselves annotated <literal>@BindingType</literal>. For example, the following injection point has API type <literal>PaymentProcessor</literal> and binding type <literal>@CreditCard</literal>:"
-msgstr "绑定类型通过用户定义的注释来表现,这些注释自己需要通过<literal>@BindingType</literal>来注释。例如,下面的注入点有一个API类型 <literal>PaymentProcessor</literal>和绑定类型<literal>@CreditCard</literal>:"
-
-#. Tag: programlisting
-#: intro.xml:191
-#, no-c-format
-msgid "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
-msgstr "<![CDATA[@CreditCard PaymentProcessor paymentProcessor]]>"
-
-#. Tag: para
-#: intro.xml:193
-#, no-c-format
-msgid "If no binding type is explicitly specified at an injection point, the default binding type <literal>@Current</literal> is assumed."
-msgstr "如果在一个注入点没有显式的指定一个绑定类型,那么默认的绑定类型是<literal>@Current</literal>。"
-
-#. Tag: para
-#: intro.xml:196
-#, no-c-format
-msgid "For each injection point, the Web Bean manager searches for a Web Bean which satisfies the contract (implements the API, and has all the binding types), and injects that Web Bean."
-msgstr "对于每个注入点,Web Bean管理器都会搜索满足合约的Web Bean(实现了API并且拥有所有的绑定类型),然后将这个Web Bean注入。"
-
-#. Tag: para
-#: intro.xml:200
-#, no-c-format
-msgid "The following Web Bean has the binding type <literal>@CreditCard</literal> and implements the API type <literal>PaymentProcessor</literal>. It could therefore be injected to the example injection point:"
-msgstr "下面的Web Bean拥有一个绑定类型<literal>@CreditCard</literal>,并且实现了API类型<literal>PaymentProcessor</literal>。因此,这个Web Bean可以被注入到这个例子的注入点中:"
-
-#. Tag: programlisting
-#: intro.xml:204
-#, no-c-format
-msgid ""
-"<![CDATA[@CreditCard\n"
-"public class CreditCardPaymentProcessor \n"
-"    implements PaymentProcessor { ... }]]>"
-msgstr ""
-"<![CDATA[@CreditCard\n"
-"public class CreditCardPaymentProcessor \n"
-"    implements PaymentProcessor { ... }]]>"
-
-#. Tag: para
-#: intro.xml:206
-#, no-c-format
-msgid "If a Web Bean does not explicitly specify a set of binding types, it has exactly one binding type: the default binding type <literal>@Current</literal>."
-msgstr "如果一个Web Bean没有显式的指定一套绑定类型,它将只有一个绑定类型:默认的绑定类型<literal>@Current</literal>。"
-
-#. Tag: para
-#: intro.xml:209
-#, no-c-format
-msgid "Web Beans defines a sophisticated but intuitive <emphasis>resolution algorithm</emphasis> that helps the container decide what to do if there is more than one Web Bean that satisfies a particular contract. We'll get into the details in <xref linkend=\"injection\"/>."
-msgstr "Web Bean定义了一个复杂但是很直观的<emphasis>解析算法</emphasis>来帮助容器确定如何处理多个Web Bean满足特定合约的情况。我们将在 <xref linkend=\"injection\"/>一章中详述。"
-
-#. Tag: title
-#: intro.xml:217
-#, no-c-format
-msgid "Deployment types"
-msgstr "部署类型"
-
-#. Tag: para
-#: intro.xml:219
-#, no-c-format
-msgid "<emphasis>Deployment types</emphasis> let us classify our Web Beans by deployment scenario. A deployment type is an annotation that represents a particular deployment scenario, for example <literal>@Mock</literal>, <literal>@Staging</literal> or <literal>@AustralianTaxLaw</literal>. We apply the annotation to Web Beans which should be deployed in that scenario. A deployment type allows a whole set of Web Beans to be conditionally deployed, with a just single line of configuration."
-msgstr "<emphasis>部署类型</emphasis>能够让我们根据部署场景来划分我们的Web Bean。一个部署类型是一个注释,这个注释代表了一种特定的部署场景,例如<literal>@Mock</literal>,<literal>@Staging</literal>或者<literal>@AustralianTaxLaw</literal>。我们通过这些注释来决定哪些Web Bean部署在哪些场景中。一个部署类型允许我们只使用一行配置就可以对一整套Web Bean进行条件化的部署。"
-
-#. Tag: para
-#: intro.xml:226
-#, no-c-format
-msgid "Many Web Beans just use the default deployment type <literal>@Production</literal>, in which case no deployment type need be explicitly specified. All three Web Bean in our example have the deployment type <literal>@Production</literal>."
-msgstr "很多Web Bean只使用默认的部署类型<literal>@Production</literal>。在这种情况下,不需要显式的指定部署类型。在我们的例子中的三个Web Bean都拥有部署类型<literal>@Production</literal>。"
-
-#. Tag: para
-#: intro.xml:230
-#, no-c-format
-msgid "In a testing environment, we might want to replace the <literal>SentenceTranslator</literal> Web Bean with a \"mock object\":"
-msgstr "在一个测试环境中,我们有可能将<literal>SentenceTranslator</literal> Web Bean替换为一个\"模拟对象\":"
-
-#. Tag: programlisting
-#: intro.xml:233
-#, no-c-format
-msgid ""
-"<![CDATA[@Mock\n"
-"public class MockSentenceTranslator implements Translator {\n"
-"    public String translate(String sentence) {\n"
-"        return \"Lorem ipsum dolor sit amet\";\n"
-"    }\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Mock\n"
-"public class MockSentenceTranslator implements Translator {\n"
-"    public String translate(String sentence) {\n"
-"        return \"Lorem ipsum dolor sit amet\";\n"
-"    }\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:236
-#, no-c-format
-msgid "We would enable the deployment type <literal>@Mock</literal> in our testing environment, to indicate that <literal>MockSentenceTranslator</literal> and any other Web Bean annotated <literal>@Mock</literal> should be used."
-msgstr "我们需要在测试环境中激活部署类型<literal>@Mock</literal>,这时应用会使用 <literal>MockSentenceTranslator</literal>或者其他拥有<literal>@Mock</literal>注释的Web Bean。"
-
-#. Tag: para
-#: intro.xml:240
-#, no-c-format
-msgid "We'll talk more about this unique and powerful feature in <xref linkend=\"deploymenttypes\"/>."
-msgstr "我们将在<xref linkend=\"deploymenttypes\"/>一章中详述这个独特而强大的特性。"
-
-#. Tag: title
-#: intro.xml:246
-#, no-c-format
-msgid "Scope"
-msgstr "范围"
-
-#. Tag: para
-#: intro.xml:248
-#, no-c-format
-msgid "The <emphasis>scope</emphasis> defines the lifecycle and visibility of instances of the Web Bean. The Web Beans context model is extensible, accommodating arbitrary scopes. However, certain important scopes are built-in to the specification, and provided by the Web Bean manager. A scope is represented by an annotation type."
-msgstr " <emphasis>范围</emphasis>定义了一个Web Bean实例的生命周期和可见度。Web Bean的上下文模型是可扩展的,可以适应任意范围。不过某些特定的重要的范围已经内置于规范中了,由Web Bean管理器提供这些范围。一个范围也是通过注释类型来表示的。"
-
-#. Tag: para
-#: intro.xml:254
-#, no-c-format
-msgid "For example, any web application may have <emphasis>session scoped</emphasis> Web Beans:"
-msgstr "例如,任何一个Web应用都可能拥有 <emphasis>会话范围</emphasis>的Web Bean:"
-
-#. Tag: programlisting
-#: intro.xml:257
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:259
-#, no-c-format
-msgid "An instance of a session scoped Web Bean is bound to a user session and is shared by all requests that execute in the context of that session."
-msgstr "一个会话范围的Web Bean实例将绑定到用户会话中,它被这个会话上下文中的所有请求共享。"
-
-#. Tag: para
-#: intro.xml:262
-#, no-c-format
-msgid "By default, Web Beans belong to a special scope called the <emphasis>dependent pseudo-scope</emphasis>. Web Beans with this scope are pure dependent objects of the object into which they are injected, and their lifecycle is bound to the lifecycle of that object."
-msgstr "默认情况下,Web Bean属于一个名为<emphasis>依赖伪范围</emphasis>的特殊范围。拥有这个范围的Web Bean的范围取决于其所注入的对象的范围,它的生命周期和所注入的对象的生命周期绑定在一起。"
-
-#. Tag: para
-#: intro.xml:267
-#, no-c-format
-msgid "We'll talk more about scopes in <xref linkend=\"scopescontexts\"/>."
-msgstr "我们将在<xref linkend=\"scopescontexts\"/>一章中详述范围。"
-
-#. Tag: title
-#: intro.xml:272
-#, no-c-format
-msgid "Web Bean names and Unified EL"
-msgstr "Web Bean的名字和统一表达式语言"
-
-#. Tag: para
-#: intro.xml:274
-#, no-c-format
-msgid "A Web Bean may have a <emphasis>name</emphasis>, allowing it to be used in Unified EL expressions. It's easy to specify the name of a Web Bean:"
-msgstr "一个Web Bean可能有一个<emphasis>名字</emphasis>,通过名字,Web Bean可以在统一表达式语言中使用。为Web Bean指定一个名字非常简单:"
-
-#. Tag: programlisting
-#: intro.xml:278
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped @Named(\"cart\")\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped @Named(\"cart\")\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:280
-#, no-c-format
-msgid "Now we can easily use the Web Bean in any JSF or JSP page:"
-msgstr "现在我们可以轻松地在任何JSF或者JSP页面中使用这个Web Bean:"
-
-#. Tag: programlisting
-#: intro.xml:282
-#, no-c-format
-msgid ""
-"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
-"    ....\n"
-"</h:dataTable>]]>"
-msgstr ""
-"<![CDATA[<h:dataTable value=\"#{cart.lineItems}\" var=\"item\">\n"
-"    ....\n"
-"</h:dataTable>]]>"
-
-#. Tag: para
-#: intro.xml:284
-#, no-c-format
-msgid "It's even easier to just let the name be defaulted by the Web Bean manager:"
-msgstr "甚至我们可以让Web Bean管理器来给Web Bean指定默认的名字:"
-
-#. Tag: programlisting
-#: intro.xml:287
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped @Named\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped @Named\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:289
-#, no-c-format
-msgid "In this case, the name defaults to <literal>shoppingCart</literal>&#151;the unqualified class name, with the first character changed to lowercase."
-msgstr "在这种情况下,Web Bean的名字默认为<literal>shoppingCart</literal>&#151;非完整的类名,首字母改为小写"
-
-#. Tag: title
-#: intro.xml:295
-#, no-c-format
-msgid "Interceptor binding types"
-msgstr "拦截器绑定类型"
-
-#. Tag: para
-#: intro.xml:297
-#, no-c-format
-msgid "Web Beans supports the interceptor functionality defined by EJB 3, not only for EJB beans, but also for plain Java classes. In addition, Web Beans provides a new approach to binding interceptors to EJB beans and other Web Beans."
-msgstr "Web Bean支持EJB3定义的拦截器功能,Web Bean将其扩展,使得POJO也具备该功能。另外,Web Bean提供一个新的方式来将拦截器绑定到EJB Bean和其他Web Bean上。"
-
-#. Tag: para
-#: intro.xml:302
-#, no-c-format
-msgid "It remains possible to directly specify the interceptor class via use of the <literal>@Interceptors</literal> annotation:"
-msgstr "可以通过<literal>@Interceptors</literal> 注释直接指定拦截器类:"
-
-#. Tag: programlisting
-#: intro.xml:305
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped \n"
-"@Interceptors(TransactionInterceptor.class)\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped \n"
-"@Interceptors(TransactionInterceptor.class)\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:307
-#, no-c-format
-msgid "However, it is more elegant, and better practice, to indirect the interceptor binding through an <emphasis>interceptor binding type</emphasis>:"
-msgstr "然而,更优雅的方式或者更佳的实践是通过<emphasis>拦截器绑定类型</emphasis>来间接地绑定拦截器:"
-
-#. Tag: programlisting
-#: intro.xml:311
-#, no-c-format
-msgid ""
-"<![CDATA[@SessionScoped @Transactional\n"
-"public class ShoppingCart { ... }]]>"
-msgstr ""
-"<![CDATA[@SessionScoped @Transactional\n"
-"public class ShoppingCart { ... }]]>"
-
-#. Tag: para
-#: intro.xml:313
-#, no-c-format
-msgid "We'll discuss Web Beans interceptors and decorators in <xref linkend=\"interceptors\"/> and <xref linkend=\"decorators\"/>."
-msgstr "我们将在<xref linkend=\"interceptors\"/>和<xref linkend=\"decorators\"/>两章分别讨论Web Bean拦截器和装饰器。"
-
-#. Tag: title
-#: intro.xml:321
-#, no-c-format
-msgid "What kinds of objects can be Web Beans?"
-msgstr "什么样的对象能够称为Web Bean?"
-
-#. Tag: para
-#: intro.xml:323
-#, no-c-format
-msgid "We've already seen that JavaBeans, EJBs and some other Java classes can be Web Beans. But exactly what kinds of objects are Web Beans?"
-msgstr "我们已经看到,JavaBean, EJB和其他Java类都可以成为Web Bean。但是,确切地说,什么样的对象能够称为Web Bean?"
-
-#. Tag: title
-#: intro.xml:327
-#, no-c-format
-msgid "Simple Web Beans"
-msgstr "简单的Web Bean"
-
-#. Tag: para
-#: intro.xml:329
-#, no-c-format
-msgid "The Web Beans specification says that a concrete Java class is a <emphasis>simple</emphasis> Web Bean if:"
-msgstr "Web Bean规范声称一个具体的Java类可以成为一个<emphasis>简单</emphasis>的Web Bean, 只要这个类:"
-
-#. Tag: para
-#: intro.xml:334
-#, no-c-format
-msgid "it is not an EE container-managed component, like an EJB, a Servlet or a JPA entity,"
-msgstr "它不是一个EE容器管理的组件,例如一个EJB,一个Servlet或者一个JPA实体,"
-
-#. Tag: para
-#: intro.xml:338
-#, no-c-format
-msgid "it is not a non-static static inner class,"
-msgstr "她不是一个非静态的静态内嵌类,"
-
-#. Tag: para
-#: intro.xml:341
-#, no-c-format
-msgid "it is not a parameterized type, and"
-msgstr "它不是一个参数化类型,并且"
-
-#. Tag: para
-#: intro.xml:344
-#, no-c-format
-msgid "it has a constructor with no parameters, or a constructor annotated <literal>@Initializer</literal>."
-msgstr "它拥有一个无参构造器,或者构造器具有<literal>@Initializer</literal>注释。"
-
-#. Tag: para
-#: intro.xml:349
-#, no-c-format
-msgid "Thus, almost every JavaBean is a simple Web Bean."
-msgstr "这样,几乎所有的JavaBean都可以是一个简单的Web Bean。"
-
-#. Tag: para
-#: intro.xml:351
-#, no-c-format
-msgid "Every interface implemented directly or indirectly by a simple Web Bean is an API type of the simple Web Bean. The class and its superclasses are also API types."
-msgstr "每个被简单Web Bean直接或者间接实现的接口都是这个简单Web Bean的一个API类型。这个类和它的超类也是API类型。"
-
-#. Tag: title
-#: intro.xml:358
-#, no-c-format
-msgid "Enterprise Web Beans"
-msgstr "企业级Web Bean"
-
-#. Tag: para
-#: intro.xml:360
-#, no-c-format
-msgid "The specification says that all EJB 3-style session and singleton beans are <emphasis>enterprise</emphasis> Web Beans. Message driven beans are not Web Beans&#151;since they are not intended to be injected into other objects&#151;but they can take advantage of most of the functionality of Web Beans, including dependency injection and interceptors."
-msgstr "规范指出所有EJB3类型的会话Bean或者单例Bean都是<emphasis>企业级</emphasis>Web Bean。消息驱动Bean不是Web Beans&#151;因为它们不能被注入到其他对象中#151;但是它们可以使用大部分Web Bean的功能,包括依赖注入和拦截器。"
-
-#. Tag: para
-#: intro.xml:366
-#, no-c-format
-msgid "Every local interface of an enterprise Web Bean that does not have a wildcard type parameter or type variable, and every one of its superinterfaces, is an API type of the enterprise Web Bean. If the EJB bean has a bean class local view, the bean class, and every one of its superclasses, is also an API type."
-msgstr "一个企业级Web Bean的本地接口,只要没有一个通配类型参数或者类型变量,它都是这个企业级Web Bean的API类型,该接口的每个父接口也都是这个企业级Web Bean的API类型。如果EJB Bean有一个Bean类的本地视图,这个Bean类和它的每个父类也是一个API类型。"
-
-#. Tag: para
-#: intro.xml:372
-#, no-c-format
-msgid "Stateful session beans should declare a remove method with no parameters or a remove method annotated <literal>@Destructor</literal>. The Web Bean manager calls this method to destroy the stateful session bean instance at the end of its lifecycle. This method is called the <emphasis>destructor</emphasis> method of the enterprise Web Bean."
-msgstr "有状态的会话Bean应该声明一个无参的删除方法或者一个拥有<literal>@Destructor</literal>注释的删除方法。Web Bean管理器将在这个有状态会话Bean实例的生命周期结束时调用这个方法。这个方法被称为企业级Web Bean的<emphasis>销毁</emphasis>方法。"
-
-#. Tag: programlisting
-#: intro.xml:378
-#, no-c-format
-msgid ""
-"<![CDATA[@Stateful @SessionScoped\n"
-"public class ShoppingCart {\n"
-"\n"
-"    ...\n"
-"    \n"
-"    @Remove\n"
-"    public void destroy() {}\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Stateful @SessionScoped\n"
-"public class ShoppingCart {\n"
-"\n"
-"    ...\n"
-"    \n"
-"    @Remove\n"
-"    public void destroy() {}\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:380
-#, no-c-format
-msgid "So when should we use an enterprise Web Bean instead of a simple Web Bean? Well, whenever we need the advanced enterprise services offered by EJB, such as:"
-msgstr "我们什么时候使用企业级Web Bean来替代简单Web Bean呢?当我们需要EJB提供的高级的企业服务的时候,例如:"
-
-#. Tag: para
-#: intro.xml:387
-#, no-c-format
-msgid "method-level transaction management and security,"
-msgstr "方法水平的事务管理和安全,"
-
-#. Tag: para
-#: intro.xml:390
-#, no-c-format
-msgid "concurrency management,"
-msgstr "并发管理"
-
-#. Tag: para
-#: intro.xml:393
-#, no-c-format
-msgid "instance-level passivation for stateful session beans and instance-pooling for stateless session beans,"
-msgstr "实例水平的有状态会话Bean的钝化和无状态会话Bean的实例池,"
-
-#. Tag: para
-#: intro.xml:397
-#, no-c-format
-msgid "remote and web service invocation, and"
-msgstr "远程或者Web服务调用,和"
-
-#. Tag: para
-#: intro.xml:400
-#, no-c-format
-msgid "timers and asynchronous methods,"
-msgstr "定时器以及异步方法,"
-
-#. Tag: para
-#: intro.xml:404
-#, no-c-format
-msgid "we should use an enterprise Web Bean. When we don't need any of these things, a simple Web Bean will serve just fine."
-msgstr "在这中情况下,我们应该使用一个企业级Web Bean。当我们不需要这些服务的时候,一个简单Web Bean就足够了。"
-
-#. Tag: para
-#: intro.xml:407
-#, no-c-format
-msgid "Many Web Beans (including any session or application scoped Web Bean) are available for concurrent access. Therefore, the concurrency management provided by EJB 3.1 is especially useful. Most session and application scoped Web Beans should be EJBs."
-msgstr "很多Web Bean(包括任何会话范围或者应用范围的Web Bean)都需要并发访问。因此,EJB3.1提供的并发管理相当有用。大部分会话范围和应用范围的Web Bean应该是EJB。"
-
-#. Tag: para
-#: intro.xml:412
-#, no-c-format
-msgid "Web Beans which hold references to heavy-weight resources, or hold a lot of internal state benefit from the advanced container-managed lifecycle defined by the EJB <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal> model, with its support for passivation and instance pooling."
-msgstr "对于拥有重量级资源引用或者大量内部状态的Web Bean来说,它能够从高级的容器管理的生命周期获得好处。这些生命周期由EJB的 <literal>@Stateless</literal>/<literal>@Stateful</literal>/<literal>@Singleton</literal>模型定义,它支持钝化和实例池。"
-
-#. Tag: para
-#: intro.xml:417
-#, no-c-format
-msgid "Finally, it's usually obvious when method-level transaction management, method-level security, timers, remote methods or asynchronous methods are needed."
-msgstr "最后,什么情况下应该使用方法水平的事务管理,方法水平的安全,计时器,远程方法或者异步方法应该是显而易见的。"
-
-#. Tag: para
-#: intro.xml:420
-#, no-c-format
-msgid "It's usually easy to start with simple Web Bean, and then turn it into an EJB, just by adding an annotation: <literal>@Stateless</literal>, <literal>@Stateful</literal> or <literal>@Singleton</literal>."
-msgstr "从简单Web Bean起步最容易,然后转换到EJB上,过程很简单,只须添加一个注释:<literal>@Stateless</literal>, <literal>@Stateful</literal> 或者 <literal>@Singleton</literal>。"
-
-#. Tag: title
-#: intro.xml:427
-#, no-c-format
-msgid "Producer methods"
-msgstr "生产者方法"
-
-#. Tag: para
-#: intro.xml:429
-#, no-c-format
-msgid "A <emphasis>producer method</emphasis> is a method that is called by the Web Bean manager to obtain an instance of the Web Bean when no instance exists in the current context. A producer method lets the application take full control of the instantiation process, instead of leaving instantiation to the Web Bean manager. For example:"
-msgstr "一个<emphasis>生产者方法</emphasis>由Web Bean管理器在当前上下文中没有某个Web Bean实例的时候调用,用以获得该Web Bean的一个实例。一个生产者方法能够让应用完全控制实例化的过程,而不是将初始化交给Web Bean管理器处理。例如:"
-
-#. Tag: programlisting
-#: intro.xml:435
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped\n"
-"public class Generator {\n"
-"\n"
-"    private Random random = new Random( System.currentTimeMillis() );\n"
-"    \n"
-"    @Produces @Random int next() {\n"
-"        return random.nextInt(100);\n"
-"    }\n"
-"\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@ApplicationScoped\n"
-"public class Generator {\n"
-"\n"
-"    private Random random = new Random( System.currentTimeMillis() );\n"
-"    \n"
-"    @Produces @Random int next() {\n"
-"        return random.nextInt(100);\n"
-"    }\n"
-"\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:437
-#, no-c-format
-msgid "The result of a producer method is injected just like any other Web Bean."
-msgstr "一个生产者方法的输出或者返回值将被注入到注入点中,就像其他任何的Web Bean一样。"
-
-#. Tag: programlisting
-#: intro.xml:439
-#, no-c-format
-msgid "<![CDATA[@Random int randomNumber]]>"
-msgstr "<![CDATA[@Random int randomNumber]]>"
-
-#. Tag: para
-#: intro.xml:441
-#, no-c-format
-msgid "The method return type and all interfaces it extends/implements directly or indirectly are API types of the producer method. If the return type is a class, all superclasses are also API types."
-msgstr "方法返回的类型和它直接或者间接继承或者实现的所有接口都是这个生产者方法的API类型。如果返回的类型一个类,其所有的父类也是API类型。"
-
-#. Tag: para
-#: intro.xml:445
-#, no-c-format
-msgid "Some producer methods return objects that require explicit destruction:"
-msgstr "一些生产者方法返回的对象需要显式地销毁"
-
-#. Tag: programlisting
-#: intro.xml:447
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
-"    return createConnection( user.getId(), user.getPassword() );\n"
-"}]]>"
-msgstr ""
-"<![CDATA[@Produces @RequestScoped Connection connect(User user) {\n"
-"    return createConnection( user.getId(), user.getPassword() );\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:449
-#, no-c-format
-msgid "These producer methods may define matching <emphasis>disposal methods</emphasis>:"
-msgstr "这些生产者方法可以定义对应的<emphasis>清除方法</emphasis>:"
-
-#. Tag: programlisting
-#: intro.xml:451
-#, no-c-format
-msgid ""
-"<![CDATA[void close(@Disposes Connection connection) {\n"
-"    connection.close();\n"
-"}]]>"
-msgstr ""
-"<![CDATA[void close(@Disposes Connection connection) {\n"
-"    connection.close();\n"
-"}]]>"
-
-#. Tag: para
-#: intro.xml:453
-#, no-c-format
-msgid "This disposal method is called automatically by the Web Bean manager at the end of the request."
-msgstr "这个清除方法将在请求结束的时候自动被Web Bean管理器调用。"
-
-#. Tag: para
-#: intro.xml:456
-#, no-c-format
-msgid "We'll talk much more about producer methods in <xref linkend=\"producermethods\"/>."
-msgstr "我们将在<xref linkend=\"producermethods\"/>一章中详述生产者方法。"
-
-#. Tag: title
-#: intro.xml:461
-#, no-c-format
-msgid "JMS endpoints"
-msgstr "JMS端点"
-
-#. Tag: para
-#: intro.xml:463
-#, no-c-format
-msgid "Finally, a JMS queue or topic can be a Web Bean. Web Beans relieves the developer from the tedium of managing the lifecycles of all the various JMS objects required to send messages to queues and topics. We'll discuss JMS endpoints in <xref linkend=\"jms\"/>."
-msgstr "最后,一个JMS的队列或者主题能够成为一个Web Bean。为了向队列或者主题发送消息,开发者不得不处理所有不同JMS对象的生命周期。Web Bean将开发者从这些冗长乏味的工作中解放出来。我们将在<xref linkend=\"jms\"/>一章中讨论JMS端点。"
-

Deleted: doc/trunk/reference/zh-CN/modules/next.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/next.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/next.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,39 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-23 16:53+0800\n"
-"Last-Translator: Sean Wu <alartin at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: next.xml:4
-#, no-c-format
-msgid "Next steps"
-msgstr "下一步"
-
-#. Tag: para
-#: next.xml:6
-#, no-c-format
-msgid "Because Web Beans is so new, there's not yet a lot of information available online."
-msgstr "因为Web Bean是新生事物,所以网上可以获得的有关信息很少。"
-
-#. Tag: para
-#: next.xml:9
-#, no-c-format
-msgid "Of course, the Web Beans specification is the best source of more information about Web Beans. The spec is about 100 pages long, only twice the length of this article, and almost as readable. But, of course, it covers many details that we've skipped over. The spec is available from <literal>http://jcp.org/en/jsr/detail?id=299</literal>."
-msgstr "当然,Web Bean规范是有关Web Bean信息的最佳来源。这个规范大约有100页,只是这个文章的两倍长,并且可读性很好。它覆盖了我们这里跳过的很多细节。这个规范可以从<literal>http://jcp.org/en/jsr/detail?id=299</literal>下载。"
-
-#. Tag: para
-#: next.xml:15
-#, no-c-format
-msgid "The Web Beans Reference implementation is being developed at <literal>http://seamframework.org/WebBeans</literal>. The RI development team and the Web Beans spec lead blog at <literal>http://in.relation.to</literal>. This article is substantially based upon a series of blog entries published there."
-msgstr "Web Bean参考实现正在<literal>http://seamframework.org/WebBeans</literal>项目中开发。参考实现的开发团队和Web Bean规范领导的博客位于<literal>http://in.relation.to</literal>。本篇文章的撰写完全基于先前发表在那里的一系列博客文章。"
-

Deleted: doc/trunk/reference/zh-CN/modules/part1.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/part1.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/part1.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,177 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-22 10:45+0800\n"
-"Last-Translator: Sean Wu <alartin at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: para
-#: part1.xml:5
-#, no-c-format
-msgid "The Web Beans (JSR-299) specification defines a set of services for the Java EE environment that makes applications much easier to develop. Web Beans layers an enhanced lifecycle and interaction model over existing Java component types including JavaBeans and Enterprise Java Beans. As a complement to the traditional Java EE programming model, the Web Beans services provide:"
-msgstr "The Web Beans (JSR-299)规范为Java EE环境定义了一套服务以便开发者能够更轻松地开发应用。Web Beans在现有的包括JavaBeans和企业JavaBeans在内的Java组件类型之上增强了生命周期和交互的模型层。作为传统的Java EE编程模型的补充,Web Beans服务提供了:"
-
-#. Tag: para
-#: part1.xml:14
-#, no-c-format
-msgid "an improved lifecycle for stateful components, bound to well-defined <emphasis>contexts</emphasis>,"
-msgstr "一个为有状态组件而改良的并且绑定到定义明确的 <emphasis>上下文</emphasis>上的生命周期,"
-
-#. Tag: para
-#: part1.xml:18
-#, no-c-format
-msgid "a typesafe approach to <emphasis>dependency injection</emphasis>,"
-msgstr "一个类型安全的<emphasis>依赖注入</emphasis>方法,"
-
-#. Tag: para
-#: part1.xml:21
-#, no-c-format
-msgid "interaction via an <emphasis>event notification</emphasis> facility, and"
-msgstr "通过 <emphasis>事件通知</emphasis> 机制实现的交互,并且"
-
-#. Tag: para
-#: part1.xml:25
-#, no-c-format
-msgid "a better approach to binding <emphasis>interceptors</emphasis> to components, along with a new kind of interceptor, called a <emphasis>decorator</emphasis>, that is more appropriate for use in solving business problems."
-msgstr "一个更好的将<emphasis>拦截器</emphasis>绑定到组件上的方法,同时提供了一个名为<emphasis>装饰器(decorator)</emphasis>的新型拦截器,这种拦截器更加适合解决业务问题。"
-
-#. Tag: para
-#: part1.xml:32
-#, no-c-format
-msgid "Dependency injection, together with contextual lifecycle management, saves the user of an unfamiliar API from having to ask and answer the following questions:"
-msgstr "依赖注入和具备上下文的生命周期管理节省了开发者出于对接口的不熟悉而不得不处理下列问题所浪费时间:"
-
-#. Tag: para
-#: part1.xml:38
-#, no-c-format
-msgid "what is the lifecycle of this object?"
-msgstr "这个对象的生命周期是什么?"
-
-#. Tag: para
-#: part1.xml:41
-#, no-c-format
-msgid "how many simultaneous clients can it have?"
-msgstr "它能够有多少个并发的客户端"
-
-#. Tag: para
-#: part1.xml:44
-#, no-c-format
-msgid "is it multithreaded?"
-msgstr "它是多线程的么?"
-
-#. Tag: para
-#: part1.xml:47
-#, no-c-format
-msgid "where can I get one from?"
-msgstr "我能从哪里得到一个对象?"
-
-#. Tag: para
-#: part1.xml:50
-#, no-c-format
-msgid "do I need to explicitly destroy it?"
-msgstr "我需要显式地销毁它么?"
-
-#. Tag: para
-#: part1.xml:53
-#, no-c-format
-msgid "where should I keep my reference to it when I'm not using it directly?"
-msgstr "当我不再直接使用它的时候,我需要将它的引用保存到哪里?"
-
-#. Tag: para
-#: part1.xml:57
-#, no-c-format
-msgid "how can I add an indirection layer, so that the implementation of this object can vary at deployment time?"
-msgstr "我如何才能添加一个间接层,以便在部署的时候可以更换这个对象的不同实现?"
-
-#. Tag: para
-#: part1.xml:61
-#, no-c-format
-msgid "how should I go about sharing this object between other objects?"
-msgstr "我应该如何在其他对象中共享这个对象?"
-
-#. Tag: para
-#: part1.xml:65
-#, no-c-format
-msgid "A Web Bean specifies only the type and semantics of other Web Beans it depends upon. It need not be aware of the actual lifecycle, concrete implementation, threading model or other clients of any Web Bean it depends upon. Even better, the concrete implementation, lifecycle and threading model of a Web Bean it depends upon may vary according to the deployment scenario, without affecting any client."
-msgstr "一个Web Bean仅仅需要指定它所依赖的其他Web Bean的类型和语义。它不需要知道他所依赖的任何Web Bean的实际生命周期,具体的实现,线程模型或者这个Web Bean的其他客户端。更棒的是,它所依赖的Web Bean的具体实现和生命周期,线程模型可以根据部署场景而更改,却丝毫不影响任何客户端。"
-
-#. Tag: para
-#: part1.xml:72
-#, no-c-format
-msgid "Events, interceptors and decorators enhance the <emphasis>loose-coupling</emphasis> that is inherent in this model:"
-msgstr "事件,拦截器和装饰器增强了这个模型固有的<emphasis>松耦合</emphasis>特性:"
-
-#. Tag: para
-#: part1.xml:77
-#, no-c-format
-msgid "<emphasis>event notifications</emphasis> decouple event producers from event consumers,"
-msgstr "<emphasis>事件通知</emphasis>将事件的消费者和事件的产生者解耦,"
-
-#. Tag: para
-#: part1.xml:81
-#, no-c-format
-msgid "<emphasis>interceptors</emphasis> decouple technical concerns from business logic, and"
-msgstr "<emphasis>拦截器</emphasis>将技术关注点从业务逻辑中解耦,并且"
-
-#. Tag: para
-#: part1.xml:85
-#, no-c-format
-msgid "<emphasis>decorators</emphasis> allow business concerns to be compartmentalized."
-msgstr "<emphasis>装饰器</emphasis>允许开发者划分业务关注点。"
-
-#. Tag: para
-#: part1.xml:90
-#, no-c-format
-msgid "Most importantly, Web Beans provides all these facilities in a <emphasis>typesafe</emphasis> way. Web Beans never uses string-based identifiers to determine how collaborating objects fit together. And XML, though it remains an option, is rarely used. Instead, Web Beans uses the typing information that is already available in the Java object model, together with a new pattern, called <emphasis>binding annotations</emphasis>, to wire together Web Beans, their dependencies, their interceptors and decorators and their event consumers."
-msgstr "最重要的是,Web Beans以一种<emphasis>类型安全</emphasis>的方式提供所有的特性。Web Beans从来不使用基于字符串的标识符来决定交互的对象如何关联在一起。至于XML, 虽然它仍旧是一个选项,但也可以几乎不使用。取而代之,Web Bean使用Java对象模型的类型信息和一种新的<emphasis>绑定注释</emphasis>模式将Web Beans和它们的依赖以及拦截器,装饰器和事件消费者关联在一起。"
-
-#. Tag: para
-#: part1.xml:100
-#, no-c-format
-msgid "The Web Beans services are general and apply to the following types of components that exist in the Java EE environment:"
-msgstr "Web Beans服务是相当普遍的,可以应用在下列Java EE环境中的组件类型中:"
-
-#. Tag: para
-#: part1.xml:105
-#, no-c-format
-msgid "all JavaBeans,"
-msgstr "所有的JavaBeans,"
-
-#. Tag: para
-#: part1.xml:108
-#, no-c-format
-msgid "all EJBs, and"
-msgstr "所有的EJB, 和"
-
-#. Tag: para
-#: part1.xml:111
-#, no-c-format
-msgid "all Servlets."
-msgstr "所有的Servlet。"
-
-#. Tag: para
-#: part1.xml:115
-#, no-c-format
-msgid "Web Beans even provides the necessary integration points so that other kinds of components defined by future Java EE specifications or by non-standard frameworks may be cleanly integrated with Web Beans, take advantage of the Web Beans services, and interact with any other kind of Web Bean."
-msgstr "Web Beans甚至提供了必要的整合点,以便未来的Java EE规范或者其他非标准的框架中的不同组件能够和Web Beans轻松整合,使用Web Beans服务以及和任何其他类型的Web Bean交互。"
-
-#. Tag: para
-#: part1.xml:120
-#, no-c-format
-msgid "Web Beans was influenced by a number of existing Java frameworks, including Seam, Guice and Spring. However, Web Beans has its own very distinct character: more typesafe than Seam, more stateful and less XML-centric than Spring, more web and enterprise-application capable than Guice."
-msgstr "Web Beans受到了包括Seam, Guice和Spring在内的很多现有的Java框架的影响。然而,Web Beans具有自己鲜明的特性:在类型安全方面优于Seam,比Spring更加具备状态和使用更少的XML, 比Guice更加具备Web和企业应用的能力。"
-
-#. Tag: para
-#: part1.xml:125
-#, no-c-format
-msgid "Most importantly, Web Beans is a JCP standard that integrates cleanly with Java EE, and with any Java SE environment where embeddable EJB Lite is available."
-msgstr "最重要的是,Web Beans是一个JCP标准,能够干净地整合到Java EE中。Web Beans也可以整合到任何使用轻量的内嵌EJB的Java SE环境中。"
-

Deleted: doc/trunk/reference/zh-CN/modules/part2.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/part2.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/part2.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,81 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-23 17:08+0800\n"
-"Last-Translator: Sean Wu <alartin at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: para
-#: part2.xml:5
-#, no-c-format
-msgid "The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. We've already seen three means of achieving loose coupling:"
-msgstr "Web Bean的首要宗旨就是<emphasis>松耦合</emphasis>。我们已经看到三种实现松耦合的方法:"
-
-#. Tag: para
-#: part2.xml:10
-#, no-c-format
-msgid "<emphasis>deployment types</emphasis> enable deployment time polymorphism,"
-msgstr "<emphasis>部署类型</emphasis>能够实现部署时多态性"
-
-#. Tag: para
-#: part2.xml:14
-#, no-c-format
-msgid "<emphasis>producer methods</emphasis> enable runtime polymorphism, and"
-msgstr "<emphasis>生产者方法</emphasis>能够实现运行时多态性,并且"
-
-#. Tag: para
-#: part2.xml:18
-#, no-c-format
-msgid "<emphasis>contextual lifecycle management</emphasis> decouples Web Bean lifecycles."
-msgstr "<emphasis>具备上下文的生命周期管理</emphasis>将Web Bean的生命周期解耦。"
-
-#. Tag: para
-#: part2.xml:23
-#, no-c-format
-msgid "These techniques serve to enable loose coupling of client and server. The client is no longer tightly bound to an implementation of an API, nor is it required to manage the lifecycle of the server object. This approach lets <emphasis>stateful objects interact as if they were services</emphasis>."
-msgstr "这些技术都是为了将客户端和服务器端解耦。客户端不在和一个API的具体实现紧密绑定,也不需要管理服务器端对象的生命周期。这种方法<emphasis>能够让有状态的对象像服务一样交互</emphasis>。"
-
-#. Tag: para
-#: part2.xml:28
-#, no-c-format
-msgid "Loose coupling makes a system more <emphasis>dynamic</emphasis>. The system can respond to change in a well-defined manner. In the past, frameworks that attempted to provide the facilities listed above invariably did it by sacrificing type safety. Web Beans is the first technology that achieves this level of loose coupling in a typesafe way."
-msgstr "松耦合能够让系统更加<emphasis>动态</emphasis>。系统可以以定义良好的方式来相应变化。在过去,多数框架总是通过牺牲类型安全来提供上述功能。实现此种高度的松耦合,同时又能够保证类型安全,Web Beans是第一个实现这个目标的技术。"
-
-#. Tag: para
-#: part2.xml:34
-#, no-c-format
-msgid "Web Beans provides three extra important facilities that further the goal of loose coupling:"
-msgstr "Web Bean提供三种额外的功能来实现松耦合的目标:"
-
-#. Tag: para
-#: part2.xml:39
-#, no-c-format
-msgid "<emphasis>interceptors</emphasis> decouple technical concerns from business logic,"
-msgstr "<emphasis>拦截器</emphasis>能够将技术关注点从业务逻辑中解耦。"
-
-#. Tag: para
-#: part2.xml:43
-#, no-c-format
-msgid "<emphasis>decorators</emphasis> may be used to decouple some business concerns, and"
-msgstr "<emphasis>装饰器</emphasis>能够将一些业务关注点解耦,并且"
-
-#. Tag: para
-#: part2.xml:47
-#, no-c-format
-msgid "<emphasis>event notifications</emphasis> decouple event producers from event consumers."
-msgstr "<emphasis>事件通知</emphasis>机制能将事件消费者和事件生产者解耦。"
-
-#. Tag: para
-#: part2.xml:52
-#, no-c-format
-msgid "Let's explore interceptors first."
-msgstr "让我们首先研究拦截器。"
-

Deleted: doc/trunk/reference/zh-CN/modules/part3.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/part3.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/part3.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,117 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-23 17:29+0800\n"
-"Last-Translator: Sean Wu <alartin at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: para
-#: part3.xml:5
-#, no-c-format
-msgid "The second major theme of Web Beans is <emphasis>strong typing</emphasis>. The information about the dependencies, interceptors and decorators of a Web Bean, and the information about event consumers for an event producer, is contained in typesafe Java constructs that may be validated by the compiler."
-msgstr "Web Bean的第二个宗旨是<emphasis>强类型</emphasis>。Web Bean有关依赖,拦截器和装饰器的信息以及事件生产者对应的事件消费者的信息都包含在类型安全的Java构件中,可以被编译器验证。"
-
-#. Tag: para
-#: part3.xml:10
-#, no-c-format
-msgid "You don't see string-based identifiers in Web Beans code, not because the framework is hiding them from you using clever defaulting rules&#151;so-called \"configuration by convention\"&#151;but because there are simply no strings there to begin with!"
-msgstr "在Web Bean代码中,你不会看到基于字符串的标识符。这不是因为这个框架使用智能默认规则&#151;也叫\"按惯例配置\"&#151;将它们隐藏起来,这是因为从开始就没有任何字符串!"
-
-#. Tag: para
-#: part3.xml:15
-#, no-c-format
-msgid "The obvious benefit of this approach is that <emphasis>any</emphasis> IDE can provide autocompletion, validation and refactoring without the need for special tooling. But there is a second, less-immediately-obvious, benefit. It turns out that when you start thinking of identifying objects, events or interceptors via annotations instead of names, you have an opportunity to lift the semantic level of your code."
-msgstr "这种方法的显而易见的好处是<emphasis>任何</emphasis>IDE都可以提供自动完成,验证和重构而无需任何特殊工具。除此之外,还有第二个,不是那么明显的好处。它能够让你考虑识别对象,事件或者拦截器的时候使用注释,而不是名字,这样你将可以提升你的代码的语义水平。"
-
-#. Tag: para
-#: part3.xml:21
-#, no-c-format
-msgid "Web Beans encourages you develop annotations that model concepts, for example,"
-msgstr "Web Beans能够鼓励你为概念建模,开发注释。例如:"
-
-#. Tag: para
-#: part3.xml:26
-#, no-c-format
-msgid "<literal>@Asynchronous</literal>,"
-msgstr "<literal>@Asynchronous</literal>,"
-
-#. Tag: para
-#: part3.xml:29
-#, no-c-format
-msgid "<literal>@Mock</literal>,"
-msgstr "<literal>@Mock</literal>,"
-
-#. Tag: para
-#: part3.xml:32
-#, no-c-format
-msgid "<literal>@Secure</literal> or"
-msgstr "<literal>@Secure</literal> or"
-
-#. Tag: para
-#: part3.xml:35
-#, no-c-format
-msgid "<literal>@Updated</literal>,"
-msgstr "<literal>@Updated</literal>,"
-
-#. Tag: para
-#: part3.xml:39
-#, no-c-format
-msgid "instead of using compound names like"
-msgstr "而不是使用复合名字,像:"
-
-#. Tag: para
-#: part3.xml:43
-#, no-c-format
-msgid "<literal>asyncPaymentProcessor</literal>,"
-msgstr "<literal>asyncPaymentProcessor</literal>,"
-
-#. Tag: para
-#: part3.xml:46
-#, no-c-format
-msgid "<literal>mockPaymentProcessor</literal>,"
-msgstr "<literal>mockPaymentProcessor</literal>,"
-
-#. Tag: para
-#: part3.xml:49
-#, no-c-format
-msgid "<literal>SecurityInterceptor</literal> or"
-msgstr "<literal>SecurityInterceptor</literal> or"
-
-#. Tag: para
-#: part3.xml:52
-#, no-c-format
-msgid "<literal>DocumentUpdatedEvent</literal>."
-msgstr "<literal>DocumentUpdatedEvent</literal>."
-
-#. Tag: para
-#: part3.xml:56
-#, no-c-format
-msgid "The annotations are reusable. They help describe common qualities of disparate parts of the system. They help us categorize and understand our code. They help us deal with common concerns in a common way. They make our code more literate and more understandable."
-msgstr "注释可以重用。它们能够描述系统不同部分的通用特征。它们能够帮助我们分类和理解我们的代码。它们能够以通用的方式为我们处理共同的关注点。它们能够让我们的代码具有更高的可读性,更加容易被理解。"
-
-#. Tag: para
-#: part3.xml:61
-#, no-c-format
-msgid "Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A stereotype models a common <emphasis>role</emphasis> in your application architecture. It encapsulates various properties of the role, including scope, interceptor bindings, deployment type, etc, into a single reusable package."
-msgstr "Web Beans的<emphasis>模板</emphasis>是这种思想的延伸。一个模板为我们应用体系中的一个通用的<emphasis>角色</emphasis>建模。它将一个角色的各种不同的属性,包括范围,拦截器绑定,部署类型,等等封装到一个单一的可重用的包中。"
-
-#. Tag: para
-#: part3.xml:66
-#, no-c-format
-msgid "Even Web Beans XML metadata is strongly typed! There's no compiler for XML, so Web Beans takes advantage of XML schemas to validate the Java types and attributes that appear in XML. This approach turns out to make the XML more literate, just like annotations made our Java code more literate."
-msgstr "甚至Web Bean的XML元数据也是强类型的!对于XML没有编译器,Web Bean充分利用了XML模式去验证XML中出现的Java类型和属性。这种方式让XML更加具有可读性,就像注释让我们的Java代码更加具有可读性一样。"
-
-#. Tag: para
-#: part3.xml:71
-#, no-c-format
-msgid "We're now ready to meet some more advanced features of Web Beans. Bear in mind that these features exist to make our code both easier to validate and more understandable. Most of the time you don't ever really <emphasis>need</emphasis> to use these features, but if you use them wisely, you'll come to appreciate their power."
-msgstr "我们现在可以接触Web Bean中更加高级的特性了。要记住这些特性能够让我们的代码不仅更容易验证,也更容易理解。大部分时间,你根本不<emphasis>需要</emphasis>这些特性,但是如果你能聪明地运用它们的话,你将充分体会到它们的强大。"
-

Deleted: doc/trunk/reference/zh-CN/modules/part4.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/part4.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/part4.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,33 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml\n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-23 17:48+0800\n"
-"Last-Translator: Sean Wu <alartin at gmail.com>\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: para
-#: part4.xml:5
-#, no-c-format
-msgid "The third theme of Web Beans is <emphasis>integration</emphasis>. Web Beans was designed to work in concert with other technologies, helping the application developer fit the other technologies together. Web Beans is an open technology. It forms a part of the Java EE ecosystem, and is itself the foundation for a new ecosystem of portable extensions and integration with existing frameworks and technologies."
-msgstr "Web Bean的第三个宗旨是<emphasis>整合</emphasis>。Web Bean设计思想就是能够和其他的技术相互合作,能够让开发者更容易地将其他技术结合使用。Web Bean是一个开发的技术。它形成了Java EE生态系统的一部分,而它本身也是一个新的生态系统的基石,这个新的生态系统能够为已有的框架和技术提供一个更便携的扩展和整合机制。"
-
-#. Tag: para
-#: part4.xml:12
-#, no-c-format
-msgid "We've already seen how Web Beans helps integrate EJB and JSF, allowing EJBs to be bound directly to JSF pages. That's just the beginning. Web Beans offers the same potential to diverse other technologies, such as Business Process Management engines, other Web Frameworks, and third-party component models. The Java EE platform will never be able to standardize all the interesting technologies that are used in the world of Java application development, but Web Beans makes it easier to use the technologies which are not yet part of the platform seamlessly within the Java EE environment."
-msgstr "我们已经看到了Web Bean如何帮助整合EJB和JSF, 允许我们将EJB直接绑定到JSF页面上。而这只是开始,Web Bean为其他技术提供了同样的潜在能力,例如业务流程管理引擎,其他的Web框架,第三方组件模型。Java EE平台永远不可能将Java应用开发世界中所有有意思的技术都标准化。但是Web Bean能够提供一个便捷的方式将这些尚未成为平台一部分的技术更加容易并且无缝地集成到Java EE环境中。"
-
-#. Tag: para
-#: part4.xml:21
-#, no-c-format
-msgid "We're about to see how to take full advantage of the Java EE platform in an application that uses Web Beans. We'll also briefly meet a set of SPIs that are provided to support portable extensions to Web Beans. You might not ever need to use these SPIs directly, but it's nice to know they are there if you need them. Most importantly, you'll take advantage of them indirectly, every time you use a third-party extension."
-msgstr "我们已经看到了如何在应用中使用Web Bean来充分利用Java EE平台。我们也粗略地看到了一些能够支持Web Bean的便携性扩展点的SPI。你也许永远不回直接使用这些SPI,但是,知道在需要的时候你可以使用它们很有好处。最重要的是,每次你使用一个第三方扩展的时候,都有可能间接地利用了它们。"
-

Deleted: doc/trunk/reference/zh-CN/modules/producermethods.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/producermethods.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/producermethods.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,247 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:08+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: producermethods.xml:5
-#, no-c-format
-msgid "Producer methods"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:7
-#, no-c-format
-msgid ""
-"Producer methods let us overcome certain limitations that arise when the Web "
-"Bean manager, instead of the application, is responsible for instantiating "
-"objects. They're also the easiest way to integrate objects which are not Web "
-"Beans into the Web Beans environment. (We'll meet a second approach in <xref "
-"linkend=\"xml\"/>.)"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:12
-#, no-c-format
-msgid "According to the spec:"
-msgstr ""
-
-#. Tag: chapter
-#: producermethods.xml:12
-#, no-c-format
-msgid ""
-"<blockquote> <para>A Web Beans producer method acts as a source of objects "
-"to be injected, where:</para> <itemizedlist> <listitem> <para>the objects to "
-"be injected are not required to be instances of Web Beans,</para> </"
-"listitem> <listitem> <para>the concrete type of the objects to be injected "
-"may vary at runtime or</para> </listitem> <listitem> <para>the objects "
-"require some custom initialization that is not performed by the Web Bean "
-"constructor</para> </listitem> </itemizedlist> </blockquote> <para>For "
-"example, producer methods let us:</para> <itemizedlist> <listitem> "
-"<para>expose a JPA entity as a Web Bean,</para> </listitem> <listitem> "
-"<para>expose any JDK class as a Web Bean,</para> </listitem> <listitem> "
-"<para>define multiple Web Beans, with different scopes or initialization, "
-"for the same implementation class, or</para> </listitem> <listitem> "
-"<para>vary the implementation of an API type at runtime.</para> </listitem> "
-"</itemizedlist> <para>In particular, producer methods let us use runtime "
-"polymorphism with Web Beans. As we've seen, deployment types are a powerful "
-"solution to the problem of deployment-time polymorphism. But once the system "
-"is deployed, the Web Bean implementation is fixed. A producer method has no "
-"such limitation:</para> <programlisting role=\"JAVA\"><![CDATA"
-"[@SessionScoped\n"
-"public class Preferences {\n"
-"    \n"
-"    private PaymentStrategyType paymentStrategy;\n"
-"    \n"
-"    ...\n"
-"    \n"
-"    @Produces @Preferred \n"
-"    public PaymentStrategy getPaymentStrategy() {\n"
-"        switch (paymentStrategy) {\n"
-"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
-"            case CHEQUE: return new ChequePaymentStrategy();\n"
-"            case PAYPAL: return new PayPalPaymentStrategy();\n"
-"            default: return null;\n"
-"        } \n"
-"    }\n"
-"    \n"
-"}]]></programlisting> <para>Consider an injection point:</para> "
-"<programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy "
-"paymentStrat;]]></programlisting> <para>This injection point has the same "
-"type and binding annotations as the producer method, so it resolves to the "
-"producer method using the usual Web Beans injection rules. The producer "
-"method will be called by the Web Bean manager to obtain an instance to "
-"service this injection point.</para>."
-msgstr ""
-
-#. Tag: title
-#: producermethods.xml:68
-#, no-c-format
-msgid "Scope of a producer method"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:70
-#, no-c-format
-msgid ""
-"The scope of the producer method defaults to <literal>@Dependent</literal>, "
-"and so it will be called <emphasis>every time</emphasis> the Web Bean "
-"manager injects this field or any other field that resolves to the same "
-"producer method. Thus, there could be multiple instances of the "
-"<literal>PaymentStrategy</literal> object for each user session."
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:75
-#, no-c-format
-msgid ""
-"To change this behavior, we can add a <literal>@SessionScoped</literal> "
-"annotation to the method."
-msgstr ""
-
-#. Tag: programlisting
-#: producermethods.xml:78
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy() {\n"
-"    ...\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:80
-#, no-c-format
-msgid ""
-"Now, when the producer method is called, the returned "
-"<literal>PaymentStrategy</literal> will be bound to the session context. The "
-"producer method won't be called again in the same session."
-msgstr ""
-
-#. Tag: title
-#: producermethods.xml:87
-#, no-c-format
-msgid "Injection into producer methods"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:89
-#, no-c-format
-msgid ""
-"There's one potential problem with the code above. The implementations of "
-"<literal>CreditCardPaymentStrategy</literal> are instantiated using the Java "
-"<literal>new</literal> operator. Objects instantiated directly by the "
-"application can't take advantage of dependency injection and don't have "
-"interceptors."
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:94
-#, no-c-format
-msgid ""
-"If this isn't what we want we can use dependency injection into the producer "
-"method to obtain Web Bean instances:"
-msgstr ""
-
-#. Tag: programlisting
-#: producermethods.xml:97
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
-"                                          ChequePaymentStrategy cps,\n"
-"                                          PayPalPaymentStrategy ppps) {\n"
-"    switch (paymentStrategy) {\n"
-"        case CREDIT_CARD: return ccps;\n"
-"        case CHEQUE: return cps;\n"
-"        case PAYPAL: return ppps;\n"
-"        default: return null;\n"
-"    } \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:99
-#, no-c-format
-msgid ""
-"Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request "
-"scoped Web Bean? Then the producer method has the effect of \"promoting\" "
-"the current request scoped instance into session scope. This is almost "
-"certainly a bug! The request scoped object will be destroyed by the Web Bean "
-"manager before the session ends, but the reference to the object will be "
-"left \"hanging\" in the session scope. This error will <emphasis>not</"
-"emphasis> be detected by the Web Bean manager, so please take extra care "
-"when returning Web Bean instances from producer methods!"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:107
-#, no-c-format
-msgid ""
-"There's at least three ways we could go about fixing this bug. We could "
-"change the scope of the <literal>CreditCardPaymentStrategy</literal> "
-"implementation, but this would affect other clients of that Web Bean. A "
-"better option would be to change the scope of the producer method to "
-"<literal>@Dependent</literal> or <literal>@RequestScoped</literal>."
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:113
-#, no-c-format
-msgid ""
-"But a more common solution is to use the special <literal>@New</literal> "
-"binding annotation."
-msgstr ""
-
-#. Tag: title
-#: producermethods.xml:119
-#, no-c-format
-msgid "Use of <literal>@New</literal> with producer methods"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:121
-#, no-c-format
-msgid "Consider the following producer method:"
-msgstr ""
-
-#. Tag: programlisting
-#: producermethods.xml:123
-#, no-c-format
-msgid ""
-"<![CDATA[@Produces @Preferred @SessionScoped\n"
-"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy "
-"ccps,\n"
-"                                          @New ChequePaymentStrategy cps,\n"
-"                                          @New PayPalPaymentStrategy ppps) "
-"{\n"
-"    switch (paymentStrategy) {\n"
-"        case CREDIT_CARD: return ccps;\n"
-"        case CHEQUE: return cps;\n"
-"        case PAYPAL: return ppps;\n"
-"        default: return null;\n"
-"    } \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: producermethods.xml:125
-#, no-c-format
-msgid ""
-"Then a new <emphasis>dependent</emphasis> instance of "
-"<literal>CreditCardPaymentStrategy</literal> will be created, passed to the "
-"producer method, returned by the producer method and finally bound to the "
-"session context. The dependent object won't be destroyed until the "
-"<literal>Preferences</literal> object is destroyed, at the end of the "
-"session."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/ri-spi.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/ri-spi.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/ri-spi.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,275 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:07+0000\n"
-"PO-Revision-Date: 2008-12-20 22:07+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: ri-spi.xml:4
-#, no-c-format
-msgid "Integrating the Web Beans RI into other environments"
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:6
-#, no-c-format
-msgid ""
-"Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI into "
-"other EE environments (for example another application server like "
-"Glassfish), into a servlet container (like Tomcat), or with an Embedded "
-"EJB3.1 implementation is fairly easy. In this Appendix we will briefly "
-"discuss the steps needed."
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:15
-#, no-c-format
-msgid ""
-"It should be possible to run Web Beans in an SE environment, but you'll to "
-"do more work, adding your own contexts and lifecycle. The Web Beans RI "
-"currently doesn't expose lifecycle extension points, so you would have to "
-"code directly against Web Beans RI classes."
-msgstr ""
-
-#. Tag: title
-#: ri-spi.xml:24
-#, no-c-format
-msgid "The Web Beans RI SPI"
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:26
-#, no-c-format
-msgid ""
-"The Web Beans SPI is located in <literal>webbeans-ri-spi</literal> module, "
-"and packaged as <literal>webbeans-ri-spi.jar</literal>."
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:31
-#, no-c-format
-msgid "Currently, the only SPI to implement is the bootstrap spi:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri-spi.xml:35
-#, no-c-format
-msgid ""
-"<![CDATA[public interface WebBeanDiscovery {\n"
-"   /**\n"
-"    * Gets list of all classes in classpath archives with web-beans.xml "
-"files\n"
-"    * \n"
-"    * @return An iterable over the classes \n"
-"    */\n"
-"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
-"   \n"
-"   /**\n"
-"    * Gets a list of all web-beans.xml files in the app classpath\n"
-"    * \n"
-"    * @return An iterable over the web-beans.xml files \n"
-"    */\n"
-"   public Iterable<URL> discoverWebBeansXml();\n"
-"   \n"
-"   /**\n"
-"    * Gets a descriptor for each EJB in the application\n"
-"    * \n"
-"    * @return The bean class to descriptor map \n"
-"    */\n"
-"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
-"   \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:37
-#, no-c-format
-msgid ""
-"The discovery of Web Bean classes and <literal>web-bean.xml</literal> files "
-"is self-explanatory (the algorithm is described in Section 11.1 of the JSR-"
-"299 specification, and isn't repeated here)."
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:43
-#, no-c-format
-msgid ""
-"The Web Beans RI also delegates EJB3 bean discovery to the container so that "
-"it doesn't have to scan for EJB3 annotations or parse <literal>ejb-jar.xml</"
-"literal>. For each EJB in the application an EJBDescriptor should be "
-"discovered:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri-spi.xml:50
-#, no-c-format
-msgid ""
-"<![CDATA[public interface EjbDescriptor<T> {\n"
-"   \n"
-"   /**\n"
-"    * Gets the EJB type\n"
-"    * \n"
-"    * @return The EJB Bean class\n"
-"    */\n"
-"   public Class<T> getType();\n"
-"\n"
-"   /**\n"
-"    * Gets the local business interfaces of the EJB\n"
-"    * \n"
-"    * @return An iterator over the local business interfaces\n"
-"    */\n"
-"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces"
-"();\n"
-"   \n"
-"   /**\n"
-"    * Gets the remote business interfaces of the EJB\n"
-"    * \n"
-"    * @return An iterator over the remote business interfaces\n"
-"    */\n"
-"   public Iterable<BusinessInterfaceDescriptor<?>> "
-"getRemoteBusinessInterfaces();\n"
-"   \n"
-"   /**\n"
-"    * Get the remove methods of the EJB\n"
-"    * \n"
-"    * @return An iterator over the remove methods\n"
-"    */\n"
-"   public Iterable<MethodDescriptor> getRemoveMethods();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the bean is stateless\n"
-"    * \n"
-"    * @return True if stateless, false otherwise\n"
-"    */\n"
-"   public boolean isStateless();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the bean is a EJB 3.1 Singleton\n"
-"    * \n"
-"    * @return True if the bean is a singleton, false otherwise\n"
-"    */\n"
-"   public boolean isSingleton();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the EJB is stateful\n"
-"    * \n"
-"    * @return True if the bean is stateful, false otherwise\n"
-"    */\n"
-"   public boolean isStateful();\n"
-"\n"
-"   /**\n"
-"    * Indicates if the EJB is and MDB\n"
-"    * \n"
-"    * @return True if the bean is an MDB, false otherwise\n"
-"    */\n"
-"   public boolean isMessageDriven();\n"
-"\n"
-"   /**\n"
-"    * Gets the EJB name\n"
-"    * \n"
-"    * @return The name\n"
-"    */\n"
-"   public String getEjbName();\n"
-"   \n"
-"   /**\n"
-"    * @return The JNDI string which can be used to lookup a proxy which \n"
-"    * implements all local business interfaces \n"
-"    * \n"
-"    */\n"
-"   public String getLocalJndiName();\n"
-"   \n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:52
-#, no-c-format
-msgid ""
-"The contract described the JavaDoc is enough to implement an EJBDescriptor. "
-"In addition to these two interfaces, there is "
-"<literal>BusinessInterfaceDescriptor</literal> which represents a local "
-"business interface (encapsulating the interface class and jndi name), and "
-"<literal>MethodDescriptor</literal> which encapsulates the method name and "
-"parameter types (allowing it to be invoked on any instance of the EJB, proxy "
-"or otherwise)."
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:62
-#, no-c-format
-msgid ""
-"The Web Beans RI can be told to load your implementation of "
-"<literal>WebBeanDiscovery</literal> using the property <literal>org.jboss."
-"webbeans.bootstrap.webBeanDiscovery</literal> with the fully qualified class "
-"name as the value. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri-spi.xml:69
-#, no-c-format
-msgid ""
-"org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration."
-"jbossas.WebBeanDiscoveryImpl"
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:71
-#, no-c-format
-msgid ""
-"The property can either be specified as a system property, or in a "
-"properties file <literal>META-INF/web-beans-ri.properties</literal>."
-msgstr ""
-
-#. Tag: title
-#: ri-spi.xml:79
-#, no-c-format
-msgid "The contract with the container"
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:81
-#, no-c-format
-msgid ""
-"There are a number of requirements that the Web Beans RI places on the "
-"container for correct functioning that fall outside implementation of APIs"
-msgstr ""
-
-#. Tag: term
-#: ri-spi.xml:89
-#, no-c-format
-msgid "Classloader isolation"
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:93
-#, no-c-format
-msgid ""
-"If you are integrating the Web Beans into an environment that supports "
-"deployment of applications, you must enable, automatically, or through user "
-"configuation, classloader isolation for each Web Beans application"
-msgstr ""
-
-#. Tag: term
-#: ri-spi.xml:102
-#, no-c-format
-msgid "The <literal>webbeans-ri.jar</literal>"
-msgstr ""
-
-#. Tag: para
-#: ri-spi.xml:106
-#, no-c-format
-msgid ""
-"If you are integrating the Web Beans into an environment that supports "
-"deployment of applications, you must insert the <literal>webbeans-ri.jar</"
-"literal> into the applications isolated classloader. It cannot be loaded "
-"from a shared classloader."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/ri.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/ri.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/ri.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,913 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-20 22:08+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: ri.xml:4
-#, no-c-format
-msgid "Using the Web Beans Reference Implementation"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:6
-#, no-c-format
-msgid ""
-"The Web Beans RI comes with a two examples, <literal>webbeans-numberguess</"
-"literal> (a war example, containing only simple beans) and <literal>webbeans-"
-"translator</literal> (an ear example, containing enterprise beans)."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:13
-#, no-c-format
-msgid ""
-"Currently, the Web Beans RI only runs on JBoss Application Server 5. You'll "
-"need to download JBoss AS 5.0.0.GA from <ulink url=\"http://www.jboss.org/"
-"jbossas/downloads/\">jboss.org</ulink>, and unzip it. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:20
-#, no-c-format
-msgid ""
-"<![CDATA[$ cd /Applications\n"
-"$ unzip ~/jboss-5.0.0.GA.zip]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:22
-#, no-c-format
-msgid ""
-"Next, download the Web Beans RI from <ulink url=\"http://seamframework.org/"
-"WebBeans\">seamframework.org</ulink>, and unzip it. For example"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:28
-#, no-c-format
-msgid ""
-"<![CDATA[$ cd ~/\n"
-"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:31
-#, no-c-format
-msgid ""
-"Next, we need to tell Web Beans where JBoss is located. Edit <literal>jboss-"
-"as/build.properties</literal> and set the <literal>jboss.home</literal> "
-"property. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:37
-#, no-c-format
-msgid "jboss.home=/Applications/jboss-5.0.0.GA"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:39
-#, no-c-format
-msgid ""
-"As Web Beans is a new piece of software, you need to update JBoss AS to run "
-"the Web Beans RI. Future versions of JBoss AS will include these updates, "
-"and this step won't be necessary."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:46
-#, no-c-format
-msgid ""
-"Currently, two updates are needed. Firstly, a new deployer, "
-"<literal>webbeans.deployer</literal> is added. This adds supports for Web "
-"Bean archives to JBoss AS, and allows the Web Beans RI to query the EJB3 "
-"container and discover which EJBs are installed in your application. "
-"Secondly, an update to JBoss EJB3 is needed."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:55
-#, no-c-format
-msgid ""
-"To install the update, you'll need ant 1.7.0 installed, and the "
-"<literal>ANT_HOME</literal> environment variable set. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:60
-#, no-c-format
-msgid ""
-"$ unzip apache-ant-1.7.0.zip\n"
-"$ export ANT_HOME=~/apache-ant-1.7.0"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:62
-#, no-c-format
-msgid ""
-"Then, you can install the update. The update script will use Maven to "
-"download the Web Beans and EJB3 automatically."
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:67
-#, no-c-format
-msgid ""
-"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
-"$ ant update"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:69
-#, no-c-format
-msgid "Now, you're ready to deploy your first example!"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:74
-#, no-c-format
-msgid ""
-"The build scripts for the examples offer a number of targets, these are:"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:80
-#, no-c-format
-msgid "<literal>ant restart</literal> - deploy the example in exploded format"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:86
-#, no-c-format
-msgid ""
-"<literal>ant explode</literal> - update an exploded example, without "
-"restarting the deployment"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:92
-#, no-c-format
-msgid ""
-"<literal>ant deploy</literal> - deploy the example in compressed jar format"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:97
-#, no-c-format
-msgid "<literal>ant undeploy</literal> - remove the example from the server"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:102
-#, no-c-format
-msgid "<literal>ant clean</literal> - clean the example"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:109
-#, no-c-format
-msgid "To deploy the numberguess example:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:113
-#, no-c-format
-msgid ""
-"$ cd examples/numberguess\n"
-"ant deploy"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:115
-#, no-c-format
-msgid ""
-"Wait for the application to deploy, and enjoy hours of fun at <ulink url="
-"\"http://localhost:8080/webbeans-numberguess\"></ulink>!"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:120
-#, no-c-format
-msgid ""
-"The Web Beans RI includes a second simple example that will translate your "
-"text into Latin. The numberguess example is a war example, and uses only "
-"simple beans; the translator example is an ear example, and includes "
-"enterprise beans, packaged in an EJB module. To try it out:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:127
-#, no-c-format
-msgid ""
-"$ cd examples/traslator\n"
-"ant deploy"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:129
-#, no-c-format
-msgid ""
-"Wait for the application to deploy, and visit <ulink url=\"http://"
-"localhost:8080/webbeans-translator\"></ulink>!"
-msgstr ""
-
-#. Tag: title
-#: ri.xml:135
-#, no-c-format
-msgid "The numberguess example"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:137
-#, no-c-format
-msgid ""
-"In the numberguess application you get given 10 attempts to guess a number "
-"between 1 and 100. After each attempt, you will be told whether you are too "
-"high, or too low."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:143
-#, no-c-format
-msgid ""
-"The numberguess example is comprised of a number of Web Beans, configuration "
-"files, and Facelet JSF pages, packaged as a war. Let's start with the "
-"configuration files."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:149
-#, no-c-format
-msgid ""
-"All the configuration files for this example are located in <literal>WEB-INF/"
-"</literal>, which is stored in <literal>WebContent</literal> in the source "
-"tree. First, we have <literal>faces-config.xml</literal>, in which we tell "
-"JSF to use Facelets:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:157
-#, no-c-format
-msgid ""
-"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
-"<faces-config version=\"1.2\"\n"
-"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
-"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
-"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
-"    \n"
-"    <application>\n"
-"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
-"    </application>\n"
-"\n"
-"</faces-config>]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:159
-#, no-c-format
-msgid ""
-"There is an empty <literal>web-beans.xml</literal> file, which marks this "
-"application as a Web Beans application."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:164
-#, no-c-format
-msgid "Finally there is <literal>web.xml</literal>:"
-msgstr ""
-
-#. Tag: section
-#: ri.xml:166
-#, no-c-format
-msgid ""
-"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
-"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
-"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
-"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
-"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"\n"
-"<web-app version=\"2.5\"\n"
-"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
-"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
-"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
-"   \n"
-"   <display-name>Web Beans Numbergues example</display-name>\n"
-"\n"
-"   <!-- JSF -->\n"
-"\n"
-"   <servlet>\n"
-"      <servlet-name>Faces Servlet</servlet-name>\n"
-"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
-"      <load-on-startup>1</load-on-startup>\n"
-"   </servlet>\n"
-"\n"
-"   <servlet-mapping>\n"
-"      <servlet-name>Faces Servlet</servlet-name>\n"
-"      <url-pattern>*.jsf</url-pattern>\n"
-"   </servlet-mapping>\n"
-"   \n"
-"   <context-param>\n"
-"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
-"      <param-value>.xhtml</param-value>\n"
-"   </context-param>\n"
-"\n"
-"   <session-config>\n"
-"      <session-timeout>10</session-timeout>\n"
-"   </session-config>\n"
-"   \n"
-"    <listener>\n"
-"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
-"class>\n"
-"    </listener>\n"
-"\n"
-"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
-"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
-"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
-"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
-"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
-"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
-"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
-"session timeout of 10 minutes </para> </callout> <callout arearefs="
-"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
-"Beans services can be used in the servlet request </para> </callout> </"
-"calloutlist> </programlistingco> <note> <para> The only configuration "
-"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
-"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
-"the Web Beans RI with any Servlet based web framework; just configure the "
-"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
-"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
-"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
-"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
-"\"29\"/> <area id=\"submit\" coords=\"32\"/> </areaspec> <programlisting><!"
-"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
-"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
-"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
-"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
-"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
-"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
-"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
-"\n"
-"  <ui:composition template=\"template.xhtml\">\n"
-"    <ui:define name=\"content\">\n"
-"       <h1>Guess a number...</h1>\n"
-"       <h:form id=\"NumberGuessMain\">\n"
-"          <div style=\"color: red\">\n"
-"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
-"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
-"number gt game.guess}\"/>\n"
-"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
-"number lt game.guess}\"/>\n"
-"          </div>\n"
-"   \n"
-"          <div>\n"
-"             I'm thinking of a number between #{game.smallest} and #{game."
-"biggest}.\n"
-"             You have #{game.remainingGuesses} guesses.\n"
-"          </div>\n"
-"     \n"
-"          <div>\n"
-"             Your guess: \n"
-"             <h:inputText id=\"inputGuess\" \n"
-"                          value=\"#{game.guess}\" \n"
-"                          required=\"true\" \n"
-"                          size=\"3\">\n"
-"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
-"                                     minimum=\"#{game.smallest}\"/>\n"
-"             </h:inputText>\n"
-"            <h:commandButton id=\"GuessButton\" \n"
-"                             value=\"Guess\" \n"
-"                             action=\"#{game.check}\"/>\n"
-"          </div>\n"
-"   \n"
-"       </h:form>\n"
-"    </ui:define>\n"
-"  </ui:composition>\n"
-"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
-"<para> Facelets is a templating language for JSF, here we are wrapping our "
-"page in a template which defines the header. </para> </callout> <callout "
-"arearefs=\"messages\"> <para> There are a number of messages which can be "
-"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
-"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
-"range of numbers they can guess gets smaller - this sentance changes to make "
-"sure they know what range to guess in. </para> </callout> <callout arearefs="
-"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
-"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
-"range validator is used to make sure the user doesn't accidentally input a "
-"number outside of the range in which they can guess - if the validator "
-"wasn't here, the user might use up a guess on an out of range number. </"
-"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
-"must be a way for the user to send their guess to the server. Here we bind "
-"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
-"programlistingco>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:279
-#, no-c-format
-msgid ""
-"The example exists of 4 classes, the first two of which are binding types. "
-"First, there is the <literal>@Random</literal> binding type, used for "
-"injecting a random number:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:285
-#, no-c-format
-msgid ""
-"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
-"@Retention(RUNTIME)\n"
-"@Documented\n"
-"@BindingType\n"
-"public @interface Random {}]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:287
-#, no-c-format
-msgid ""
-"There is also the <literal>@MaxNumber</literal> binding type, used for "
-"injecting the maximum number that can be injected:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:292
-#, no-c-format
-msgid ""
-"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
-"@Retention(RUNTIME)\n"
-"@Documented\n"
-"@BindingType\n"
-"public @interface MaxNumber {}\n"
-"]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:294
-#, no-c-format
-msgid ""
-"The <literal>Generator</literal> class is responsible for creating the "
-"random number, via a producer method. It also exposes the maximum possible "
-"number via a producer method:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:300
-#, no-c-format
-msgid ""
-"<![CDATA[@ApplicationScoped\n"
-"public class Generator {\n"
-"   \n"
-"   private java.util.Random random = new java.util.Random( System."
-"currentTimeMillis() );\n"
-"   \n"
-"   private int maxNumber = 100;\n"
-"   \n"
-"   java.util.Random getRandom()\n"
-"   {\n"
-"      return random;\n"
-"   }\n"
-"   \n"
-"   @Produces @Random int next() { \n"
-"      return getRandom().nextInt(maxNumber); \n"
-"   }\n"
-"   \n"
-"   @Produces @MaxNumber int getMaxNumber()\n"
-"   {\n"
-"      return maxNumber;\n"
-"   }\n"
-"\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:302
-#, no-c-format
-msgid ""
-"You'll notice that the <literal>Generator</literal> is application scoped; "
-"therefore we don't get a different random each time."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:307
-#, no-c-format
-msgid ""
-"The final Web Bean in the application is the session scoped <literal>Game</"
-"literal>. By making <literal>Game</literal> session scoped, you can only "
-"play the game once per browser session. You could easily add a reset button "
-"- a good exercise for the reader :-)"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:314
-#, no-c-format
-msgid ""
-"You'll also note that we've used the <literal>@Named</literal> annotation, "
-"so that we can use the bean through EL in the JSF page. Finally, we've used "
-"constructor injection to initialize the game with a random number. And of "
-"course, we need to tell the player when they've won, so we give feedback "
-"with a <literal>FacesMessage</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:322
-#, no-c-format
-msgid ""
-"<![CDATA[@Named\n"
-"@SessionScoped\n"
-"public class Game {\n"
-"   private int number;\n"
-"   \n"
-"   private int guess;\n"
-"   private int smallest;\n"
-"   private int biggest;\n"
-"   private int remainingGuesses;\n"
-"   \n"
-"   public Game() {}\n"
-"   \n"
-"   @Initializer\n"
-"   Game(@Random int number, @MaxNumber int maxNumber) {\n"
-"      this.number = number;\n"
-"      this.smallest = 1;\n"
-"      this.biggest = maxNumber;\n"
-"      this.remainingGuesses = 10;\n"
-"   }\n"
-"\n"
-"   // Getters and setters for fields\n"
-"   \n"
-"   public String check() {\n"
-"      if (guess>number) {\n"
-"         biggest = guess - 1;\n"
-"      }\n"
-"      if (guess<number) {\n"
-"         smallest = guess + 1;\n"
-"      }\n"
-"      if (guess == number) {\n"
-"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
-"(\"Correct!\"));\n"
-"      }\n"
-"      remainingGuesses--;\n"
-"      return null;\n"
-"   }\n"
-"   \n"
-"}]]>"
-msgstr ""
-
-#. Tag: title
-#: ri.xml:326
-#, no-c-format
-msgid "The translator example"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:328
-#, no-c-format
-msgid ""
-"The translator example will take any sentences you enter, and translate them "
-"to Latin."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:333
-#, no-c-format
-msgid ""
-"The translator example is built as an ear, and contains EJBs and enterprise "
-"beans. As a result, it's structure is more complex than the numberguess "
-"example."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:340
-#, no-c-format
-msgid ""
-"EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will make "
-"this structure much simpler!"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:346
-#, no-c-format
-msgid ""
-"First, let's take a look at the ear aggregator, which is located in "
-"<literal>webbeans-translator-ear</literal> module. Maven automatically "
-"generates the <literal>application.xml</literal> and <literal>jboss-app.xml</"
-"literal> for us:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:353
-#, no-c-format
-msgid ""
-"<![CDATA[<plugin>\n"
-"   <groupId>org.apache.maven.plugins</groupId>\n"
-"   <artifactId>maven-ear-plugin</artifactId>\n"
-"   <configuration>\n"
-"      <modules>\n"
-"         <webModule>\n"
-"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
-"            <artifactId>webbeans-translator-war</artifactId>\n"
-"            <contextRoot>/webbeans-translator</contextRoot>\n"
-"         </webModule>\n"
-"      </modules>\n"
-"      <jboss>\n"
-"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
-"loader-repository>\n"
-"      </jboss>\n"
-"   </configuration>\n"
-"</plugin>]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:355
-#, no-c-format
-msgid ""
-"We're doing a couple of things here - firstly we set the context path, which "
-"gives us a nice url (<ulink url=\"http://localhost:8080/webbeans-translator"
-"\">http://localhost:8080/webbeans-translator</ulink>) and we also enable "
-"class loader isolation for JBoss AS."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:363
-#, no-c-format
-msgid ""
-"If you aren't using Maven to generate these files, you would need "
-"<literal>META-INF/jboss-app.xml</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:368
-#, no-c-format
-msgid ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<!DOCTYPE jboss-app\n"
-"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
-"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
-"<jboss-app>\n"
-"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
-"repository>\n"
-"</jboss-app>]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:370
-#, no-c-format
-msgid "and <literal>META-INF/application.xml</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:374
-#, no-c-format
-msgid ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
-"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
-"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
-"             version=\"5\">\n"
-"  <display-name>webbeans-translator-ear</display-name>\n"
-"  <description>Ear Example for the reference implementation of JSR 299: Web "
-"Beans</description>\n"
-"  \n"
-"  <module>\n"
-"    <web>\n"
-"      <web-uri>webbeans-translator.war</web-uri>\n"
-"      <context-root>/webbeans-translator</context-root>\n"
-"    </web>\n"
-"  </module>\n"
-"  <module>\n"
-"    <ejb>webbeans-translator.jar</ejb>\n"
-"  </module>\n"
-"</application>]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:377
-#, no-c-format
-msgid ""
-"Next, lets look at the war. Just as in the numberguess example, we have a "
-"<literal>faces-config.xml</literal> (to enabled Facelets) and a <literal>web."
-"xml</literal> (to enable JSF and attach Web Beans services to the servlet "
-"container) in <literal>WebContent/WEB-INF</literal>."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:384
-#, no-c-format
-msgid ""
-"More intersting is the facelet used to translate text. Just as in the "
-"numberguess example we have a template, which surrounds the form (ommitted "
-"here for brevity):"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:390
-#, no-c-format
-msgid ""
-"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
-"            \n"
-"   <table>\n"
-"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
-"         <td>\n"
-"            Your text\n"
-"         </td>\n"
-"         <td>\n"
-"            Translation\n"
-"         </td>\n"
-"      </tr>\n"
-"      <tr>\n"
-"         <td>\n"
-"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
-"required=\"true\" rows=\"5\" cols=\"80\" />\n"
-"         </td>\n"
-"         <td>\n"
-"            <h:outputText value=\"#{translator.translatedText}\" />\n"
-"         </td>\n"
-"      </tr>\n"
-"   </table>\n"
-"   <div>\n"
-"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
-"{translator.translate}\"/>\n"
-"   </div>\n"
-"   \n"
-"</h:form>]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:392
-#, no-c-format
-msgid ""
-"The user can enter some text in the lefthand textarea, and hit the translate "
-"button to see the result to the right."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:397
-#, no-c-format
-msgid ""
-"Finally, let's look at the ejb module, <literal>webbeans-translator-ejb</"
-"literal>. There are two configuration files in <literal>src/main/resources/"
-"META-INF</literal>, an empty <literal>web-beans.xml</literal>, used to mark "
-"the archive as containing Web Beans, and <literal>ejb-jar.xml</literal>. Web "
-"Beans provides injection and initializtion services for all EJBs, and uses "
-"<literal>ejb-jar.xml</literal> to enable this, you'll need this in any EJB "
-"project which uses Web Beans:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:409
-#, no-c-format
-msgid ""
-"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
-"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
-"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
-"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
-"         version=\"3.0\">\n"
-"         \n"
-"   <interceptors>\n"
-"     <interceptor>\n"
-"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
-"interceptor-class>\n"
-"     </interceptor>\n"
-"   </interceptors>\n"
-"   \n"
-"   <assembly-descriptor>\n"
-"      <interceptor-binding>\n"
-"         <ejb-name>*</ejb-name>\n"
-"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
-"interceptor-class>\n"
-"      </interceptor-binding>\n"
-"   </assembly-descriptor>\n"
-"   \n"
-"</ejb-jar>]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:411
-#, no-c-format
-msgid ""
-"We've saved the most interesting bit to last, the code! The project has two "
-"simple beans, <literal>SentanceParser</literal> and <literal>TextTranslator</"
-"literal> and two enterprise beans, <literal>TanslatorControllerBean</"
-"literal> and <literal>SentenceTranslator</literal>. You should be getting "
-"quite familiar with what a Web Bean looks like by now, so we'll just "
-"highlight the most interesting bits here."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:421
-#, no-c-format
-msgid ""
-"Both <literal>SentanceParser</literal> and <literal>TextTranslator</literal> "
-"are dependent beans, and <literal>TextTranslator</literal> uses constructor "
-"initialization:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:427
-#, no-c-format
-msgid ""
-"<![CDATA[public class TextTranslator { \n"
-"   private SentenceParser sentenceParser; \n"
-"   private Translator sentenceTranslator; \n"
-"   \n"
-"   @Initializer\n"
-"   TextTranslator(SentenceParser sentenceParser, Translator "
-"sentenceTranslator) \n"
-"   { \n"
-"      this.sentenceParser = sentenceParser; \n"
-"      this.sentenceTranslator = sentenceTranslator;]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:429
-#, no-c-format
-msgid ""
-"<literal>TextTranslator</literal> is a stateless bean (with a local business "
-"interface), where the magic happens - of course, we couldn't develop a full "
-"translator, but we gave it a good go!"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:435
-#, no-c-format
-msgid ""
-"Finally, there is UI orientated controller, that collects the text from the "
-"user, and dispatches it to the translator. This is a request scoped, named, "
-"stateful session bean, which injects the translator."
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:441
-#, no-c-format
-msgid ""
-"<![CDATA[@Stateful\n"
-"@RequestScoped\n"
-"@Named(\"translator\")\n"
-"public class TranslatorControllerBean implements TranslatorController\n"
-"{\n"
-"   \n"
-"   @Current TextTranslator translator;]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:443
-#, no-c-format
-msgid "The bean also has getters and setters for all the fields on the page."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:447
-#, no-c-format
-msgid "As this is a stateful session bean, we have to have a remove method:"
-msgstr ""
-
-#. Tag: programlisting
-#: ri.xml:451
-#, no-c-format
-msgid ""
-"<![CDATA[   @Remove\n"
-"   public void remove()\n"
-"   {\n"
-"      \n"
-"   }]]>"
-msgstr ""
-
-#. Tag: para
-#: ri.xml:453
-#, no-c-format
-msgid ""
-"The Web Beans manager will call the remove method for you when the bean is "
-"destroyed; in this case at the end of the request."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:459
-#, no-c-format
-msgid ""
-"That concludes our short tour of the Web Beans RI examples. For more on the "
-"RI, or to help out, please visit <ulink url=\"http://www.seamframework.org/"
-"WebBeans/Development\">http://www.seamframework.org/WebBeans/Development</"
-"ulink>."
-msgstr ""
-
-#. Tag: para
-#: ri.xml:465
-#, no-c-format
-msgid ""
-"We need help in all areas - bug fixing, writing new features, writing "
-"examples and translating this reference guide."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/scopescontexts.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/scopescontexts.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/scopescontexts.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,582 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: scopescontexts.xml:4
-#, no-c-format
-msgid "Scopes and contexts"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:6
-#, no-c-format
-msgid ""
-"So far, we've seen a few examples of <emphasis>scope type annotations</"
-"emphasis>. The scope of a Web Bean determines the lifecycle of instances of "
-"the Web Bean. The scope also determines which clients refer to which "
-"instances of the Web Bean. According to the Web Beans specification, a scope "
-"determines:"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:14
-#, no-c-format
-msgid "When a new instance of any Web Bean with that scope is created"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:17
-#, no-c-format
-msgid "When an existing instance of any Web Bean with that scope is destroyed"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:20
-#, no-c-format
-msgid ""
-"Which injected references refer to any instance of a Web Bean with that scope"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:25
-#, no-c-format
-msgid ""
-"For example, if we have a session scoped Web Bean, <literal>CurrentUser</"
-"literal>, all Web Beans that are called in the context of the same "
-"<literal>HttpSession</literal> will see the same instance of "
-"<literal>CurrentUser</literal>. This instance will be automatically created "
-"the first time a <literal>CurrentUser</literal> is needed in that session, "
-"and automatically destroyed when the session ends."
-msgstr ""
-
-#. Tag: title
-#: scopescontexts.xml:32
-#, no-c-format
-msgid "Scope types"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:34
-#, no-c-format
-msgid ""
-"Web Beans features an <emphasis>extensible context model</emphasis>. It is "
-"possible to define new scopes by creating a new scope type annotation:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:37
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target({TYPE, METHOD})\n"
-"@ScopeType\n"
-"public @interface ClusterScoped {}]]>"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:39
-#, no-c-format
-msgid ""
-"Of course, that's the easy part of the job. For this scope type to be "
-"useful, we will also need to define a <literal>Context</literal> object that "
-"implements the scope! Implementing a <literal>Context</literal> is usually a "
-"very technical task, intended for framework development only."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:44
-#, no-c-format
-msgid ""
-"We can apply a scope type annotation to a Web Bean implementation class to "
-"specify the scope of the Web Bean:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:47
-#, no-c-format
-msgid ""
-"<![CDATA[@ClusterScoped\n"
-"public class SecondLevelCache { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:58
-#, no-c-format
-msgid "Usually, you'll use one of Web Beans' built-in scopes."
-msgstr ""
-
-#. Tag: title
-#: scopescontexts.xml:63
-#, no-c-format
-msgid "Built-in scopes"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:65
-#, no-c-format
-msgid "Web Beans defines four built-in scopes:"
-msgstr ""
-
-#. Tag: literal
-#: scopescontexts.xml:69
-#, no-c-format
-msgid "@RequestScoped"
-msgstr ""
-
-#. Tag: literal
-#: scopescontexts.xml:72
-#, no-c-format
-msgid "@SessionScoped"
-msgstr ""
-
-#. Tag: literal
-#: scopescontexts.xml:75
-#, no-c-format
-msgid "@ApplicationScoped"
-msgstr ""
-
-#. Tag: literal
-#: scopescontexts.xml:78
-#, no-c-format
-msgid "@ConversationScoped"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:82
-#, no-c-format
-msgid "For a web application that uses Web Beans:"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:86
-#, no-c-format
-msgid ""
-"any servlet request has access to active request, session and application "
-"scopes, and, additionally"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:90
-#, no-c-format
-msgid "any JSF request has access to an active conversation scope."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:94
-#, no-c-format
-msgid "The request and application scopes are also active:"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:98
-#, no-c-format
-msgid "during invocations of EJB remote methods,"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:101
-#, no-c-format
-msgid "during EJB timeouts,"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:104
-#, no-c-format
-msgid "during message delivery to a message-driven bean, and"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:107
-#, no-c-format
-msgid "during web service invocations."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:111
-#, no-c-format
-msgid ""
-"If the application tries to invoke a Web Bean with a scope that does not "
-"have an active context, a <literal>ContextNotActiveException</literal> is "
-"thrown by the Web Bean manager at runtime."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:115
-#, no-c-format
-msgid ""
-"Three of the four built-in scopes should be extremely familiar to every Java "
-"EE developer, so let's not waste time discussing them here. One of the "
-"scopes, however, is new."
-msgstr ""
-
-#. Tag: title
-#: scopescontexts.xml:122
-#, no-c-format
-msgid "The conversation scope"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:124
-#, no-c-format
-msgid ""
-"The Web Beans conversation scope is a bit like the traditional session scope "
-"in that it holds state associated with a user of the system, and spans "
-"multiple requests to the server. However, unlike the session scope, the "
-"conversation scope:"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:130
-#, no-c-format
-msgid "is demarcated explicitly by the application, and"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:133
-#, no-c-format
-msgid ""
-"holds state associated with a particular web browser tab in a JSF "
-"application."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:138
-#, no-c-format
-msgid ""
-"A conversation represents a task, a unit of work from the point of view of "
-"the user. The conversation context holds state associated with what the user "
-"is currently working on. If the user is doing multiple things at the same "
-"time, there are multiple conversations."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:143
-#, no-c-format
-msgid ""
-"The conversation context is active during any JSF request. However, most "
-"conversations are destroyed at the end of the request. If a conversation "
-"should hold state across multiple requests, it must be explicitly promoted "
-"to a <emphasis>long-running conversation</emphasis>."
-msgstr ""
-
-#. Tag: title
-#: scopescontexts.xml:149
-#, no-c-format
-msgid "Conversation demarcation"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:151
-#, no-c-format
-msgid ""
-"Web Beans provides a built-in Web Bean for controlling the lifecyle of "
-"conversations in a JSF application. This Web Bean may be obtained by "
-"injection:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:154
-#, no-c-format
-msgid "@Current Conversation conversation;"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:156
-#, no-c-format
-msgid ""
-"To promote the conversation associated with the current request to a long-"
-"running conversation, call the <literal>begin()</literal> method from "
-"application code. To schedule the current long-running conversation context "
-"for destruction at the end of the current request, call <literal>end()</"
-"literal>."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:161
-#, no-c-format
-msgid ""
-"In the following example, a conversation-scoped Web Bean controls the "
-"conversation with which it is associated:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:164
-#, no-c-format
-msgid ""
-"@ConversationScoped @Stateful\n"
-"public class OrderBuilder {\n"
-"\n"
-"    private Order order;\n"
-"    private @Current Conversation conversation;\n"
-"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
-"    \n"
-"    @Produces public Order getOrder() {\n"
-"        return order;\n"
-"    }\n"
-"\n"
-"    public Order createOrder() {\n"
-"        order = new Order();\n"
-"        conversation.begin();\n"
-"        return order;\n"
-"    }\n"
-"    \n"
-"    public void addLineItem(Product product, int quantity) {\n"
-"        order.add( new LineItem(product, quantity) );\n"
-"    }\n"
-"\n"
-"    public void saveOrder(Order order) {\n"
-"        em.persist(order);\n"
-"        conversation.end();\n"
-"    }\n"
-"    \n"
-"    @Remove\n"
-"    public void destroy() {}\n"
-"    \n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:166
-#, no-c-format
-msgid ""
-"This Web Bean is able to control its own lifecycle through use of the "
-"<literal>Conversation</literal> API. But some other Web Beans have a "
-"lifecycle which depends completely upon another object."
-msgstr ""
-
-#. Tag: title
-#: scopescontexts.xml:173
-#, no-c-format
-msgid "Conversation propagation"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:175
-#, no-c-format
-msgid ""
-"The conversation context automatically propagates with any JSF faces request "
-"(JSF form submission). It does not automatically propagate with non-faces "
-"requests, for example, navigation via a link."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:179
-#, no-c-format
-msgid ""
-"We can force the conversation to propagate with a non-faces request by "
-"including the unique identifier of the conversation as a request parameter. "
-"The Web Beans specification reserves the request parameter named "
-"<literal>cid</literal> for this use. The unique identifier of the "
-"conversation may be obtained from the <literal>Conversation</literal> "
-"object, which has the Web Beans name <literal>conversation</literal>."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:186
-#, no-c-format
-msgid "Therefore, the following link propagates the conversation:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:188
-#, no-c-format
-msgid ""
-"<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]"
-">"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:190
-#, no-c-format
-msgid ""
-"The Web Bean manager is also required to propagate conversations across any "
-"redirect, even if the conversation is not marked long-running. This makes it "
-"very easy to implement the common POST-then-redirect pattern, without resort "
-"to fragile constructs such as a \"flash\" object. In this case, the Web Bean "
-"manager automatically adds a request parameter to the redirect URL."
-msgstr ""
-
-#. Tag: title
-#: scopescontexts.xml:200
-#, no-c-format
-msgid "Conversation timeout"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:202
-#, no-c-format
-msgid ""
-"The Web Bean manager is permitted to destroy a conversation and all state "
-"held in its context at any time in order to preserve resources. A Web Bean "
-"manager implementation will normally do this on the basis of some kind of "
-"timeout&#151;though this is not required by the Web Beans specification. The "
-"timeout is the period of inactivity before the conversation is destroyed."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:208
-#, no-c-format
-msgid ""
-"The <literal>Conversation</literal> object provides a method to set the "
-"timeout. This is a hint to the Web Bean manager, which is free to ignore the "
-"setting."
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:212
-#, no-c-format
-msgid "conversation.setTimeout(timeoutInMillis);"
-msgstr ""
-
-#. Tag: title
-#: scopescontexts.xml:219
-#, no-c-format
-msgid "The dependent pseudo-scope"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:221
-#, no-c-format
-msgid ""
-"In addition to the four built-in scopes, Web Beans features the so-called "
-"<emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a "
-"Web Bean which does not explicitly declare a scope type."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:225
-#, no-c-format
-msgid ""
-"For example, this Web Bean has the scope type <literal>@Dependent</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:227
-#, no-c-format
-msgid "<![CDATA[public class Calculator { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:229
-#, no-c-format
-msgid ""
-"When an injection point of a Web Bean resolves to a dependent Web Bean, a "
-"new instance of the dependent Web Bean is created every time the first Web "
-"Bean is instantiated. Instances of dependent Web Beans are never shared "
-"between different Web Beans or different injection points. They are "
-"<emphasis>dependent objects</emphasis> of some other Web Bean instance."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:235
-#, no-c-format
-msgid ""
-"Dependent Web Bean instances are destroyed when the instance they depend "
-"upon is destroyed."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:243
-#, no-c-format
-msgid ""
-"Web Beans makes it easy to obtain a dependent instance of a Java class or "
-"EJB bean, even if the class or EJB bean is already declared as a Web Bean "
-"with some other scope type."
-msgstr ""
-
-#. Tag: title
-#: scopescontexts.xml:248
-#, no-c-format
-msgid "The <literal>@New</literal> annotation"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:250
-#, no-c-format
-msgid ""
-"The built-in <literal>@New</literal> binding annotation allows "
-"<emphasis>implicit</emphasis> definition of a dependent Web Bean at an "
-"injection point. Suppose we declare the following injected field:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:254
-#, no-c-format
-msgid "<![CDATA[@New Calculator calculator;]]>"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:256
-#, no-c-format
-msgid ""
-"Then a Web Bean with scope <literal>@Dependent</literal>, binding type "
-"<literal>@New</literal>, API type <literal>Calculator</literal>, "
-"implementation class <literal>Calculator</literal> and deployment type "
-"<literal>@Standard</literal> is implicitly defined."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:261
-#, no-c-format
-msgid ""
-"This is true even if <literal>Calculator</literal> is <emphasis>already</"
-"emphasis> declared with a different scope type, for example:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:264
-#, no-c-format
-msgid ""
-"<![CDATA[@ConversationScoped\n"
-"public class Calculator { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:266
-#, no-c-format
-msgid ""
-"So the following injected attributes each get a different instance of "
-"<literal>Calculator</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: scopescontexts.xml:269
-#, no-c-format
-msgid ""
-"<![CDATA[public class PaymentCalc {\n"
-"\n"
-"    @Current Calculator calculator;\n"
-"    @New Calculator newCalculator;\n"
-"\n"
-"}]]>"
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:271
-#, no-c-format
-msgid ""
-"The <literal>calculator</literal> field has a conversation-scoped instance "
-"of <literal>Calculator</literal> injected. The <literal>newCalculator</"
-"literal> field has a new instance of <literal>Calculator</literal> injected, "
-"with a lifecycle that is bound to the owning <literal>PaymentCalc</literal>."
-msgstr ""
-
-#. Tag: para
-#: scopescontexts.xml:276
-#, no-c-format
-msgid ""
-"This feature is particularly useful with producer methods, as we'll see in "
-"the next chapter."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/specialization.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/specialization.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/specialization.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,291 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: specialization.xml:4
-#, no-c-format
-msgid "Specialization"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:6
-#, no-c-format
-msgid ""
-"We've already seen how the Web Beans dependency injection model lets us "
-"<emphasis>override</emphasis> the implementation of an API at deployment "
-"time. For example, the following enterprise Web Bean provides an "
-"implementation of the API <literal>PaymentProcessor</literal> in production:"
-msgstr ""
-
-#. Tag: programlisting
-#: specialization.xml:11
-#, no-c-format
-msgid ""
-"@CreditCard @Stateless\n"
-"public class CreditCardPaymentProcessor \n"
-"        implements PaymentProcessor {\n"
-"    ...\n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:13
-#, no-c-format
-msgid ""
-"But in our staging environment, we override that implementation of "
-"<literal>PaymentProcessor</literal> with a different Web Bean:"
-msgstr ""
-
-#. Tag: programlisting
-#: specialization.xml:16
-#, no-c-format
-msgid ""
-"@CreditCard @Stateless @Staging\n"
-"public class StagingCreditCardPaymentProcessor \n"
-"        implements PaymentProcessor {\n"
-"    ...\n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:18
-#, no-c-format
-msgid ""
-"What we've tried to do with <literal>StagingCreditCardPaymentProcessor</"
-"literal> is to completely replace <literal>AsyncPaymentProcessor</literal> "
-"in a particular deployment of the system. In that deployment, the deployment "
-"type <literal>@Staging</literal> would have a higher priority than the "
-"default deployment type <literal>@Production</literal>, and therefore "
-"clients with the following injection point:"
-msgstr ""
-
-#. Tag: programlisting
-#: specialization.xml:24
-#, no-c-format
-msgid "@CreditCard PaymentProcessor ccpp"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:26
-#, no-c-format
-msgid ""
-"Would receive an instance of <literal>StagingCreditCardPaymentProcessor</"
-"literal>."
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:28
-#, no-c-format
-msgid "Unfortunately, there are several traps we can easily fall into:"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:32
-#, no-c-format
-msgid ""
-"the higher-priority Web Bean may not implement all the API types of the Web "
-"Bean that it attempts to override,"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:36
-#, no-c-format
-msgid ""
-"the higher-priority Web Bean may not declare all the binding types of the "
-"Web Bean that it attempts to override,"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:40
-#, no-c-format
-msgid ""
-"the higher-priority Web Bean might not have the same name as the Web Bean "
-"that it attempts to override, or"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:44
-#, no-c-format
-msgid ""
-"the Web Bean that it attempts to override might declare a producer method, "
-"disposal method or observer method."
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:49
-#, no-c-format
-msgid ""
-"In each of these cases, the Web Bean that we tried to override could still "
-"be called at runtime. Therefore, overriding is somewhat prone to developer "
-"error."
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:52
-#, no-c-format
-msgid ""
-"Web Beans provides a special feature, called <emphasis>specialization</"
-"emphasis>, that helps the developer avoid these traps. Specialization looks "
-"a little esoteric at first, but it's easy to use in practice, and you'll "
-"really appreciate the extra security it provides."
-msgstr ""
-
-#. Tag: title
-#: specialization.xml:58
-#, no-c-format
-msgid "Using specialization"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:60
-#, no-c-format
-msgid ""
-"Specialization is a feature that is specific to simple and enterprise Web "
-"Beans. To make use of specialization, the higher-priority Web Bean must:"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:65
-#, no-c-format
-msgid "be a direct subclass of the Web Bean it overrides, and"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:68
-#, no-c-format
-msgid ""
-"be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or an "
-"enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, "
-"and"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:73
-#, no-c-format
-msgid "be annotated <literal>@Specializes</literal>."
-msgstr ""
-
-#. Tag: programlisting
-#: specialization.xml:77
-#, no-c-format
-msgid ""
-"@Stateless @Staging @Specializes\n"
-"public class StagingCreditCardPaymentProcessor \n"
-"        extends CreditCardPaymentProcessor {\n"
-"    ...\n"
-"}"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:79
-#, no-c-format
-msgid ""
-"We say that the higher-priority Web Bean <emphasis>specializes</emphasis> "
-"its superclass."
-msgstr ""
-
-#. Tag: title
-#: specialization.xml:85
-#, no-c-format
-msgid "Advantages of specialization"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:87
-#, no-c-format
-msgid "When specialization is used:"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:91
-#, no-c-format
-msgid ""
-"the binding types of the superclass are automatically inherited by the Web "
-"Bean annotated <literal>@Specializes</literal>, and"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:95
-#, no-c-format
-msgid ""
-"the Web Bean name of the superclass is automatically inherited by the Web "
-"Bean annotated <literal>@Specializes</literal>, and"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:99
-#, no-c-format
-msgid ""
-"producer methods, disposal methods and observer methods declared by the "
-"superclass are called upon an instance of the Web Bean annotated "
-"<literal>@Specializes</literal>."
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:105
-#, no-c-format
-msgid ""
-"In our example, the binding type <literal>@CreditCard</literal> of "
-"<literal>CreditCardPaymentProcessor</literal> is inherited by "
-"<literal>StagingCreditCardPaymentProcessor</literal>."
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:109
-#, no-c-format
-msgid "Furthermore, the Web Bean manager will validate that:"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:113
-#, no-c-format
-msgid ""
-"all API types of the superclass are API types of the Web Bean annotated "
-"<literal>@Specializes</literal> (all local interfaces of the superclass "
-"enterprise bean are also local interfaces of the subclass),"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:119
-#, no-c-format
-msgid ""
-"the deployment type of the Web Bean annotated <literal>@Specializes</"
-"literal> has a higher precedence than the deployment type of the superclass, "
-"and"
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:124
-#, no-c-format
-msgid ""
-"there is no other enabled Web Bean that also specializes the superclass."
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:129
-#, no-c-format
-msgid ""
-"If any of these conditions are violated, the Web Bean manager throws an "
-"exception at initialization time."
-msgstr ""
-
-#. Tag: para
-#: specialization.xml:132
-#, no-c-format
-msgid ""
-"Therefore, we can be certain that the superclass with <emphasis>never</"
-"emphasis> be called in any deployment of the system where the Web Bean "
-"annotated <literal>@Specializes</literal> is deployed and enabled."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/stereotypes.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/stereotypes.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/stereotypes.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,352 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: stereotypes.xml:4
-#, no-c-format
-msgid "Stereotypes"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:6
-#, no-c-format
-msgid "According to the Web Beans specification:"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:10
-#, no-c-format
-msgid ""
-"In many systems, use of architectural patterns produces a set of recurring "
-"Web Bean roles. A stereotype allows a framework developer to identify such a "
-"role and declare some common metadata for Web Beans with that role in a "
-"central place."
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:14
-#, no-c-format
-msgid "A stereotype encapsulates any combination of:"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:18
-#, no-c-format
-msgid "a default deployment type,"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:21
-#, no-c-format
-msgid "a default scope type,"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:24
-#, no-c-format
-msgid "a restriction upon the Web Bean scope,"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:27
-#, no-c-format
-msgid "a requirement that the Web Bean implement or extend a certain type, and"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:30
-#, no-c-format
-msgid "a set of interceptor binding annotations."
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:34
-#, no-c-format
-msgid ""
-"A stereotype may also specify that all Web Beans with the stereotype have "
-"defaulted Web Bean names."
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:37
-#, no-c-format
-msgid "A Web Bean may declare zero, one or multiple stereotypes."
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:41
-#, no-c-format
-msgid ""
-"A stereotype is a Java annotation type. This stereotype identifies action "
-"classes in some MVC framework:"
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:44
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:46
-#, no-c-format
-msgid "We use the stereotype by applying the annotation to a Web Bean."
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:48
-#, no-c-format
-msgid ""
-"<![CDATA[@Action \n"
-"public class LoginAction { ... }]]>"
-msgstr ""
-
-#. Tag: title
-#: stereotypes.xml:51
-#, no-c-format
-msgid "Default scope and deployment type for a stereotype"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:53
-#, no-c-format
-msgid ""
-"A stereotype may specify a default scope and/or default deployment type for "
-"Web Beans with that stereotype. For example, if the deployment type "
-"<literal>@WebTier</literal> identifies Web Beans that should only be "
-"deployed when the system executes as a web application, we might specify the "
-"following defaults for action classes:"
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:59
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:61
-#, no-c-format
-msgid ""
-"Of course, a particular action may still override these defaults if "
-"necessary:"
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:64
-#, no-c-format
-msgid ""
-"<![CDATA[@Dependent @Mock @Action \n"
-"public class MockLoginAction { ... }]]>"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:66
-#, no-c-format
-msgid ""
-"If we want to force all actions to a particular scope, we can do that too."
-msgstr ""
-
-#. Tag: title
-#: stereotypes.xml:72
-#, no-c-format
-msgid "Restricting scope and type with a stereotype"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:74
-#, no-c-format
-msgid ""
-"Suppose that we wish to prevent actions from declaring certain scopes. Web "
-"Beans lets us explicitly specify the set of allowed scopes for Web Beans "
-"with a certain stereotype. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:78
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype(supportedScopes=RequestScoped.class)\n"
-"public @interface Action {}]]>"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:80
-#, no-c-format
-msgid ""
-"If a particular action class attempts to specify a scope other than the Web "
-"Beans request scope, an exception will be thrown by the Web Bean manager at "
-"initialization time."
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:84
-#, no-c-format
-msgid ""
-"We can also force all Web Bean with a certain stereotype to implement an "
-"interface or extend a class:"
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:87
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@WebTier\n"
-"@Stereotype(requiredTypes=AbstractAction.class)\n"
-"public @interface Action {}]]>"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:89
-#, no-c-format
-msgid ""
-"If a particular action class does not extend the class "
-"<literal>AbstractAction</literal>, an exception will be thrown by the Web "
-"Bean manager at initialization time."
-msgstr ""
-
-#. Tag: title
-#: stereotypes.xml:96
-#, no-c-format
-msgid "Interceptor bindings for stereotypes"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:98
-#, no-c-format
-msgid ""
-"A stereotype may specify a set of interceptor bindings to be inherited by "
-"all Web Beans with that stereotype."
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:101
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@Transactional(requiresNew=true)\n"
-"@Secure\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:103
-#, no-c-format
-msgid ""
-"This helps us get technical concerns even further away from the business "
-"code!"
-msgstr ""
-
-#. Tag: title
-#: stereotypes.xml:109
-#, no-c-format
-msgid "Name defaulting with stereotypes"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:111
-#, no-c-format
-msgid ""
-"Finally, we can specify that all Web Beans with a certain stereotype have a "
-"Web Bean name, defaulted by the Web Bean manager. Actions are often "
-"referenced in JSP pages, so they're a perfect use case for this feature. All "
-"we need to do is add an empty <literal>@Named</literal> annotation:"
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:116
-#, no-c-format
-msgid ""
-"<![CDATA[@Retention(RUNTIME)\n"
-"@Target(TYPE)\n"
-"@RequestScoped\n"
-"@Transactional(requiresNew=true)\n"
-"@Secure\n"
-"@Named\n"
-"@WebTier\n"
-"@Stereotype\n"
-"public @interface Action {}]]>"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:118
-#, no-c-format
-msgid ""
-"Now, <literal>LoginAction</literal> will have the name <literal>loginAction</"
-"literal>."
-msgstr ""
-
-#. Tag: title
-#: stereotypes.xml:124
-#, no-c-format
-msgid "Standard stereotypes"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:126
-#, no-c-format
-msgid ""
-"We've already met two standard stereotypes defined by the Web Beans "
-"specification: <literal>@Interceptor</literal> and <literal>@Decorator</"
-"literal>."
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:129
-#, no-c-format
-msgid "Web Beans defines one further standard stereotype:"
-msgstr ""
-
-#. Tag: programlisting
-#: stereotypes.xml:131
-#, no-c-format
-msgid ""
-"<![CDATA[@Named \n"
-"@RequestScoped \n"
-"@Stereotype \n"
-"@Target({TYPE, METHOD}) \n"
-"@Retention(RUNTIME) \n"
-"public @interface Model {} ]]>"
-msgstr ""
-
-#. Tag: para
-#: stereotypes.xml:133
-#, no-c-format
-msgid ""
-"This stereotype is intended for use with JSF. Instead of using JSF managed "
-"beans, just annotate a Web Bean <literal>@Model</literal>, and use it "
-"directly in your JSF page."
-msgstr ""

Deleted: doc/trunk/reference/zh-CN/modules/xml.po
===================================================================
--- doc/trunk/reference/zh-CN/modules/xml.po	2009-01-04 23:38:54 UTC (rev 761)
+++ doc/trunk/reference/zh-CN/modules/xml.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -1,352 +0,0 @@
-# Language zh-CN translations for master.xml package.
-# Automatically generated, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: master.xml \n"
-"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
-"POT-Creation-Date: 2008-12-19 20:26+0000\n"
-"PO-Revision-Date: 2008-12-19 20:26+0000\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Tag: title
-#: xml.xml:4
-#, no-c-format
-msgid "Defining Web Beans using XML"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:6
-#, no-c-format
-msgid ""
-"So far, we've seen plenty of examples of Web Beans declared using "
-"annotations. However, there are a couple of occasions when we can't use "
-"annotations to define the Web Bean:"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:12
-#, no-c-format
-msgid "when the implementation class comes from some preexisting library, or"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:15
-#, no-c-format
-msgid ""
-"when there should be multiple Web Beans with the same implementation class."
-msgstr ""
-
-#. Tag: para
-#: xml.xml:20
-#, no-c-format
-msgid "In either of these cases, Web Beans gives us two options:"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:23
-#, no-c-format
-msgid "write a producer method, or"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:24
-#, no-c-format
-msgid "declare the Web Bean using XML."
-msgstr ""
-
-#. Tag: para
-#: xml.xml:27
-#, no-c-format
-msgid ""
-"Many frameworks use XML to provide metadata relating to Java classes. "
-"However, Web Beans uses a very different approach to specifying the names of "
-"Java classes, fields or methods to most other frameworks. Instead of writing "
-"class and member names as the string values of XML elements and attributes, "
-"Web Beans lets you use the class or member name as the name of the XML "
-"element."
-msgstr ""
-
-#. Tag: para
-#: xml.xml:33
-#, no-c-format
-msgid ""
-"The advantage of this approach is that you can write an XML schema that "
-"prevents spelling errors in your XML document. It's even possible for a tool "
-"to generate the XML schema automatically from the compiled Java code. Or, an "
-"integrated development environment could perform the same validation without "
-"the need for the explicit intermediate generation step."
-msgstr ""
-
-#. Tag: title
-#: xml.xml:40
-#, no-c-format
-msgid "Declaring Web Bean classes"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:42
-#, no-c-format
-msgid ""
-"For each Java package, Web Beans defines a corresponding XML namespace. The "
-"namespace is formed by prepending <literal>urn:java:</literal> to the Java "
-"package name. For the package <literal>com.mydomain.myapp</literal>, the XML "
-"namespace is <literal>urn:java:com.mydomain.myapp</literal>."
-msgstr ""
-
-#. Tag: para
-#: xml.xml:47
-#, no-c-format
-msgid ""
-"Java types belonging to a package are referred to using an XML element in "
-"the namespace corresponding to the package. The name of the element is the "
-"name of the Java type. Fields and methods of the type are specified by child "
-"elements in the same namespace. If the type is an annotation, members are "
-"specified by attributes of the element."
-msgstr ""
-
-#. Tag: para
-#: xml.xml:53
-#, no-c-format
-msgid ""
-"For example, the element <literal>&lt;util:Date/&gt;</literal> in the "
-"following XML fragment refers to the class <literal>java.util.Date</literal>:"
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:56
-#, no-c-format
-msgid ""
-"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
-"          xmlns:util=\"urn:java:java.util\">\n"
-"\n"
-"    <util:Date/>\n"
-"\n"
-"</WebBeans>]]>"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:58
-#, no-c-format
-msgid ""
-"And this is all the code we need to declare that <literal>Date</literal> is "
-"a simple Web Bean! An instance of <literal>Date</literal> may now be "
-"injected by any other Web Bean:"
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:62
-#, no-c-format
-msgid "<![CDATA[@Current Date date]]>"
-msgstr ""
-
-#. Tag: title
-#: xml.xml:67
-#, no-c-format
-msgid "Declaring Web Bean metadata"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:69
-#, no-c-format
-msgid ""
-"We can declare the scope, deployment type and interceptor binding types "
-"using direct child elements of the Web Bean declaration:"
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:72
-#, no-c-format
-msgid ""
-"<![CDATA[<myapp:ShoppingCart>\n"
-"    <SessionScoped/>\n"
-"    <myfwk:Transactional requiresNew=\"true\"/>\n"
-"    <myfwk:Secure/>\n"
-"</myapp:ShoppingCart>]]>"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:74
-#, no-c-format
-msgid "We use exactly the same approach to specify names and binding type:"
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:76
-#, no-c-format
-msgid ""
-"<![CDATA[<util:Date>\n"
-"    <Named>currentTime</Named>\n"
-"</util:Date>\n"
-"\n"
-"<util:Date>\n"
-"    <SessionScoped/>\n"
-"    <myapp:Login/>\n"
-"    <Named>loginTime</Named>\n"
-"</util:Date>\n"
-"\n"
-"<util:Date>\n"
-"    <ApplicationScoped/>\n"
-"    <myapp:SystemStart/>\n"
-"    <Named>systemStartTime</Named>\n"
-"</util:Date>]]>"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:78
-#, no-c-format
-msgid ""
-"Where <literal>@Login</literal> and <literal>@SystemStart</literal> are "
-"binding annotations types."
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:81
-#, no-c-format
-msgid ""
-"<![CDATA[@Current Date currentTime;\n"
-"@Login Date loginTime;\n"
-"@SystemStart Date systemStartTime;]]>"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:83
-#, no-c-format
-msgid "As usual, a Web Bean may support multiple binding types:"
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:85
-#, no-c-format
-msgid ""
-"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
-"    <myapp:PayByCheque/>\n"
-"    <myapp:Asynchronous/>\n"
-"</myapp:AsynchronousChequePaymentProcessor>]]>"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:87
-#, no-c-format
-msgid ""
-"Interceptors and decorators are just simple Web Beans, so they may be "
-"declared just like any other simple Web Bean:"
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:90
-#, no-c-format
-msgid ""
-"<![CDATA[<myfwk:TransactionInterceptor>\n"
-"    <Interceptor/>\n"
-"    <myfwk:Transactional/>\n"
-"</myfwk:TransactionInterceptor>]]>"
-msgstr ""
-
-#. Tag: title
-#: xml.xml:95
-#, no-c-format
-msgid "Declaring Web Bean members"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:97
-#, no-c-format
-msgid "TODO!"
-msgstr ""
-
-#. Tag: title
-#: xml.xml:104
-#, no-c-format
-msgid "Declaring inline Web Beans"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:106
-#, no-c-format
-msgid "Web Beans lets us define a Web Bean at an injection point. For example:"
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:108
-#, no-c-format
-msgid ""
-"<![CDATA[<myapp:System>\n"
-"    <ApplicationScoped/>\n"
-"    <myapp:admin>\n"
-"        <myapp:Name>\n"
-"            <myapp:firstname>Gavin</myapp:firstname>\n"
-"            <myapp:lastname>King</myapp:lastname>\n"
-"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
-"        </myapp:Name>\n"
-"    </myapp:admin>\n"
-"</myapp:System>]]>"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:110
-#, no-c-format
-msgid ""
-"The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of "
-"scope <literal>@Dependent</literal> and class <literal>Name</literal>, with "
-"a set of initial field values. This Web Bean has a special, container-"
-"generated binding and is therefore injectable only to the specific injection "
-"point at which it is declared."
-msgstr ""
-
-#. Tag: para
-#: xml.xml:116
-#, no-c-format
-msgid ""
-"This simple but powerful feature allows the Web Beans XML format to be used "
-"to specify whole graphs of Java objects. It's not quite a full databinding "
-"solution, but it's close!"
-msgstr ""
-
-#. Tag: title
-#: xml.xml:123
-#, no-c-format
-msgid "Using a schema"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:125
-#, no-c-format
-msgid ""
-"If we want our XML document format to be authored by people who aren't Java "
-"developers, or who don't have access to our code, we need to provide a "
-"schema. There's nothing specific to Web Beans about writing or using the "
-"schema."
-msgstr ""
-
-#. Tag: programlisting
-#: xml.xml:130
-#, no-c-format
-msgid ""
-"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
-"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
-"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
-"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/"
-"jee/web-beans-1.0.xsd\n"
-"                              urn:java:com.mydomain.myapp http://mydomain."
-"com/xsd/myapp-1.2.xsd\">\n"
-"\n"
-"    <myapp:System>\n"
-"        ...\n"
-"    </myapp:System>\n"
-"\n"
-"</WebBeans>]]>"
-msgstr ""
-
-#. Tag: para
-#: xml.xml:132
-#, no-c-format
-msgid ""
-"Writing an XML schema is quite tedious. Therefore, the Web Beans RI project "
-"will provide a tool which automatically generates the XML schema from "
-"compiled Java code."
-msgstr ""

Copied: doc/trunk/reference/zh-CN/next.po (from rev 701, doc/trunk/reference/zh-CN/modules/next.po)
===================================================================
--- doc/trunk/reference/zh-CN/next.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/next.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,39 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-23 16:53+0800\n"
+"Last-Translator: Sean Wu <alartin at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: next.xml:4
+#, no-c-format
+msgid "Next steps"
+msgstr "下一步"
+
+#. Tag: para
+#: next.xml:6
+#, no-c-format
+msgid "Because Web Beans is so new, there's not yet a lot of information available online."
+msgstr "因为Web Bean是新生事物,所以网上可以获得的有关信息很少。"
+
+#. Tag: para
+#: next.xml:9
+#, no-c-format
+msgid "Of course, the Web Beans specification is the best source of more information about Web Beans. The spec is about 100 pages long, only twice the length of this article, and almost as readable. But, of course, it covers many details that we've skipped over. The spec is available from <literal>http://jcp.org/en/jsr/detail?id=299</literal>."
+msgstr "当然,Web Bean规范是有关Web Bean信息的最佳来源。这个规范大约有100页,只是这个文章的两倍长,并且可读性很好。它覆盖了我们这里跳过的很多细节。这个规范可以从<literal>http://jcp.org/en/jsr/detail?id=299</literal>下载。"
+
+#. Tag: para
+#: next.xml:15
+#, no-c-format
+msgid "The Web Beans Reference implementation is being developed at <literal>http://seamframework.org/WebBeans</literal>. The RI development team and the Web Beans spec lead blog at <literal>http://in.relation.to</literal>. This article is substantially based upon a series of blog entries published there."
+msgstr "Web Bean参考实现正在<literal>http://seamframework.org/WebBeans</literal>项目中开发。参考实现的开发团队和Web Bean规范领导的博客位于<literal>http://in.relation.to</literal>。本篇文章的撰写完全基于先前发表在那里的一系列博客文章。"
+


Property changes on: doc/trunk/reference/zh-CN/next.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/part1.po (from rev 682, doc/trunk/reference/zh-CN/modules/part1.po)
===================================================================
--- doc/trunk/reference/zh-CN/part1.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/part1.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,177 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-22 10:45+0800\n"
+"Last-Translator: Sean Wu <alartin at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part1.xml:5
+#, no-c-format
+msgid "The Web Beans (JSR-299) specification defines a set of services for the Java EE environment that makes applications much easier to develop. Web Beans layers an enhanced lifecycle and interaction model over existing Java component types including JavaBeans and Enterprise Java Beans. As a complement to the traditional Java EE programming model, the Web Beans services provide:"
+msgstr "The Web Beans (JSR-299)规范为Java EE环境定义了一套服务以便开发者能够更轻松地开发应用。Web Beans在现有的包括JavaBeans和企业JavaBeans在内的Java组件类型之上增强了生命周期和交互的模型层。作为传统的Java EE编程模型的补充,Web Beans服务提供了:"
+
+#. Tag: para
+#: part1.xml:14
+#, no-c-format
+msgid "an improved lifecycle for stateful components, bound to well-defined <emphasis>contexts</emphasis>,"
+msgstr "一个为有状态组件而改良的并且绑定到定义明确的 <emphasis>上下文</emphasis>上的生命周期,"
+
+#. Tag: para
+#: part1.xml:18
+#, no-c-format
+msgid "a typesafe approach to <emphasis>dependency injection</emphasis>,"
+msgstr "一个类型安全的<emphasis>依赖注入</emphasis>方法,"
+
+#. Tag: para
+#: part1.xml:21
+#, no-c-format
+msgid "interaction via an <emphasis>event notification</emphasis> facility, and"
+msgstr "通过 <emphasis>事件通知</emphasis> 机制实现的交互,并且"
+
+#. Tag: para
+#: part1.xml:25
+#, no-c-format
+msgid "a better approach to binding <emphasis>interceptors</emphasis> to components, along with a new kind of interceptor, called a <emphasis>decorator</emphasis>, that is more appropriate for use in solving business problems."
+msgstr "一个更好的将<emphasis>拦截器</emphasis>绑定到组件上的方法,同时提供了一个名为<emphasis>装饰器(decorator)</emphasis>的新型拦截器,这种拦截器更加适合解决业务问题。"
+
+#. Tag: para
+#: part1.xml:32
+#, no-c-format
+msgid "Dependency injection, together with contextual lifecycle management, saves the user of an unfamiliar API from having to ask and answer the following questions:"
+msgstr "依赖注入和具备上下文的生命周期管理节省了开发者出于对接口的不熟悉而不得不处理下列问题所浪费时间:"
+
+#. Tag: para
+#: part1.xml:38
+#, no-c-format
+msgid "what is the lifecycle of this object?"
+msgstr "这个对象的生命周期是什么?"
+
+#. Tag: para
+#: part1.xml:41
+#, no-c-format
+msgid "how many simultaneous clients can it have?"
+msgstr "它能够有多少个并发的客户端"
+
+#. Tag: para
+#: part1.xml:44
+#, no-c-format
+msgid "is it multithreaded?"
+msgstr "它是多线程的么?"
+
+#. Tag: para
+#: part1.xml:47
+#, no-c-format
+msgid "where can I get one from?"
+msgstr "我能从哪里得到一个对象?"
+
+#. Tag: para
+#: part1.xml:50
+#, no-c-format
+msgid "do I need to explicitly destroy it?"
+msgstr "我需要显式地销毁它么?"
+
+#. Tag: para
+#: part1.xml:53
+#, no-c-format
+msgid "where should I keep my reference to it when I'm not using it directly?"
+msgstr "当我不再直接使用它的时候,我需要将它的引用保存到哪里?"
+
+#. Tag: para
+#: part1.xml:57
+#, no-c-format
+msgid "how can I add an indirection layer, so that the implementation of this object can vary at deployment time?"
+msgstr "我如何才能添加一个间接层,以便在部署的时候可以更换这个对象的不同实现?"
+
+#. Tag: para
+#: part1.xml:61
+#, no-c-format
+msgid "how should I go about sharing this object between other objects?"
+msgstr "我应该如何在其他对象中共享这个对象?"
+
+#. Tag: para
+#: part1.xml:65
+#, no-c-format
+msgid "A Web Bean specifies only the type and semantics of other Web Beans it depends upon. It need not be aware of the actual lifecycle, concrete implementation, threading model or other clients of any Web Bean it depends upon. Even better, the concrete implementation, lifecycle and threading model of a Web Bean it depends upon may vary according to the deployment scenario, without affecting any client."
+msgstr "一个Web Bean仅仅需要指定它所依赖的其他Web Bean的类型和语义。它不需要知道他所依赖的任何Web Bean的实际生命周期,具体的实现,线程模型或者这个Web Bean的其他客户端。更棒的是,它所依赖的Web Bean的具体实现和生命周期,线程模型可以根据部署场景而更改,却丝毫不影响任何客户端。"
+
+#. Tag: para
+#: part1.xml:72
+#, no-c-format
+msgid "Events, interceptors and decorators enhance the <emphasis>loose-coupling</emphasis> that is inherent in this model:"
+msgstr "事件,拦截器和装饰器增强了这个模型固有的<emphasis>松耦合</emphasis>特性:"
+
+#. Tag: para
+#: part1.xml:77
+#, no-c-format
+msgid "<emphasis>event notifications</emphasis> decouple event producers from event consumers,"
+msgstr "<emphasis>事件通知</emphasis>将事件的消费者和事件的产生者解耦,"
+
+#. Tag: para
+#: part1.xml:81
+#, no-c-format
+msgid "<emphasis>interceptors</emphasis> decouple technical concerns from business logic, and"
+msgstr "<emphasis>拦截器</emphasis>将技术关注点从业务逻辑中解耦,并且"
+
+#. Tag: para
+#: part1.xml:85
+#, no-c-format
+msgid "<emphasis>decorators</emphasis> allow business concerns to be compartmentalized."
+msgstr "<emphasis>装饰器</emphasis>允许开发者划分业务关注点。"
+
+#. Tag: para
+#: part1.xml:90
+#, no-c-format
+msgid "Most importantly, Web Beans provides all these facilities in a <emphasis>typesafe</emphasis> way. Web Beans never uses string-based identifiers to determine how collaborating objects fit together. And XML, though it remains an option, is rarely used. Instead, Web Beans uses the typing information that is already available in the Java object model, together with a new pattern, called <emphasis>binding annotations</emphasis>, to wire together Web Beans, their dependencies, their interceptors and decorators and their event consumers."
+msgstr "最重要的是,Web Beans以一种<emphasis>类型安全</emphasis>的方式提供所有的特性。Web Beans从来不使用基于字符串的标识符来决定交互的对象如何关联在一起。至于XML, 虽然它仍旧是一个选项,但也可以几乎不使用。取而代之,Web Bean使用Java对象模型的类型信息和一种新的<emphasis>绑定注释</emphasis>模式将Web Beans和它们的依赖以及拦截器,装饰器和事件消费者关联在一起。"
+
+#. Tag: para
+#: part1.xml:100
+#, no-c-format
+msgid "The Web Beans services are general and apply to the following types of components that exist in the Java EE environment:"
+msgstr "Web Beans服务是相当普遍的,可以应用在下列Java EE环境中的组件类型中:"
+
+#. Tag: para
+#: part1.xml:105
+#, no-c-format
+msgid "all JavaBeans,"
+msgstr "所有的JavaBeans,"
+
+#. Tag: para
+#: part1.xml:108
+#, no-c-format
+msgid "all EJBs, and"
+msgstr "所有的EJB, 和"
+
+#. Tag: para
+#: part1.xml:111
+#, no-c-format
+msgid "all Servlets."
+msgstr "所有的Servlet。"
+
+#. Tag: para
+#: part1.xml:115
+#, no-c-format
+msgid "Web Beans even provides the necessary integration points so that other kinds of components defined by future Java EE specifications or by non-standard frameworks may be cleanly integrated with Web Beans, take advantage of the Web Beans services, and interact with any other kind of Web Bean."
+msgstr "Web Beans甚至提供了必要的整合点,以便未来的Java EE规范或者其他非标准的框架中的不同组件能够和Web Beans轻松整合,使用Web Beans服务以及和任何其他类型的Web Bean交互。"
+
+#. Tag: para
+#: part1.xml:120
+#, no-c-format
+msgid "Web Beans was influenced by a number of existing Java frameworks, including Seam, Guice and Spring. However, Web Beans has its own very distinct character: more typesafe than Seam, more stateful and less XML-centric than Spring, more web and enterprise-application capable than Guice."
+msgstr "Web Beans受到了包括Seam, Guice和Spring在内的很多现有的Java框架的影响。然而,Web Beans具有自己鲜明的特性:在类型安全方面优于Seam,比Spring更加具备状态和使用更少的XML, 比Guice更加具备Web和企业应用的能力。"
+
+#. Tag: para
+#: part1.xml:125
+#, no-c-format
+msgid "Most importantly, Web Beans is a JCP standard that integrates cleanly with Java EE, and with any Java SE environment where embeddable EJB Lite is available."
+msgstr "最重要的是,Web Beans是一个JCP标准,能够干净地整合到Java EE中。Web Beans也可以整合到任何使用轻量的内嵌EJB的Java SE环境中。"
+


Property changes on: doc/trunk/reference/zh-CN/part1.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/part2.po (from rev 701, doc/trunk/reference/zh-CN/modules/part2.po)
===================================================================
--- doc/trunk/reference/zh-CN/part2.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/part2.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,81 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-23 17:08+0800\n"
+"Last-Translator: Sean Wu <alartin at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part2.xml:5
+#, no-c-format
+msgid "The first major theme of Web Beans is <emphasis>loose coupling</emphasis>. We've already seen three means of achieving loose coupling:"
+msgstr "Web Bean的首要宗旨就是<emphasis>松耦合</emphasis>。我们已经看到三种实现松耦合的方法:"
+
+#. Tag: para
+#: part2.xml:10
+#, no-c-format
+msgid "<emphasis>deployment types</emphasis> enable deployment time polymorphism,"
+msgstr "<emphasis>部署类型</emphasis>能够实现部署时多态性"
+
+#. Tag: para
+#: part2.xml:14
+#, no-c-format
+msgid "<emphasis>producer methods</emphasis> enable runtime polymorphism, and"
+msgstr "<emphasis>生产者方法</emphasis>能够实现运行时多态性,并且"
+
+#. Tag: para
+#: part2.xml:18
+#, no-c-format
+msgid "<emphasis>contextual lifecycle management</emphasis> decouples Web Bean lifecycles."
+msgstr "<emphasis>具备上下文的生命周期管理</emphasis>将Web Bean的生命周期解耦。"
+
+#. Tag: para
+#: part2.xml:23
+#, no-c-format
+msgid "These techniques serve to enable loose coupling of client and server. The client is no longer tightly bound to an implementation of an API, nor is it required to manage the lifecycle of the server object. This approach lets <emphasis>stateful objects interact as if they were services</emphasis>."
+msgstr "这些技术都是为了将客户端和服务器端解耦。客户端不在和一个API的具体实现紧密绑定,也不需要管理服务器端对象的生命周期。这种方法<emphasis>能够让有状态的对象像服务一样交互</emphasis>。"
+
+#. Tag: para
+#: part2.xml:28
+#, no-c-format
+msgid "Loose coupling makes a system more <emphasis>dynamic</emphasis>. The system can respond to change in a well-defined manner. In the past, frameworks that attempted to provide the facilities listed above invariably did it by sacrificing type safety. Web Beans is the first technology that achieves this level of loose coupling in a typesafe way."
+msgstr "松耦合能够让系统更加<emphasis>动态</emphasis>。系统可以以定义良好的方式来相应变化。在过去,多数框架总是通过牺牲类型安全来提供上述功能。实现此种高度的松耦合,同时又能够保证类型安全,Web Beans是第一个实现这个目标的技术。"
+
+#. Tag: para
+#: part2.xml:34
+#, no-c-format
+msgid "Web Beans provides three extra important facilities that further the goal of loose coupling:"
+msgstr "Web Bean提供三种额外的功能来实现松耦合的目标:"
+
+#. Tag: para
+#: part2.xml:39
+#, no-c-format
+msgid "<emphasis>interceptors</emphasis> decouple technical concerns from business logic,"
+msgstr "<emphasis>拦截器</emphasis>能够将技术关注点从业务逻辑中解耦。"
+
+#. Tag: para
+#: part2.xml:43
+#, no-c-format
+msgid "<emphasis>decorators</emphasis> may be used to decouple some business concerns, and"
+msgstr "<emphasis>装饰器</emphasis>能够将一些业务关注点解耦,并且"
+
+#. Tag: para
+#: part2.xml:47
+#, no-c-format
+msgid "<emphasis>event notifications</emphasis> decouple event producers from event consumers."
+msgstr "<emphasis>事件通知</emphasis>机制能将事件消费者和事件生产者解耦。"
+
+#. Tag: para
+#: part2.xml:52
+#, no-c-format
+msgid "Let's explore interceptors first."
+msgstr "让我们首先研究拦截器。"
+


Property changes on: doc/trunk/reference/zh-CN/part2.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/part3.po (from rev 701, doc/trunk/reference/zh-CN/modules/part3.po)
===================================================================
--- doc/trunk/reference/zh-CN/part3.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/part3.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,117 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-23 17:29+0800\n"
+"Last-Translator: Sean Wu <alartin at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part3.xml:5
+#, no-c-format
+msgid "The second major theme of Web Beans is <emphasis>strong typing</emphasis>. The information about the dependencies, interceptors and decorators of a Web Bean, and the information about event consumers for an event producer, is contained in typesafe Java constructs that may be validated by the compiler."
+msgstr "Web Bean的第二个宗旨是<emphasis>强类型</emphasis>。Web Bean有关依赖,拦截器和装饰器的信息以及事件生产者对应的事件消费者的信息都包含在类型安全的Java构件中,可以被编译器验证。"
+
+#. Tag: para
+#: part3.xml:10
+#, no-c-format
+msgid "You don't see string-based identifiers in Web Beans code, not because the framework is hiding them from you using clever defaulting rules&#151;so-called \"configuration by convention\"&#151;but because there are simply no strings there to begin with!"
+msgstr "在Web Bean代码中,你不会看到基于字符串的标识符。这不是因为这个框架使用智能默认规则&#151;也叫\"按惯例配置\"&#151;将它们隐藏起来,这是因为从开始就没有任何字符串!"
+
+#. Tag: para
+#: part3.xml:15
+#, no-c-format
+msgid "The obvious benefit of this approach is that <emphasis>any</emphasis> IDE can provide autocompletion, validation and refactoring without the need for special tooling. But there is a second, less-immediately-obvious, benefit. It turns out that when you start thinking of identifying objects, events or interceptors via annotations instead of names, you have an opportunity to lift the semantic level of your code."
+msgstr "这种方法的显而易见的好处是<emphasis>任何</emphasis>IDE都可以提供自动完成,验证和重构而无需任何特殊工具。除此之外,还有第二个,不是那么明显的好处。它能够让你考虑识别对象,事件或者拦截器的时候使用注释,而不是名字,这样你将可以提升你的代码的语义水平。"
+
+#. Tag: para
+#: part3.xml:21
+#, no-c-format
+msgid "Web Beans encourages you develop annotations that model concepts, for example,"
+msgstr "Web Beans能够鼓励你为概念建模,开发注释。例如:"
+
+#. Tag: para
+#: part3.xml:26
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>,"
+msgstr "<literal>@Asynchronous</literal>,"
+
+#. Tag: para
+#: part3.xml:29
+#, no-c-format
+msgid "<literal>@Mock</literal>,"
+msgstr "<literal>@Mock</literal>,"
+
+#. Tag: para
+#: part3.xml:32
+#, no-c-format
+msgid "<literal>@Secure</literal> or"
+msgstr "<literal>@Secure</literal> or"
+
+#. Tag: para
+#: part3.xml:35
+#, no-c-format
+msgid "<literal>@Updated</literal>,"
+msgstr "<literal>@Updated</literal>,"
+
+#. Tag: para
+#: part3.xml:39
+#, no-c-format
+msgid "instead of using compound names like"
+msgstr "而不是使用复合名字,像:"
+
+#. Tag: para
+#: part3.xml:43
+#, no-c-format
+msgid "<literal>asyncPaymentProcessor</literal>,"
+msgstr "<literal>asyncPaymentProcessor</literal>,"
+
+#. Tag: para
+#: part3.xml:46
+#, no-c-format
+msgid "<literal>mockPaymentProcessor</literal>,"
+msgstr "<literal>mockPaymentProcessor</literal>,"
+
+#. Tag: para
+#: part3.xml:49
+#, no-c-format
+msgid "<literal>SecurityInterceptor</literal> or"
+msgstr "<literal>SecurityInterceptor</literal> or"
+
+#. Tag: para
+#: part3.xml:52
+#, no-c-format
+msgid "<literal>DocumentUpdatedEvent</literal>."
+msgstr "<literal>DocumentUpdatedEvent</literal>."
+
+#. Tag: para
+#: part3.xml:56
+#, no-c-format
+msgid "The annotations are reusable. They help describe common qualities of disparate parts of the system. They help us categorize and understand our code. They help us deal with common concerns in a common way. They make our code more literate and more understandable."
+msgstr "注释可以重用。它们能够描述系统不同部分的通用特征。它们能够帮助我们分类和理解我们的代码。它们能够以通用的方式为我们处理共同的关注点。它们能够让我们的代码具有更高的可读性,更加容易被理解。"
+
+#. Tag: para
+#: part3.xml:61
+#, no-c-format
+msgid "Web Beans <emphasis>stereotypes</emphasis> take this idea a step further. A stereotype models a common <emphasis>role</emphasis> in your application architecture. It encapsulates various properties of the role, including scope, interceptor bindings, deployment type, etc, into a single reusable package."
+msgstr "Web Beans的<emphasis>模板</emphasis>是这种思想的延伸。一个模板为我们应用体系中的一个通用的<emphasis>角色</emphasis>建模。它将一个角色的各种不同的属性,包括范围,拦截器绑定,部署类型,等等封装到一个单一的可重用的包中。"
+
+#. Tag: para
+#: part3.xml:66
+#, no-c-format
+msgid "Even Web Beans XML metadata is strongly typed! There's no compiler for XML, so Web Beans takes advantage of XML schemas to validate the Java types and attributes that appear in XML. This approach turns out to make the XML more literate, just like annotations made our Java code more literate."
+msgstr "甚至Web Bean的XML元数据也是强类型的!对于XML没有编译器,Web Bean充分利用了XML模式去验证XML中出现的Java类型和属性。这种方式让XML更加具有可读性,就像注释让我们的Java代码更加具有可读性一样。"
+
+#. Tag: para
+#: part3.xml:71
+#, no-c-format
+msgid "We're now ready to meet some more advanced features of Web Beans. Bear in mind that these features exist to make our code both easier to validate and more understandable. Most of the time you don't ever really <emphasis>need</emphasis> to use these features, but if you use them wisely, you'll come to appreciate their power."
+msgstr "我们现在可以接触Web Bean中更加高级的特性了。要记住这些特性能够让我们的代码不仅更容易验证,也更容易理解。大部分时间,你根本不<emphasis>需要</emphasis>这些特性,但是如果你能聪明地运用它们的话,你将充分体会到它们的强大。"
+


Property changes on: doc/trunk/reference/zh-CN/part3.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/part4.po (from rev 701, doc/trunk/reference/zh-CN/modules/part4.po)
===================================================================
--- doc/trunk/reference/zh-CN/part4.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/part4.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,33 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-23 17:48+0800\n"
+"Last-Translator: Sean Wu <alartin at gmail.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#: part4.xml:5
+#, no-c-format
+msgid "The third theme of Web Beans is <emphasis>integration</emphasis>. Web Beans was designed to work in concert with other technologies, helping the application developer fit the other technologies together. Web Beans is an open technology. It forms a part of the Java EE ecosystem, and is itself the foundation for a new ecosystem of portable extensions and integration with existing frameworks and technologies."
+msgstr "Web Bean的第三个宗旨是<emphasis>整合</emphasis>。Web Bean设计思想就是能够和其他的技术相互合作,能够让开发者更容易地将其他技术结合使用。Web Bean是一个开发的技术。它形成了Java EE生态系统的一部分,而它本身也是一个新的生态系统的基石,这个新的生态系统能够为已有的框架和技术提供一个更便携的扩展和整合机制。"
+
+#. Tag: para
+#: part4.xml:12
+#, no-c-format
+msgid "We've already seen how Web Beans helps integrate EJB and JSF, allowing EJBs to be bound directly to JSF pages. That's just the beginning. Web Beans offers the same potential to diverse other technologies, such as Business Process Management engines, other Web Frameworks, and third-party component models. The Java EE platform will never be able to standardize all the interesting technologies that are used in the world of Java application development, but Web Beans makes it easier to use the technologies which are not yet part of the platform seamlessly within the Java EE environment."
+msgstr "我们已经看到了Web Bean如何帮助整合EJB和JSF, 允许我们将EJB直接绑定到JSF页面上。而这只是开始,Web Bean为其他技术提供了同样的潜在能力,例如业务流程管理引擎,其他的Web框架,第三方组件模型。Java EE平台永远不可能将Java应用开发世界中所有有意思的技术都标准化。但是Web Bean能够提供一个便捷的方式将这些尚未成为平台一部分的技术更加容易并且无缝地集成到Java EE环境中。"
+
+#. Tag: para
+#: part4.xml:21
+#, no-c-format
+msgid "We're about to see how to take full advantage of the Java EE platform in an application that uses Web Beans. We'll also briefly meet a set of SPIs that are provided to support portable extensions to Web Beans. You might not ever need to use these SPIs directly, but it's nice to know they are there if you need them. Most importantly, you'll take advantage of them indirectly, every time you use a third-party extension."
+msgstr "我们已经看到了如何在应用中使用Web Bean来充分利用Java EE平台。我们也粗略地看到了一些能够支持Web Bean的便携性扩展点的SPI。你也许永远不回直接使用这些SPI,但是,知道在需要的时候你可以使用它们很有好处。最重要的是,每次你使用一个第三方扩展的时候,都有可能间接地利用了它们。"
+


Property changes on: doc/trunk/reference/zh-CN/part4.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/producermethods.po (from rev 638, doc/trunk/reference/zh-CN/modules/producermethods.po)
===================================================================
--- doc/trunk/reference/zh-CN/producermethods.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/producermethods.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,247 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-20 22:08+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: producermethods.xml:5
+#, no-c-format
+msgid "Producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:7
+#, no-c-format
+msgid ""
+"Producer methods let us overcome certain limitations that arise when the Web "
+"Bean manager, instead of the application, is responsible for instantiating "
+"objects. They're also the easiest way to integrate objects which are not Web "
+"Beans into the Web Beans environment. (We'll meet a second approach in <xref "
+"linkend=\"xml\"/>.)"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:12
+#, no-c-format
+msgid "According to the spec:"
+msgstr ""
+
+#. Tag: chapter
+#: producermethods.xml:12
+#, no-c-format
+msgid ""
+"<blockquote> <para>A Web Beans producer method acts as a source of objects "
+"to be injected, where:</para> <itemizedlist> <listitem> <para>the objects to "
+"be injected are not required to be instances of Web Beans,</para> </"
+"listitem> <listitem> <para>the concrete type of the objects to be injected "
+"may vary at runtime or</para> </listitem> <listitem> <para>the objects "
+"require some custom initialization that is not performed by the Web Bean "
+"constructor</para> </listitem> </itemizedlist> </blockquote> <para>For "
+"example, producer methods let us:</para> <itemizedlist> <listitem> "
+"<para>expose a JPA entity as a Web Bean,</para> </listitem> <listitem> "
+"<para>expose any JDK class as a Web Bean,</para> </listitem> <listitem> "
+"<para>define multiple Web Beans, with different scopes or initialization, "
+"for the same implementation class, or</para> </listitem> <listitem> "
+"<para>vary the implementation of an API type at runtime.</para> </listitem> "
+"</itemizedlist> <para>In particular, producer methods let us use runtime "
+"polymorphism with Web Beans. As we've seen, deployment types are a powerful "
+"solution to the problem of deployment-time polymorphism. But once the system "
+"is deployed, the Web Bean implementation is fixed. A producer method has no "
+"such limitation:</para> <programlisting role=\"JAVA\"><![CDATA"
+"[@SessionScoped\n"
+"public class Preferences {\n"
+"    \n"
+"    private PaymentStrategyType paymentStrategy;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    @Produces @Preferred \n"
+"    public PaymentStrategy getPaymentStrategy() {\n"
+"        switch (paymentStrategy) {\n"
+"            case CREDIT_CARD: return new CreditCardPaymentStrategy();\n"
+"            case CHEQUE: return new ChequePaymentStrategy();\n"
+"            case PAYPAL: return new PayPalPaymentStrategy();\n"
+"            default: return null;\n"
+"        } \n"
+"    }\n"
+"    \n"
+"}]]></programlisting> <para>Consider an injection point:</para> "
+"<programlisting role=\"JAVA\"><![CDATA[@Preferred PaymentStrategy "
+"paymentStrat;]]></programlisting> <para>This injection point has the same "
+"type and binding annotations as the producer method, so it resolves to the "
+"producer method using the usual Web Beans injection rules. The producer "
+"method will be called by the Web Bean manager to obtain an instance to "
+"service this injection point.</para>."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:68
+#, no-c-format
+msgid "Scope of a producer method"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:70
+#, no-c-format
+msgid ""
+"The scope of the producer method defaults to <literal>@Dependent</literal>, "
+"and so it will be called <emphasis>every time</emphasis> the Web Bean "
+"manager injects this field or any other field that resolves to the same "
+"producer method. Thus, there could be multiple instances of the "
+"<literal>PaymentStrategy</literal> object for each user session."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:75
+#, no-c-format
+msgid ""
+"To change this behavior, we can add a <literal>@SessionScoped</literal> "
+"annotation to the method."
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy() {\n"
+"    ...\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:80
+#, no-c-format
+msgid ""
+"Now, when the producer method is called, the returned "
+"<literal>PaymentStrategy</literal> will be bound to the session context. The "
+"producer method won't be called again in the same session."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:87
+#, no-c-format
+msgid "Injection into producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:89
+#, no-c-format
+msgid ""
+"There's one potential problem with the code above. The implementations of "
+"<literal>CreditCardPaymentStrategy</literal> are instantiated using the Java "
+"<literal>new</literal> operator. Objects instantiated directly by the "
+"application can't take advantage of dependency injection and don't have "
+"interceptors."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:94
+#, no-c-format
+msgid ""
+"If this isn't what we want we can use dependency injection into the producer "
+"method to obtain Web Bean instances:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:97
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(CreditCardPaymentStrategy ccps,\n"
+"                                          ChequePaymentStrategy cps,\n"
+"                                          PayPalPaymentStrategy ppps) {\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:99
+#, no-c-format
+msgid ""
+"Wait, what if <literal>CreditCardPaymentStrategy</literal> is a request "
+"scoped Web Bean? Then the producer method has the effect of \"promoting\" "
+"the current request scoped instance into session scope. This is almost "
+"certainly a bug! The request scoped object will be destroyed by the Web Bean "
+"manager before the session ends, but the reference to the object will be "
+"left \"hanging\" in the session scope. This error will <emphasis>not</"
+"emphasis> be detected by the Web Bean manager, so please take extra care "
+"when returning Web Bean instances from producer methods!"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:107
+#, no-c-format
+msgid ""
+"There's at least three ways we could go about fixing this bug. We could "
+"change the scope of the <literal>CreditCardPaymentStrategy</literal> "
+"implementation, but this would affect other clients of that Web Bean. A "
+"better option would be to change the scope of the producer method to "
+"<literal>@Dependent</literal> or <literal>@RequestScoped</literal>."
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:113
+#, no-c-format
+msgid ""
+"But a more common solution is to use the special <literal>@New</literal> "
+"binding annotation."
+msgstr ""
+
+#. Tag: title
+#: producermethods.xml:119
+#, no-c-format
+msgid "Use of <literal>@New</literal> with producer methods"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:121
+#, no-c-format
+msgid "Consider the following producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: producermethods.xml:123
+#, no-c-format
+msgid ""
+"<![CDATA[@Produces @Preferred @SessionScoped\n"
+"public PaymentStrategy getPaymentStrategy(@New CreditCardPaymentStrategy "
+"ccps,\n"
+"                                          @New ChequePaymentStrategy cps,\n"
+"                                          @New PayPalPaymentStrategy ppps) "
+"{\n"
+"    switch (paymentStrategy) {\n"
+"        case CREDIT_CARD: return ccps;\n"
+"        case CHEQUE: return cps;\n"
+"        case PAYPAL: return ppps;\n"
+"        default: return null;\n"
+"    } \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: producermethods.xml:125
+#, no-c-format
+msgid ""
+"Then a new <emphasis>dependent</emphasis> instance of "
+"<literal>CreditCardPaymentStrategy</literal> will be created, passed to the "
+"producer method, returned by the producer method and finally bound to the "
+"session context. The dependent object won't be destroyed until the "
+"<literal>Preferences</literal> object is destroyed, at the end of the "
+"session."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/producermethods.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/ri-spi.po (from rev 638, doc/trunk/reference/zh-CN/modules/ri-spi.po)
===================================================================
--- doc/trunk/reference/zh-CN/ri-spi.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/ri-spi.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,272 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-20 22:07+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri-spi.xml:4
+#, no-c-format
+msgid "Integrating the Web Beans RI into other environments"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:6
+#, no-c-format
+msgid ""
+"Currently the Web Beans RI only runs in JBoss AS 5; integrating the RI into "
+"other EE environments (for example another application server like "
+"Glassfish), into a servlet container (like Tomcat), or with an Embedded "
+"EJB3.1 implementation is fairly easy. In this Appendix we will briefly "
+"discuss the steps needed."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:15
+#, no-c-format
+msgid ""
+"It should be possible to run Web Beans in an SE environment, but you'll to "
+"do more work, adding your own contexts and lifecycle. The Web Beans RI "
+"currently doesn't expose lifecycle extension points, so you would have to "
+"code directly against Web Beans RI classes."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:24
+#, no-c-format
+msgid "The Web Beans RI SPI"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:26
+#, no-c-format
+msgid ""
+"The Web Beans SPI is located in <literal>webbeans-ri-spi</literal> module, "
+"and packaged as <literal>webbeans-ri-spi.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:31
+#, no-c-format
+msgid "Currently, the only SPI to implement is the bootstrap spi:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:35
+#, no-c-format
+msgid ""
+"<![CDATA[public interface WebBeanDiscovery {\n"
+"   /**\n"
+"    * Gets list of all classes in classpath archives with web-beans.xml "
+"files\n"
+"    * \n"
+"    * @return An iterable over the classes \n"
+"    */\n"
+"   public Iterable<Class<?>> discoverWebBeanClasses();\n"
+"   \n"
+"   /**\n"
+"    * Gets a list of all web-beans.xml files in the app classpath\n"
+"    * \n"
+"    * @return An iterable over the web-beans.xml files \n"
+"    */\n"
+"   public Iterable<URL> discoverWebBeansXml();\n"
+"   \n"
+"   /**\n"
+"    * Gets a descriptor for each EJB in the application\n"
+"    * \n"
+"    * @return The bean class to descriptor map \n"
+"    */\n"
+"   public Iterable<EjbDescriptor<?>> discoverEjbs();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:37
+#, no-c-format
+msgid ""
+"The discovery of Web Bean classes and <literal>web-bean.xml</literal> files "
+"is self-explanatory (the algorithm is described in Section 11.1 of the JSR-"
+"299 specification, and isn't repeated here)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:43
+#, no-c-format
+msgid ""
+"The Web Beans RI also delegates EJB3 bean discovery to the container so that "
+"it doesn't have to scan for EJB3 annotations or parse <literal>ejb-jar.xml</"
+"literal>. For each EJB in the application an EJBDescriptor should be "
+"discovered:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:50
+#, no-c-format
+msgid ""
+"<![CDATA[public interface EjbDescriptor<T> {\n"
+"   \n"
+"   /**\n"
+"    * Gets the EJB type\n"
+"    * \n"
+"    * @return The EJB Bean class\n"
+"    */\n"
+"   public Class<T> getType();\n"
+"\n"
+"   /**\n"
+"    * Gets the local business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the local business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> getLocalBusinessInterfaces"
+"();\n"
+"   \n"
+"   /**\n"
+"    * Gets the remote business interfaces of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remote business interfaces\n"
+"    */\n"
+"   public Iterable<BusinessInterfaceDescriptor<?>> "
+"getRemoteBusinessInterfaces();\n"
+"   \n"
+"   /**\n"
+"    * Get the remove methods of the EJB\n"
+"    * \n"
+"    * @return An iterator over the remove methods\n"
+"    */\n"
+"   public Iterable<Method> getRemoveMethods();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is stateless\n"
+"    * \n"
+"    * @return True if stateless, false otherwise\n"
+"    */\n"
+"   public boolean isStateless();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the bean is a EJB 3.1 Singleton\n"
+"    * \n"
+"    * @return True if the bean is a singleton, false otherwise\n"
+"    */\n"
+"   public boolean isSingleton();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is stateful\n"
+"    * \n"
+"    * @return True if the bean is stateful, false otherwise\n"
+"    */\n"
+"   public boolean isStateful();\n"
+"\n"
+"   /**\n"
+"    * Indicates if the EJB is and MDB\n"
+"    * \n"
+"    * @return True if the bean is an MDB, false otherwise\n"
+"    */\n"
+"   public boolean isMessageDriven();\n"
+"\n"
+"   /**\n"
+"    * Gets the EJB name\n"
+"    * \n"
+"    * @return The name\n"
+"    */\n"
+"   public String getEjbName();\n"
+"   \n"
+"   /**\n"
+"    * @return The JNDI string which can be used to lookup a proxy which \n"
+"    * implements all local business interfaces \n"
+"    * \n"
+"    */\n"
+"   public String getLocalJndiName();\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:52
+#, no-c-format
+msgid ""
+"The contract described the JavaDoc is enough to implement an EJBDescriptor. "
+"In addition to these two interfaces, there is "
+"<literal>BusinessInterfaceDescriptor</literal> which represents a local "
+"business interface (encapsulating the interface class and jndi name)."
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:59
+#, no-c-format
+msgid ""
+"The Web Beans RI can be told to load your implementation of "
+"<literal>WebBeanDiscovery</literal> using the property <literal>org.jboss."
+"webbeans.bootstrap.webBeanDiscovery</literal> with the fully qualified class "
+"name as the value. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri-spi.xml:66
+#, no-c-format
+msgid ""
+"org.jboss.webbeans.bootstrap.webBeanDiscovery=org.jboss.webbeans.integration."
+"jbossas.WebBeanDiscoveryImpl"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:68
+#, no-c-format
+msgid ""
+"The property can either be specified as a system property, or in a "
+"properties file <literal>META-INF/web-beans-ri.properties</literal>."
+msgstr ""
+
+#. Tag: title
+#: ri-spi.xml:76
+#, no-c-format
+msgid "The contract with the container"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:78
+#, no-c-format
+msgid ""
+"There are a number of requirements that the Web Beans RI places on the "
+"container for correct functioning that fall outside implementation of APIs"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:86
+#, no-c-format
+msgid "Classloader isolation"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:90
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must enable, automatically, or through user "
+"configuation, classloader isolation for each Web Beans application"
+msgstr ""
+
+#. Tag: term
+#: ri-spi.xml:99
+#, no-c-format
+msgid "The <literal>webbeans-ri.jar</literal>"
+msgstr ""
+
+#. Tag: para
+#: ri-spi.xml:103
+#, no-c-format
+msgid ""
+"If you are integrating the Web Beans into an environment that supports "
+"deployment of applications, you must insert the <literal>webbeans-ri.jar</"
+"literal> into the applications isolated classloader. It cannot be loaded "
+"from a shared classloader."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/ri-spi.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/ri.po (from rev 638, doc/trunk/reference/zh-CN/modules/ri.po)
===================================================================
--- doc/trunk/reference/zh-CN/ri.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/ri.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,1003 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: ri.xml:4
+#, no-c-format
+msgid "The Web Beans Reference Implementation"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:6
+#, no-c-format
+msgid ""
+"The Web Beans Reference Implementation is being developed at <ulink url="
+"\"http://seamframework.org/WebBeans\">the Seam project</ulink>. You can "
+"download the latest developer release of Web Beans from the <ulink url="
+"\"http://seamframework.org/Download\">the downloads page</ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:13
+#, no-c-format
+msgid ""
+"The Web Beans RI comes with a two deployable example applications: "
+"<literal>webbeans-numberguess</literal>, a war example, containing only "
+"simple beans, and <literal>webbeans-translator</literal> an ear example, "
+"containing enterprise beans. To run the examples you'll need the following:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:22
+#, no-c-format
+msgid "the latest release of the Web Beans RI,"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:25
+#, no-c-format
+msgid "JBoss AS 5.0.0.GA, and"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:28
+#, no-c-format
+msgid "Ant 1.7.0."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:32
+#, no-c-format
+msgid ""
+"Currently, the Web Beans RI only runs on JBoss Application Server 5. You'll "
+"need to download JBoss AS 5.0.0.GA from <ulink url=\"http://www.jboss.org/"
+"jbossas/downloads/\">jboss.org</ulink>, and unzip it. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:39
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd /Applications\n"
+"$ unzip ~/jboss-5.0.0.GA.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:41
+#, no-c-format
+msgid ""
+"Next, download the Web Beans RI from <ulink url=\"http://seamframework.org/"
+"Download\">seamframework.org</ulink>, and unzip it. For example"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[$ cd ~/\n"
+"$ unzip ~/webbeans-1.0.0.ALPHA1.zip]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:50
+#, no-c-format
+msgid ""
+"Next, we need to tell Web Beans where JBoss is located. Edit <literal>jboss-"
+"as/build.properties</literal> and set the <literal>jboss.home</literal> "
+"property. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:56
+#, no-c-format
+msgid "jboss.home=/Applications/jboss-5.0.0.GA"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:58
+#, no-c-format
+msgid ""
+"As Web Beans is a new piece of software, you need to update JBoss AS to run "
+"the Web Beans RI. Future versions of JBoss AS will include these updates, "
+"and this step won't be necessary."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:65
+#, no-c-format
+msgid ""
+"Currently, two updates are needed. Firstly, a new deployer, "
+"<literal>webbeans.deployer</literal> is added. This adds supports for Web "
+"Bean archives to JBoss AS, and allows the Web Beans RI to query the EJB3 "
+"container and discover which EJBs are installed in your application. "
+"Secondly, an update to JBoss EJB3 is needed."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:74
+#, no-c-format
+msgid ""
+"To install the update, you'll need Ant 1.7.0 installed, and the "
+"<literal>ANT_HOME</literal> environment variable set. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:79
+#, no-c-format
+msgid ""
+"$ unzip apache-ant-1.7.0.zip\n"
+"$ export ANT_HOME=~/apache-ant-1.7.0"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:81
+#, no-c-format
+msgid ""
+"Then, you can install the update. The update script will use Maven to "
+"download the Web Beans and EJB3 automatically."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:86
+#, no-c-format
+msgid ""
+"$ cd webbeans-1.0.0.ALPHA1/jboss-as\n"
+"$ ant update"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:88
+#, no-c-format
+msgid "Now, you're ready to deploy your first example!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:93
+#, no-c-format
+msgid ""
+"The build scripts for the examples offer a number of targets, these are:"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:99
+#, no-c-format
+msgid "<literal>ant restart</literal> - deploy the example in exploded format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:105
+#, no-c-format
+msgid ""
+"<literal>ant explode</literal> - update an exploded example, without "
+"restarting the deployment"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:111
+#, no-c-format
+msgid ""
+"<literal>ant deploy</literal> - deploy the example in compressed jar format"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:116
+#, no-c-format
+msgid "<literal>ant undeploy</literal> - remove the example from the server"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:121
+#, no-c-format
+msgid "<literal>ant clean</literal> - clean the example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:128
+#, no-c-format
+msgid "To deploy the numberguess example:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:132
+#, no-c-format
+msgid ""
+"$ cd examples/numberguess\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:134
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and enjoy hours of fun at <ulink url="
+"\"http://localhost:8080/webbeans-numberguess\"></ulink>!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:139
+#, no-c-format
+msgid ""
+"The Web Beans RI includes a second simple example that will translate your "
+"text into Latin. The numberguess example is a war example, and uses only "
+"simple beans; the translator example is an ear example, and includes "
+"enterprise beans, packaged in an EJB module. To try it out:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:146
+#, no-c-format
+msgid ""
+"$ cd examples/translator\n"
+"ant deploy"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:148
+#, no-c-format
+msgid ""
+"Wait for the application to deploy, and visit <ulink url=\"http://"
+"localhost:8080/webbeans-translator\"></ulink>!"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:154
+#, no-c-format
+msgid "The numberguess example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:156
+#, no-c-format
+msgid ""
+"In the numberguess application you get given 10 attempts to guess a number "
+"between 1 and 100. After each attempt, you will be told whether you are too "
+"high, or too low."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:162
+#, no-c-format
+msgid ""
+"The numberguess example is comprised of a number of Web Beans, configuration "
+"files, and Facelet JSF pages, packaged as a war. Let's start with the "
+"configuration files."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:168
+#, no-c-format
+msgid ""
+"All the configuration files for this example are located in <literal>WEB-INF/"
+"</literal>, which is stored in <literal>WebContent</literal> in the source "
+"tree. First, we have <literal>faces-config.xml</literal>, in which we tell "
+"JSF to use Facelets:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:176
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version='1.0' encoding='UTF-8'?>\n"
+"<faces-config version=\"1.2\"\n"
+"              xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"              xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd\">\n"
+"    \n"
+"    <application>\n"
+"        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>\n"
+"    </application>\n"
+"\n"
+"</faces-config>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:178
+#, no-c-format
+msgid ""
+"There is an empty <literal>web-beans.xml</literal> file, which marks this "
+"application as a Web Beans application."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:183
+#, no-c-format
+msgid "Finally there is <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: section
+#: ri.xml:185
+#, no-c-format
+msgid ""
+"<programlistingco> <areaspec> <area id=\"faces.servlet\" coords=\"12\"/> "
+"<area id=\"faces.servlet.mapping\" coords=\"18\"/> <area id=\"faces.default."
+"suffix\" coords=\"23\"/> <area id=\"session.timeout\" coords=\"28\"/> <area "
+"id=\"webbeans.listener\" coords=\"32\"/> </areaspec> <programlisting><![CDATA"
+"[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"\n"
+"<web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun."
+"com/xml/ns/javaee/web-app_2_5.xsd\">\n"
+"   \n"
+"   <display-name>Web Beans Numbergues example</display-name>\n"
+"\n"
+"   <!-- JSF -->\n"
+"\n"
+"   <servlet>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n"
+"      <load-on-startup>1</load-on-startup>\n"
+"   </servlet>\n"
+"\n"
+"   <servlet-mapping>\n"
+"      <servlet-name>Faces Servlet</servlet-name>\n"
+"      <url-pattern>*.jsf</url-pattern>\n"
+"   </servlet-mapping>\n"
+"   \n"
+"   <context-param>\n"
+"      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>\n"
+"      <param-value>.xhtml</param-value>\n"
+"   </context-param>\n"
+"\n"
+"   <session-config>\n"
+"      <session-timeout>10</session-timeout>\n"
+"   </session-config>\n"
+"   \n"
+"    <listener>\n"
+"       <listener-class>org.jboss.webbeans.servlet.WebBeansListener</listener-"
+"class>\n"
+"    </listener>\n"
+"\n"
+"</web-app>]]></programlisting> <calloutlist> <callout arearefs=\"faces."
+"servlet\"> <para> Enable and load the JSF servlet </para> </callout> "
+"<callout arearefs=\"faces.servlet.mapping\"> <para> Configure requests to "
+"<literal>.jsf</literal> pages to be handled by JSF </para> </callout> "
+"<callout arearefs=\"faces.default.suffix\"> <para> Tell JSF that we will be "
+"giving our source files (facelets) an extension of <literal>.jsf</literal> </"
+"para> </callout> <callout arearefs=\"session.timeout\"> <para> Configure a "
+"session timeout of 10 minutes </para> </callout> <callout arearefs="
+"\"webbeans.listener\"> <para> Configure the Web Beans listener, so that Web "
+"Beans services can be used in the servlet request </para> </callout> </"
+"calloutlist> </programlistingco> <note> <para> The only configuration "
+"required by the Web Beans RI in <literal>web.xml</literal> is to add the Web "
+"Beans listener. </para> <para> Whilst this demo is a JSF demo, you can use "
+"the Web Beans RI with any Servlet based web framework; just configure the "
+"Web Beans listener. </para> </note> <para> Let's take a look at the Facelet "
+"view: </para> <programlistingco> <areaspec> <area id=\"template\" coords=\"8"
+"\"/> <area id=\"messages\" coords=\"12\"/> <area id=\"instructions\" coords="
+"\"19\"/> <area id=\"guess\" coords=\"25\"/> <area id=\"validator\" coords="
+"\"30\"/> <area id=\"submit\" coords=\"33\"/> </areaspec> <programlisting><!"
+"[CDATA[<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" "
+"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
+"<html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    xmlns:s=\"http://jboss.com/products/seam/taglib\">\n"
+"\n"
+"  <ui:composition template=\"template.xhtml\">\n"
+"    <ui:define name=\"content\">\n"
+"       <h1>Guess a number...</h1>\n"
+"       <h:form id=\"NumberGuessMain\">\n"
+"          <div style=\"color: red\">\n"
+"             <h:messages id=\"messages\" globalOnly=\"false\"/>\n"
+"             <h:outputText id=\"Higher\" value=\"Higher!\" rendered=\"#{game."
+"number gt game.guess and game.guess ne 0}\"/>\n"
+"             <h:outputText id=\"Lower\" value=\"Lower!\" rendered=\"#{game."
+"number lt game.guess and game.guess ne 0}\"/>\n"
+"          </div>\n"
+"   \n"
+"          <div>\n"
+"             I'm thinking of a number between #{game.smallest} and #{game."
+"biggest}.\n"
+"             You have #{game.remainingGuesses} guesses.\n"
+"          </div>\n"
+"     \n"
+"          <div>\n"
+"             Your guess: \n"
+"             <h:inputText id=\"inputGuess\" \n"
+"                          value=\"#{game.guess}\" \n"
+"                          required=\"true\" \n"
+"                          size=\"3\" \n"
+"                          disabled=\"#{game.number eq game.guess}\">\n"
+"                <f:validateLongRange maximum=\"#{game.biggest}\" \n"
+"                                     minimum=\"#{game.smallest}\"/>\n"
+"             </h:inputText>\n"
+"            <h:commandButton id=\"GuessButton\"  \n"
+"                             value=\"Guess\" \n"
+"                             action=\"#{game.check}\" \n"
+"                             disabled=\"#{game.number eq game.guess}\"/>\n"
+"          </div>\n"
+"          <div>\n"
+"            <h:commandButton id=\"RestartButton\" value=\"Reset\" action=\"#"
+"{game.reset}\" immediate=\"true\" />\n"
+"          </div>\n"
+"       </h:form>\n"
+"    </ui:define>\n"
+"  </ui:composition>\n"
+"</html>]]></programlisting> <calloutlist> <callout arearefs=\"template\"> "
+"<para> Facelets is a templating language for JSF, here we are wrapping our "
+"page in a template which defines the header. </para> </callout> <callout "
+"arearefs=\"messages\"> <para> There are a number of messages which can be "
+"sent to the user, \"Higher!\", \"Lower!\" and \"Correct!\" </para> </"
+"callout> <callout arearefs=\"instructions\"> <para> As the user guesses, the "
+"range of numbers they can guess gets smaller - this sentance changes to make "
+"sure they know what range to guess in. </para> </callout> <callout arearefs="
+"\"guess\"> <para> This input field is bound to a Web Bean, using the value "
+"expression. </para> </callout> <callout arearefs=\"validator\"> <para> A "
+"range validator is used to make sure the user doesn't accidentally input a "
+"number outside of the range in which they can guess - if the validator "
+"wasn't here, the user might use up a guess on an out of range number. </"
+"para> </callout> <callout arearefs=\"submit\"> <para> And, of course, there "
+"must be a way for the user to send their guess to the server. Here we bind "
+"to an action method on the Web Bean. </para> </callout> </calloutlist> </"
+"programlistingco>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:298
+#, no-c-format
+msgid ""
+"The example exists of 4 classes, the first two of which are binding types. "
+"First, there is the <literal>@Random</literal> binding type, used for "
+"injecting a random number:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:304
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface Random {}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:306
+#, no-c-format
+msgid ""
+"There is also the <literal>@MaxNumber</literal> binding type, used for "
+"injecting the maximum number that can be injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:311
+#, no-c-format
+msgid ""
+"<![CDATA[@Target( { TYPE, METHOD, PARAMETER, FIELD })\n"
+"@Retention(RUNTIME)\n"
+"@Documented\n"
+"@BindingType\n"
+"public @interface MaxNumber {}\n"
+"]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:313
+#, no-c-format
+msgid ""
+"The <literal>Generator</literal> class is responsible for creating the "
+"random number, via a producer method. It also exposes the maximum possible "
+"number via a producer method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:319
+#, no-c-format
+msgid ""
+"<![CDATA[@ApplicationScoped\n"
+"public class Generator {\n"
+"   \n"
+"   private java.util.Random random = new java.util.Random( System."
+"currentTimeMillis() );\n"
+"   \n"
+"   private int maxNumber = 100;\n"
+"   \n"
+"   java.util.Random getRandom()\n"
+"   {\n"
+"      return random;\n"
+"   }\n"
+"   \n"
+"   @Produces @Random int next() { \n"
+"      return getRandom().nextInt(maxNumber); \n"
+"   }\n"
+"   \n"
+"   @Produces @MaxNumber int getMaxNumber()\n"
+"   {\n"
+"      return maxNumber;\n"
+"   }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:321
+#, no-c-format
+msgid ""
+"You'll notice that the <literal>Generator</literal> is application scoped; "
+"therefore we don't get a different random each time."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:326
+#, no-c-format
+msgid ""
+"The final Web Bean in the application is the session scoped <literal>Game</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:331
+#, no-c-format
+msgid ""
+"You'll note that we've used the <literal>@Named</literal> annotation, so "
+"that we can use the bean through EL in the JSF page. Finally, we've used "
+"constructor injection to initialize the game with a random number. And of "
+"course, we need to tell the player when they've won, so we give feedback "
+"with a <literal>FacesMessage</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:339
+#, no-c-format
+msgid ""
+"<![CDATA[package org.jboss.webbeans.examples.numberguess;\n"
+"\n"
+"\n"
+"import javax.annotation.PostConstruct;\n"
+"import javax.faces.application.FacesMessage;\n"
+"import javax.faces.context.FacesContext;\n"
+"import javax.webbeans.AnnotationLiteral;\n"
+"import javax.webbeans.Current;\n"
+"import javax.webbeans.Initializer;\n"
+"import javax.webbeans.Named;\n"
+"import javax.webbeans.SessionScoped;\n"
+"import javax.webbeans.manager.Manager;\n"
+"\n"
+"@Named\n"
+"@SessionScoped\n"
+"public class Game\n"
+"{\n"
+"   private int number;\n"
+"   \n"
+"   private int guess;\n"
+"   private int smallest;\n"
+"   private int biggest;\n"
+"   private int remainingGuesses;\n"
+"   \n"
+"   @Current Manager manager;\n"
+"   \n"
+"   public Game()\n"
+"   {\n"
+"   }\n"
+"   \n"
+"   @Initializer\n"
+"   Game(@MaxNumber int maxNumber)\n"
+"   {      \n"
+"      this.biggest = maxNumber;\n"
+"   }\n"
+"\n"
+"   public int getNumber()\n"
+"   {\n"
+"      return number;\n"
+"   }\n"
+"   \n"
+"   public int getGuess()\n"
+"   {\n"
+"      return guess;\n"
+"   }\n"
+"   \n"
+"   public void setGuess(int guess)\n"
+"   {\n"
+"      this.guess = guess;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getRemainingGuesses()\n"
+"   {\n"
+"      return remainingGuesses;\n"
+"   }\n"
+"   \n"
+"   public String check()\n"
+"   {\n"
+"      if (guess>number)\n"
+"      {\n"
+"         biggest = guess - 1;\n"
+"      }\n"
+"      if (guess<number)\n"
+"      {\n"
+"         smallest = guess + 1;\n"
+"      }\n"
+"      if (guess == number)\n"
+"      {\n"
+"         FacesContext.getCurrentInstance().addMessage(null, new FacesMessage"
+"(\"Correct!\"));\n"
+"      }\n"
+"      remainingGuesses--;\n"
+"      return null;\n"
+"   }\n"
+"   \n"
+"   @PostConstruct\n"
+"   public void reset()\n"
+"   {\n"
+"      this.smallest = 0;\n"
+"      this.guess = 0;\n"
+"      this.remainingGuesses = 10;\n"
+"      this.number = manager.getInstanceByType(Integer.class, new "
+"AnnotationLiteral<Random>(){});\n"
+"   }\n"
+"   \n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: ri.xml:343
+#, no-c-format
+msgid "The translator example"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:345
+#, no-c-format
+msgid ""
+"The translator example will take any sentences you enter, and translate them "
+"to Latin."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:350
+#, no-c-format
+msgid ""
+"The translator example is built as an ear, and contains EJBs and enterprise "
+"beans. As a result, it's structure is more complex than the numberguess "
+"example."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:357
+#, no-c-format
+msgid ""
+"EJB 3.1 and Jave EE 6 allow you to package EJBs in a war, which will make "
+"this structure much simpler!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:363
+#, no-c-format
+msgid ""
+"First, let's take a look at the ear aggregator, which is located in "
+"<literal>webbeans-translator-ear</literal> module. Maven automatically "
+"generates the <literal>application.xml</literal> and <literal>jboss-app.xml</"
+"literal> for us:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:370
+#, no-c-format
+msgid ""
+"<![CDATA[<plugin>\n"
+"   <groupId>org.apache.maven.plugins</groupId>\n"
+"   <artifactId>maven-ear-plugin</artifactId>\n"
+"   <configuration>\n"
+"      <modules>\n"
+"         <webModule>\n"
+"            <groupId>org.jboss.webbeans.examples.translator</groupId>\n"
+"            <artifactId>webbeans-translator-war</artifactId>\n"
+"            <contextRoot>/webbeans-translator</contextRoot>\n"
+"         </webModule>\n"
+"      </modules>\n"
+"      <jboss>\n"
+"         <loader-repository>webbeans.jboss.org:loader=webbeans-translator</"
+"loader-repository>\n"
+"      </jboss>\n"
+"   </configuration>\n"
+"</plugin>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:372
+#, no-c-format
+msgid ""
+"We're doing a couple of things here - firstly we set the context path, which "
+"gives us a nice url (<ulink url=\"http://localhost:8080/webbeans-translator"
+"\">http://localhost:8080/webbeans-translator</ulink>) and we also enable "
+"class loader isolation for JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:380
+#, no-c-format
+msgid ""
+"If you aren't using Maven to generate these files, you would need "
+"<literal>META-INF/jboss-app.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:385
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<!DOCTYPE jboss-app\n"
+"    PUBLIC \"-//JBoss//DTD J2EE Application 4.2//EN\"\n"
+"    \"http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd\">\n"
+"<jboss-app>\n"
+"  <loader-repository>webbeans.jboss.org:loader=webbeans-translator</loader-"
+"repository>\n"
+"</jboss-app>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:387
+#, no-c-format
+msgid "and <literal>META-INF/application.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:391
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://"
+"java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\">\n"
+"  <display-name>webbeans-translator-ear</display-name>\n"
+"  <description>Ear Example for the reference implementation of JSR 299: Web "
+"Beans</description>\n"
+"  \n"
+"  <module>\n"
+"    <web>\n"
+"      <web-uri>webbeans-translator.war</web-uri>\n"
+"      <context-root>/webbeans-translator</context-root>\n"
+"    </web>\n"
+"  </module>\n"
+"  <module>\n"
+"    <ejb>webbeans-translator.jar</ejb>\n"
+"  </module>\n"
+"</application>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:394
+#, no-c-format
+msgid ""
+"Next, lets look at the war. Just as in the numberguess example, we have a "
+"<literal>faces-config.xml</literal> (to enabled Facelets) and a <literal>web."
+"xml</literal> (to enable JSF and attach Web Beans services to the servlet "
+"container) in <literal>WebContent/WEB-INF</literal>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:401
+#, no-c-format
+msgid ""
+"More intersting is the facelet used to translate text. Just as in the "
+"numberguess example we have a template, which surrounds the form (ommitted "
+"here for brevity):"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:407
+#, no-c-format
+msgid ""
+"<![CDATA[<h:form id=\"NumberGuessMain\">\n"
+"            \n"
+"   <table>\n"
+"      <tr align=\"center\" style=\"font-weight: bold\" >\n"
+"         <td>\n"
+"            Your text\n"
+"         </td>\n"
+"         <td>\n"
+"            Translation\n"
+"         </td>\n"
+"      </tr>\n"
+"      <tr>\n"
+"         <td>\n"
+"            <h:inputTextarea id=\"text\" value=\"#{translator.text}\" "
+"required=\"true\" rows=\"5\" cols=\"80\" />\n"
+"         </td>\n"
+"         <td>\n"
+"            <h:outputText value=\"#{translator.translatedText}\" />\n"
+"         </td>\n"
+"      </tr>\n"
+"   </table>\n"
+"   <div>\n"
+"      <h:commandButton id=\"button\" value=\"Translate\" action=\"#"
+"{translator.translate}\"/>\n"
+"   </div>\n"
+"   \n"
+"</h:form>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:409
+#, no-c-format
+msgid ""
+"The user can enter some text in the lefthand textarea, and hit the translate "
+"button to see the result to the right."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:414
+#, no-c-format
+msgid ""
+"Finally, let's look at the ejb module, <literal>webbeans-translator-ejb</"
+"literal>. There are two configuration files in <literal>src/main/resources/"
+"META-INF</literal>, an empty <literal>web-beans.xml</literal>, used to mark "
+"the archive as containing Web Beans, and <literal>ejb-jar.xml</literal>. Web "
+"Beans provides injection and initializtion services for all EJBs, and uses "
+"<literal>ejb-jar.xml</literal> to enable this, you'll need this in any EJB "
+"project which uses Web Beans:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:426
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java."
+"sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\">\n"
+"         \n"
+"   <interceptors>\n"
+"     <interceptor>\n"
+"       <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"     </interceptor>\n"
+"   </interceptors>\n"
+"   \n"
+"   <assembly-descriptor>\n"
+"      <interceptor-binding>\n"
+"         <ejb-name>*</ejb-name>\n"
+"         <interceptor-class>org.jboss.webbeans.ejb.SessionBeanInterceptor</"
+"interceptor-class>\n"
+"      </interceptor-binding>\n"
+"   </assembly-descriptor>\n"
+"   \n"
+"</ejb-jar>]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:428
+#, no-c-format
+msgid ""
+"We've saved the most interesting bit to last, the code! The project has two "
+"simple beans, <literal>SentanceParser</literal> and <literal>TextTranslator</"
+"literal> and two enterprise beans, <literal>TanslatorControllerBean</"
+"literal> and <literal>SentenceTranslator</literal>. You should be getting "
+"quite familiar with what a Web Bean looks like by now, so we'll just "
+"highlight the most interesting bits here."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:438
+#, no-c-format
+msgid ""
+"Both <literal>SentanceParser</literal> and <literal>TextTranslator</literal> "
+"are dependent beans, and <literal>TextTranslator</literal> uses constructor "
+"initialization:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:444
+#, no-c-format
+msgid ""
+"<![CDATA[public class TextTranslator { \n"
+"   private SentenceParser sentenceParser; \n"
+"   private Translator sentenceTranslator; \n"
+"   \n"
+"   @Initializer\n"
+"   TextTranslator(SentenceParser sentenceParser, Translator "
+"sentenceTranslator) \n"
+"   { \n"
+"      this.sentenceParser = sentenceParser; \n"
+"      this.sentenceTranslator = sentenceTranslator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:446
+#, no-c-format
+msgid ""
+"<literal>TextTranslator</literal> is a stateless bean (with a local business "
+"interface), where the magic happens - of course, we couldn't develop a full "
+"translator, but we gave it a good go!"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:452
+#, no-c-format
+msgid ""
+"Finally, there is UI orientated controller, that collects the text from the "
+"user, and dispatches it to the translator. This is a request scoped, named, "
+"stateful session bean, which injects the translator."
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:458
+#, no-c-format
+msgid ""
+"<![CDATA[@Stateful\n"
+"@RequestScoped\n"
+"@Named(\"translator\")\n"
+"public class TranslatorControllerBean implements TranslatorController\n"
+"{\n"
+"   \n"
+"   @Current TextTranslator translator;]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:460
+#, no-c-format
+msgid "The bean also has getters and setters for all the fields on the page."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:464
+#, no-c-format
+msgid "As this is a stateful session bean, we have to have a remove method:"
+msgstr ""
+
+#. Tag: programlisting
+#: ri.xml:468
+#, no-c-format
+msgid ""
+"<![CDATA[   @Remove\n"
+"   public void remove()\n"
+"   {\n"
+"      \n"
+"   }]]>"
+msgstr ""
+
+#. Tag: para
+#: ri.xml:470
+#, no-c-format
+msgid ""
+"The Web Beans manager will call the remove method for you when the bean is "
+"destroyed; in this case at the end of the request."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:476
+#, no-c-format
+msgid ""
+"That concludes our short tour of the Web Beans RI examples. For more on the "
+"RI, or to help out, please visit <ulink url=\"http://www.seamframework.org/"
+"WebBeans/Development\">http://www.seamframework.org/WebBeans/Development</"
+"ulink>."
+msgstr ""
+
+#. Tag: para
+#: ri.xml:482
+#, no-c-format
+msgid ""
+"We need help in all areas - bug fixing, writing new features, writing "
+"examples and translating this reference guide."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/ri.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/scopescontexts.po (from rev 638, doc/trunk/reference/zh-CN/modules/scopescontexts.po)
===================================================================
--- doc/trunk/reference/zh-CN/scopescontexts.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/scopescontexts.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,582 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: scopescontexts.xml:4
+#, no-c-format
+msgid "Scopes and contexts"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen a few examples of <emphasis>scope type annotations</"
+"emphasis>. The scope of a Web Bean determines the lifecycle of instances of "
+"the Web Bean. The scope also determines which clients refer to which "
+"instances of the Web Bean. According to the Web Beans specification, a scope "
+"determines:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:14
+#, no-c-format
+msgid "When a new instance of any Web Bean with that scope is created"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:17
+#, no-c-format
+msgid "When an existing instance of any Web Bean with that scope is destroyed"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:20
+#, no-c-format
+msgid ""
+"Which injected references refer to any instance of a Web Bean with that scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:25
+#, no-c-format
+msgid ""
+"For example, if we have a session scoped Web Bean, <literal>CurrentUser</"
+"literal>, all Web Beans that are called in the context of the same "
+"<literal>HttpSession</literal> will see the same instance of "
+"<literal>CurrentUser</literal>. This instance will be automatically created "
+"the first time a <literal>CurrentUser</literal> is needed in that session, "
+"and automatically destroyed when the session ends."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:32
+#, no-c-format
+msgid "Scope types"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:34
+#, no-c-format
+msgid ""
+"Web Beans features an <emphasis>extensible context model</emphasis>. It is "
+"possible to define new scopes by creating a new scope type annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:37
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target({TYPE, METHOD})\n"
+"@ScopeType\n"
+"public @interface ClusterScoped {}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:39
+#, no-c-format
+msgid ""
+"Of course, that's the easy part of the job. For this scope type to be "
+"useful, we will also need to define a <literal>Context</literal> object that "
+"implements the scope! Implementing a <literal>Context</literal> is usually a "
+"very technical task, intended for framework development only."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:44
+#, no-c-format
+msgid ""
+"We can apply a scope type annotation to a Web Bean implementation class to "
+"specify the scope of the Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[@ClusterScoped\n"
+"public class SecondLevelCache { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:58
+#, no-c-format
+msgid "Usually, you'll use one of Web Beans' built-in scopes."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:63
+#, no-c-format
+msgid "Built-in scopes"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:65
+#, no-c-format
+msgid "Web Beans defines four built-in scopes:"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:69
+#, no-c-format
+msgid "@RequestScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:72
+#, no-c-format
+msgid "@SessionScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:75
+#, no-c-format
+msgid "@ApplicationScoped"
+msgstr ""
+
+#. Tag: literal
+#: scopescontexts.xml:78
+#, no-c-format
+msgid "@ConversationScoped"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:82
+#, no-c-format
+msgid "For a web application that uses Web Beans:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:86
+#, no-c-format
+msgid ""
+"any servlet request has access to active request, session and application "
+"scopes, and, additionally"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:90
+#, no-c-format
+msgid "any JSF request has access to an active conversation scope."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:94
+#, no-c-format
+msgid "The request and application scopes are also active:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:98
+#, no-c-format
+msgid "during invocations of EJB remote methods,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:101
+#, no-c-format
+msgid "during EJB timeouts,"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:104
+#, no-c-format
+msgid "during message delivery to a message-driven bean, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:107
+#, no-c-format
+msgid "during web service invocations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:111
+#, no-c-format
+msgid ""
+"If the application tries to invoke a Web Bean with a scope that does not "
+"have an active context, a <literal>ContextNotActiveException</literal> is "
+"thrown by the Web Bean manager at runtime."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:115
+#, no-c-format
+msgid ""
+"Three of the four built-in scopes should be extremely familiar to every Java "
+"EE developer, so let's not waste time discussing them here. One of the "
+"scopes, however, is new."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:122
+#, no-c-format
+msgid "The conversation scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:124
+#, no-c-format
+msgid ""
+"The Web Beans conversation scope is a bit like the traditional session scope "
+"in that it holds state associated with a user of the system, and spans "
+"multiple requests to the server. However, unlike the session scope, the "
+"conversation scope:"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:130
+#, no-c-format
+msgid "is demarcated explicitly by the application, and"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:133
+#, no-c-format
+msgid ""
+"holds state associated with a particular web browser tab in a JSF "
+"application."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:138
+#, no-c-format
+msgid ""
+"A conversation represents a task, a unit of work from the point of view of "
+"the user. The conversation context holds state associated with what the user "
+"is currently working on. If the user is doing multiple things at the same "
+"time, there are multiple conversations."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:143
+#, no-c-format
+msgid ""
+"The conversation context is active during any JSF request. However, most "
+"conversations are destroyed at the end of the request. If a conversation "
+"should hold state across multiple requests, it must be explicitly promoted "
+"to a <emphasis>long-running conversation</emphasis>."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:149
+#, no-c-format
+msgid "Conversation demarcation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:151
+#, no-c-format
+msgid ""
+"Web Beans provides a built-in Web Bean for controlling the lifecyle of "
+"conversations in a JSF application. This Web Bean may be obtained by "
+"injection:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:154
+#, no-c-format
+msgid "@Current Conversation conversation;"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:156
+#, no-c-format
+msgid ""
+"To promote the conversation associated with the current request to a long-"
+"running conversation, call the <literal>begin()</literal> method from "
+"application code. To schedule the current long-running conversation context "
+"for destruction at the end of the current request, call <literal>end()</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:161
+#, no-c-format
+msgid ""
+"In the following example, a conversation-scoped Web Bean controls the "
+"conversation with which it is associated:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:164
+#, no-c-format
+msgid ""
+"@ConversationScoped @Stateful\n"
+"public class OrderBuilder {\n"
+"\n"
+"    private Order order;\n"
+"    private @Current Conversation conversation;\n"
+"    private @PersistenceContext(type=EXTENDED) EntityManager em;\n"
+"    \n"
+"    @Produces public Order getOrder() {\n"
+"        return order;\n"
+"    }\n"
+"\n"
+"    public Order createOrder() {\n"
+"        order = new Order();\n"
+"        conversation.begin();\n"
+"        return order;\n"
+"    }\n"
+"    \n"
+"    public void addLineItem(Product product, int quantity) {\n"
+"        order.add( new LineItem(product, quantity) );\n"
+"    }\n"
+"\n"
+"    public void saveOrder(Order order) {\n"
+"        em.persist(order);\n"
+"        conversation.end();\n"
+"    }\n"
+"    \n"
+"    @Remove\n"
+"    public void destroy() {}\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:166
+#, no-c-format
+msgid ""
+"This Web Bean is able to control its own lifecycle through use of the "
+"<literal>Conversation</literal> API. But some other Web Beans have a "
+"lifecycle which depends completely upon another object."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:173
+#, no-c-format
+msgid "Conversation propagation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:175
+#, no-c-format
+msgid ""
+"The conversation context automatically propagates with any JSF faces request "
+"(JSF form submission). It does not automatically propagate with non-faces "
+"requests, for example, navigation via a link."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:179
+#, no-c-format
+msgid ""
+"We can force the conversation to propagate with a non-faces request by "
+"including the unique identifier of the conversation as a request parameter. "
+"The Web Beans specification reserves the request parameter named "
+"<literal>cid</literal> for this use. The unique identifier of the "
+"conversation may be obtained from the <literal>Conversation</literal> "
+"object, which has the Web Beans name <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:186
+#, no-c-format
+msgid "Therefore, the following link propagates the conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:188
+#, no-c-format
+msgid ""
+"<![CDATA[<a href=\"/addProduct.jsp?cid=#{conversation.id}\">Add Product</a>]]"
+">"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:190
+#, no-c-format
+msgid ""
+"The Web Bean manager is also required to propagate conversations across any "
+"redirect, even if the conversation is not marked long-running. This makes it "
+"very easy to implement the common POST-then-redirect pattern, without resort "
+"to fragile constructs such as a \"flash\" object. In this case, the Web Bean "
+"manager automatically adds a request parameter to the redirect URL."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:200
+#, no-c-format
+msgid "Conversation timeout"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:202
+#, no-c-format
+msgid ""
+"The Web Bean manager is permitted to destroy a conversation and all state "
+"held in its context at any time in order to preserve resources. A Web Bean "
+"manager implementation will normally do this on the basis of some kind of "
+"timeout&#151;though this is not required by the Web Beans specification. The "
+"timeout is the period of inactivity before the conversation is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:208
+#, no-c-format
+msgid ""
+"The <literal>Conversation</literal> object provides a method to set the "
+"timeout. This is a hint to the Web Bean manager, which is free to ignore the "
+"setting."
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:212
+#, no-c-format
+msgid "conversation.setTimeout(timeoutInMillis);"
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:219
+#, no-c-format
+msgid "The dependent pseudo-scope"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:221
+#, no-c-format
+msgid ""
+"In addition to the four built-in scopes, Web Beans features the so-called "
+"<emphasis>dependent pseudo-scope</emphasis>. This is the default scope for a "
+"Web Bean which does not explicitly declare a scope type."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:225
+#, no-c-format
+msgid ""
+"For example, this Web Bean has the scope type <literal>@Dependent</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:227
+#, no-c-format
+msgid "<![CDATA[public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:229
+#, no-c-format
+msgid ""
+"When an injection point of a Web Bean resolves to a dependent Web Bean, a "
+"new instance of the dependent Web Bean is created every time the first Web "
+"Bean is instantiated. Instances of dependent Web Beans are never shared "
+"between different Web Beans or different injection points. They are "
+"<emphasis>dependent objects</emphasis> of some other Web Bean instance."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:235
+#, no-c-format
+msgid ""
+"Dependent Web Bean instances are destroyed when the instance they depend "
+"upon is destroyed."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:243
+#, no-c-format
+msgid ""
+"Web Beans makes it easy to obtain a dependent instance of a Java class or "
+"EJB bean, even if the class or EJB bean is already declared as a Web Bean "
+"with some other scope type."
+msgstr ""
+
+#. Tag: title
+#: scopescontexts.xml:248
+#, no-c-format
+msgid "The <literal>@New</literal> annotation"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:250
+#, no-c-format
+msgid ""
+"The built-in <literal>@New</literal> binding annotation allows "
+"<emphasis>implicit</emphasis> definition of a dependent Web Bean at an "
+"injection point. Suppose we declare the following injected field:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:254
+#, no-c-format
+msgid "<![CDATA[@New Calculator calculator;]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:256
+#, no-c-format
+msgid ""
+"Then a Web Bean with scope <literal>@Dependent</literal>, binding type "
+"<literal>@New</literal>, API type <literal>Calculator</literal>, "
+"implementation class <literal>Calculator</literal> and deployment type "
+"<literal>@Standard</literal> is implicitly defined."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:261
+#, no-c-format
+msgid ""
+"This is true even if <literal>Calculator</literal> is <emphasis>already</"
+"emphasis> declared with a different scope type, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:264
+#, no-c-format
+msgid ""
+"<![CDATA[@ConversationScoped\n"
+"public class Calculator { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:266
+#, no-c-format
+msgid ""
+"So the following injected attributes each get a different instance of "
+"<literal>Calculator</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: scopescontexts.xml:269
+#, no-c-format
+msgid ""
+"<![CDATA[public class PaymentCalc {\n"
+"\n"
+"    @Current Calculator calculator;\n"
+"    @New Calculator newCalculator;\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:271
+#, no-c-format
+msgid ""
+"The <literal>calculator</literal> field has a conversation-scoped instance "
+"of <literal>Calculator</literal> injected. The <literal>newCalculator</"
+"literal> field has a new instance of <literal>Calculator</literal> injected, "
+"with a lifecycle that is bound to the owning <literal>PaymentCalc</literal>."
+msgstr ""
+
+#. Tag: para
+#: scopescontexts.xml:276
+#, no-c-format
+msgid ""
+"This feature is particularly useful with producer methods, as we'll see in "
+"the next chapter."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/scopescontexts.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/specialization.po (from rev 638, doc/trunk/reference/zh-CN/modules/specialization.po)
===================================================================
--- doc/trunk/reference/zh-CN/specialization.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/specialization.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,291 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 23:18+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: specialization.xml:4
+#, no-c-format
+msgid "Specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:6
+#, no-c-format
+msgid ""
+"We've already seen how the Web Beans dependency injection model lets us "
+"<emphasis>override</emphasis> the implementation of an API at deployment "
+"time. For example, the following enterprise Web Bean provides an "
+"implementation of the API <literal>PaymentProcessor</literal> in production:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:11
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless\n"
+"public class CreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:13
+#, no-c-format
+msgid ""
+"But in our staging environment, we override that implementation of "
+"<literal>PaymentProcessor</literal> with a different Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:16
+#, no-c-format
+msgid ""
+"@CreditCard @Stateless @Staging\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        implements PaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:18
+#, no-c-format
+msgid ""
+"What we've tried to do with <literal>StagingCreditCardPaymentProcessor</"
+"literal> is to completely replace <literal>AsyncPaymentProcessor</literal> "
+"in a particular deployment of the system. In that deployment, the deployment "
+"type <literal>@Staging</literal> would have a higher priority than the "
+"default deployment type <literal>@Production</literal>, and therefore "
+"clients with the following injection point:"
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:24
+#, no-c-format
+msgid "@CreditCard PaymentProcessor ccpp"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:26
+#, no-c-format
+msgid ""
+"Would receive an instance of <literal>StagingCreditCardPaymentProcessor</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:28
+#, no-c-format
+msgid "Unfortunately, there are several traps we can easily fall into:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:32
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not implement all the API types of the Web "
+"Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:36
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean may not declare all the binding types of the "
+"Web Bean that it attempts to override,"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:40
+#, no-c-format
+msgid ""
+"the higher-priority Web Bean might not have the same name as the Web Bean "
+"that it attempts to override, or"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:44
+#, no-c-format
+msgid ""
+"the Web Bean that it attempts to override might declare a producer method, "
+"disposal method or observer method."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:49
+#, no-c-format
+msgid ""
+"In each of these cases, the Web Bean that we tried to override could still "
+"be called at runtime. Therefore, overriding is somewhat prone to developer "
+"error."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:52
+#, no-c-format
+msgid ""
+"Web Beans provides a special feature, called <emphasis>specialization</"
+"emphasis>, that helps the developer avoid these traps. Specialization looks "
+"a little esoteric at first, but it's easy to use in practice, and you'll "
+"really appreciate the extra security it provides."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:58
+#, no-c-format
+msgid "Using specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:60
+#, no-c-format
+msgid ""
+"Specialization is a feature that is specific to simple and enterprise Web "
+"Beans. To make use of specialization, the higher-priority Web Bean must:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:65
+#, no-c-format
+msgid "be a direct subclass of the Web Bean it overrides, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:68
+#, no-c-format
+msgid ""
+"be a simple Web Bean if the Web Bean it overrides is a simple Web Bean or an "
+"enterprise Web Bean if the Web Bean it overrides is an enterprise Web Bean, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:73
+#, no-c-format
+msgid "be annotated <literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: specialization.xml:77
+#, no-c-format
+msgid ""
+"@Stateless @Staging @Specializes\n"
+"public class StagingCreditCardPaymentProcessor \n"
+"        extends CreditCardPaymentProcessor {\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:79
+#, no-c-format
+msgid ""
+"We say that the higher-priority Web Bean <emphasis>specializes</emphasis> "
+"its superclass."
+msgstr ""
+
+#. Tag: title
+#: specialization.xml:85
+#, no-c-format
+msgid "Advantages of specialization"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:87
+#, no-c-format
+msgid "When specialization is used:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:91
+#, no-c-format
+msgid ""
+"the binding types of the superclass are automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:95
+#, no-c-format
+msgid ""
+"the Web Bean name of the superclass is automatically inherited by the Web "
+"Bean annotated <literal>@Specializes</literal>, and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:99
+#, no-c-format
+msgid ""
+"producer methods, disposal methods and observer methods declared by the "
+"superclass are called upon an instance of the Web Bean annotated "
+"<literal>@Specializes</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:105
+#, no-c-format
+msgid ""
+"In our example, the binding type <literal>@CreditCard</literal> of "
+"<literal>CreditCardPaymentProcessor</literal> is inherited by "
+"<literal>StagingCreditCardPaymentProcessor</literal>."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:109
+#, no-c-format
+msgid "Furthermore, the Web Bean manager will validate that:"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:113
+#, no-c-format
+msgid ""
+"all API types of the superclass are API types of the Web Bean annotated "
+"<literal>@Specializes</literal> (all local interfaces of the superclass "
+"enterprise bean are also local interfaces of the subclass),"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:119
+#, no-c-format
+msgid ""
+"the deployment type of the Web Bean annotated <literal>@Specializes</"
+"literal> has a higher precedence than the deployment type of the superclass, "
+"and"
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:124
+#, no-c-format
+msgid ""
+"there is no other enabled Web Bean that also specializes the superclass."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:129
+#, no-c-format
+msgid ""
+"If any of these conditions are violated, the Web Bean manager throws an "
+"exception at initialization time."
+msgstr ""
+
+#. Tag: para
+#: specialization.xml:132
+#, no-c-format
+msgid ""
+"Therefore, we can be certain that the superclass will <emphasis>never</"
+"emphasis> be called in any deployment of the system where the Web Bean "
+"annotated <literal>@Specializes</literal> is deployed and enabled."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/specialization.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/stereotypes.po (from rev 638, doc/trunk/reference/zh-CN/modules/stereotypes.po)
===================================================================
--- doc/trunk/reference/zh-CN/stereotypes.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/stereotypes.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,352 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: stereotypes.xml:4
+#, no-c-format
+msgid "Stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:6
+#, no-c-format
+msgid "According to the Web Beans specification:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:10
+#, no-c-format
+msgid ""
+"In many systems, use of architectural patterns produces a set of recurring "
+"Web Bean roles. A stereotype allows a framework developer to identify such a "
+"role and declare some common metadata for Web Beans with that role in a "
+"central place."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:14
+#, no-c-format
+msgid "A stereotype encapsulates any combination of:"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:18
+#, no-c-format
+msgid "a default deployment type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:21
+#, no-c-format
+msgid "a default scope type,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:24
+#, no-c-format
+msgid "a restriction upon the Web Bean scope,"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:27
+#, no-c-format
+msgid "a requirement that the Web Bean implement or extend a certain type, and"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:30
+#, no-c-format
+msgid "a set of interceptor binding annotations."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:34
+#, no-c-format
+msgid ""
+"A stereotype may also specify that all Web Beans with the stereotype have "
+"defaulted Web Bean names."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:37
+#, no-c-format
+msgid "A Web Bean may declare zero, one or multiple stereotypes."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:41
+#, no-c-format
+msgid ""
+"A stereotype is a Java annotation type. This stereotype identifies action "
+"classes in some MVC framework:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:44
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:46
+#, no-c-format
+msgid "We use the stereotype by applying the annotation to a Web Bean."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:48
+#, no-c-format
+msgid ""
+"<![CDATA[@Action \n"
+"public class LoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:51
+#, no-c-format
+msgid "Default scope and deployment type for a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:53
+#, no-c-format
+msgid ""
+"A stereotype may specify a default scope and/or default deployment type for "
+"Web Beans with that stereotype. For example, if the deployment type "
+"<literal>@WebTier</literal> identifies Web Beans that should only be "
+"deployed when the system executes as a web application, we might specify the "
+"following defaults for action classes:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:59
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:61
+#, no-c-format
+msgid ""
+"Of course, a particular action may still override these defaults if "
+"necessary:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:64
+#, no-c-format
+msgid ""
+"<![CDATA[@Dependent @Mock @Action \n"
+"public class MockLoginAction { ... }]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:66
+#, no-c-format
+msgid ""
+"If we want to force all actions to a particular scope, we can do that too."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:72
+#, no-c-format
+msgid "Restricting scope and type with a stereotype"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:74
+#, no-c-format
+msgid ""
+"Suppose that we wish to prevent actions from declaring certain scopes. Web "
+"Beans lets us explicitly specify the set of allowed scopes for Web Beans "
+"with a certain stereotype. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:78
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(supportedScopes=RequestScoped.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:80
+#, no-c-format
+msgid ""
+"If a particular action class attempts to specify a scope other than the Web "
+"Beans request scope, an exception will be thrown by the Web Bean manager at "
+"initialization time."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:84
+#, no-c-format
+msgid ""
+"We can also force all Web Bean with a certain stereotype to implement an "
+"interface or extend a class:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:87
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@WebTier\n"
+"@Stereotype(requiredTypes=AbstractAction.class)\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:89
+#, no-c-format
+msgid ""
+"If a particular action class does not extend the class "
+"<literal>AbstractAction</literal>, an exception will be thrown by the Web "
+"Bean manager at initialization time."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:96
+#, no-c-format
+msgid "Interceptor bindings for stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:98
+#, no-c-format
+msgid ""
+"A stereotype may specify a set of interceptor bindings to be inherited by "
+"all Web Beans with that stereotype."
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:101
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:103
+#, no-c-format
+msgid ""
+"This helps us get technical concerns even further away from the business "
+"code!"
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:109
+#, no-c-format
+msgid "Name defaulting with stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:111
+#, no-c-format
+msgid ""
+"Finally, we can specify that all Web Beans with a certain stereotype have a "
+"Web Bean name, defaulted by the Web Bean manager. Actions are often "
+"referenced in JSP pages, so they're a perfect use case for this feature. All "
+"we need to do is add an empty <literal>@Named</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:116
+#, no-c-format
+msgid ""
+"<![CDATA[@Retention(RUNTIME)\n"
+"@Target(TYPE)\n"
+"@RequestScoped\n"
+"@Transactional(requiresNew=true)\n"
+"@Secure\n"
+"@Named\n"
+"@WebTier\n"
+"@Stereotype\n"
+"public @interface Action {}]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:118
+#, no-c-format
+msgid ""
+"Now, <literal>LoginAction</literal> will have the name <literal>loginAction</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: stereotypes.xml:124
+#, no-c-format
+msgid "Standard stereotypes"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:126
+#, no-c-format
+msgid ""
+"We've already met two standard stereotypes defined by the Web Beans "
+"specification: <literal>@Interceptor</literal> and <literal>@Decorator</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:129
+#, no-c-format
+msgid "Web Beans defines one further standard stereotype:"
+msgstr ""
+
+#. Tag: programlisting
+#: stereotypes.xml:131
+#, no-c-format
+msgid ""
+"<![CDATA[@Named \n"
+"@RequestScoped \n"
+"@Stereotype \n"
+"@Target({TYPE, METHOD}) \n"
+"@Retention(RUNTIME) \n"
+"public @interface Model {} ]]>"
+msgstr ""
+
+#. Tag: para
+#: stereotypes.xml:133
+#, no-c-format
+msgid ""
+"This stereotype is intended for use with JSF. Instead of using JSF managed "
+"beans, just annotate a Web Bean <literal>@Model</literal>, and use it "
+"directly in your JSF page."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/stereotypes.po
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: doc/trunk/reference/zh-CN/xml.po (from rev 638, doc/trunk/reference/zh-CN/modules/xml.po)
===================================================================
--- doc/trunk/reference/zh-CN/xml.po	                        (rev 0)
+++ doc/trunk/reference/zh-CN/xml.po	2009-01-04 23:44:14 UTC (rev 762)
@@ -0,0 +1,352 @@
+# Language zh-CN translations for master.xml package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: master.xml \n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-12-19 20:26+0000\n"
+"PO-Revision-Date: 2008-12-19 20:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: xml.xml:4
+#, no-c-format
+msgid "Defining Web Beans using XML"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:6
+#, no-c-format
+msgid ""
+"So far, we've seen plenty of examples of Web Beans declared using "
+"annotations. However, there are a couple of occasions when we can't use "
+"annotations to define the Web Bean:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:12
+#, no-c-format
+msgid "when the implementation class comes from some preexisting library, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:15
+#, no-c-format
+msgid ""
+"when there should be multiple Web Beans with the same implementation class."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:20
+#, no-c-format
+msgid "In either of these cases, Web Beans gives us two options:"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:23
+#, no-c-format
+msgid "write a producer method, or"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:24
+#, no-c-format
+msgid "declare the Web Bean using XML."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:27
+#, no-c-format
+msgid ""
+"Many frameworks use XML to provide metadata relating to Java classes. "
+"However, Web Beans uses a very different approach to specifying the names of "
+"Java classes, fields or methods to most other frameworks. Instead of writing "
+"class and member names as the string values of XML elements and attributes, "
+"Web Beans lets you use the class or member name as the name of the XML "
+"element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:33
+#, no-c-format
+msgid ""
+"The advantage of this approach is that you can write an XML schema that "
+"prevents spelling errors in your XML document. It's even possible for a tool "
+"to generate the XML schema automatically from the compiled Java code. Or, an "
+"integrated development environment could perform the same validation without "
+"the need for the explicit intermediate generation step."
+msgstr ""
+
+#. Tag: title
+#: xml.xml:40
+#, no-c-format
+msgid "Declaring Web Bean classes"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:42
+#, no-c-format
+msgid ""
+"For each Java package, Web Beans defines a corresponding XML namespace. The "
+"namespace is formed by prepending <literal>urn:java:</literal> to the Java "
+"package name. For the package <literal>com.mydomain.myapp</literal>, the XML "
+"namespace is <literal>urn:java:com.mydomain.myapp</literal>."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:47
+#, no-c-format
+msgid ""
+"Java types belonging to a package are referred to using an XML element in "
+"the namespace corresponding to the package. The name of the element is the "
+"name of the Java type. Fields and methods of the type are specified by child "
+"elements in the same namespace. If the type is an annotation, members are "
+"specified by attributes of the element."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:53
+#, no-c-format
+msgid ""
+"For example, the element <literal>&lt;util:Date/&gt;</literal> in the "
+"following XML fragment refers to the class <literal>java.util.Date</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:util=\"urn:java:java.util\">\n"
+"\n"
+"    <util:Date/>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:58
+#, no-c-format
+msgid ""
+"And this is all the code we need to declare that <literal>Date</literal> is "
+"a simple Web Bean! An instance of <literal>Date</literal> may now be "
+"injected by any other Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:62
+#, no-c-format
+msgid "<![CDATA[@Current Date date]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:67
+#, no-c-format
+msgid "Declaring Web Bean metadata"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:69
+#, no-c-format
+msgid ""
+"We can declare the scope, deployment type and interceptor binding types "
+"using direct child elements of the Web Bean declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:72
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:ShoppingCart>\n"
+"    <SessionScoped/>\n"
+"    <myfwk:Transactional requiresNew=\"true\"/>\n"
+"    <myfwk:Secure/>\n"
+"</myapp:ShoppingCart>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:74
+#, no-c-format
+msgid "We use exactly the same approach to specify names and binding type:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[<util:Date>\n"
+"    <Named>currentTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <SessionScoped/>\n"
+"    <myapp:Login/>\n"
+"    <Named>loginTime</Named>\n"
+"</util:Date>\n"
+"\n"
+"<util:Date>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:SystemStart/>\n"
+"    <Named>systemStartTime</Named>\n"
+"</util:Date>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:78
+#, no-c-format
+msgid ""
+"Where <literal>@Login</literal> and <literal>@SystemStart</literal> are "
+"binding annotations types."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:81
+#, no-c-format
+msgid ""
+"<![CDATA[@Current Date currentTime;\n"
+"@Login Date loginTime;\n"
+"@SystemStart Date systemStartTime;]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:83
+#, no-c-format
+msgid "As usual, a Web Bean may support multiple binding types:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:85
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:AsynchronousChequePaymentProcessor>\n"
+"    <myapp:PayByCheque/>\n"
+"    <myapp:Asynchronous/>\n"
+"</myapp:AsynchronousChequePaymentProcessor>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:87
+#, no-c-format
+msgid ""
+"Interceptors and decorators are just simple Web Beans, so they may be "
+"declared just like any other simple Web Bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:90
+#, no-c-format
+msgid ""
+"<![CDATA[<myfwk:TransactionInterceptor>\n"
+"    <Interceptor/>\n"
+"    <myfwk:Transactional/>\n"
+"</myfwk:TransactionInterceptor>]]>"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:95
+#, no-c-format
+msgid "Declaring Web Bean members"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:97
+#, no-c-format
+msgid "TODO!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:104
+#, no-c-format
+msgid "Declaring inline Web Beans"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:106
+#, no-c-format
+msgid "Web Beans lets us define a Web Bean at an injection point. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:108
+#, no-c-format
+msgid ""
+"<![CDATA[<myapp:System>\n"
+"    <ApplicationScoped/>\n"
+"    <myapp:admin>\n"
+"        <myapp:Name>\n"
+"            <myapp:firstname>Gavin</myapp:firstname>\n"
+"            <myapp:lastname>King</myapp:lastname>\n"
+"            <myapp:email>gavin at hibernate.org</myapp:email>\n"
+"        </myapp:Name>\n"
+"    </myapp:admin>\n"
+"</myapp:System>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:110
+#, no-c-format
+msgid ""
+"The <literal>&lt;Name&gt;</literal> element declares a simple Web Bean of "
+"scope <literal>@Dependent</literal> and class <literal>Name</literal>, with "
+"a set of initial field values. This Web Bean has a special, container-"
+"generated binding and is therefore injectable only to the specific injection "
+"point at which it is declared."
+msgstr ""
+
+#. Tag: para
+#: xml.xml:116
+#, no-c-format
+msgid ""
+"This simple but powerful feature allows the Web Beans XML format to be used "
+"to specify whole graphs of Java objects. It's not quite a full databinding "
+"solution, but it's close!"
+msgstr ""
+
+#. Tag: title
+#: xml.xml:123
+#, no-c-format
+msgid "Using a schema"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:125
+#, no-c-format
+msgid ""
+"If we want our XML document format to be authored by people who aren't Java "
+"developers, or who don't have access to our code, we need to provide a "
+"schema. There's nothing specific to Web Beans about writing or using the "
+"schema."
+msgstr ""
+
+#. Tag: programlisting
+#: xml.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[<WebBeans xmlns=\"urn:java:javax.webbeans\"\n"
+"          xmlns:myapp=\"urn:java:com.mydomain.myapp\"\n"
+"          xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"          xsi:schemaLocation=\"urn:java:javax.webbeans http://java.sun.com/"
+"jee/web-beans-1.0.xsd\n"
+"                              urn:java:com.mydomain.myapp http://mydomain."
+"com/xsd/myapp-1.2.xsd\">\n"
+"\n"
+"    <myapp:System>\n"
+"        ...\n"
+"    </myapp:System>\n"
+"\n"
+"</WebBeans>]]>"
+msgstr ""
+
+#. Tag: para
+#: xml.xml:132
+#, no-c-format
+msgid ""
+"Writing an XML schema is quite tedious. Therefore, the Web Beans RI project "
+"will provide a tool which automatically generates the XML schema from "
+"compiled Java code."
+msgstr ""


Property changes on: doc/trunk/reference/zh-CN/xml.po
___________________________________________________________________
Name: svn:mergeinfo
   + 




More information about the weld-commits mailing list