From: Vance K. <va...@us...> - 2006-05-15 12:26:13
|
User: vancek Date: 06/05/15 05:26:05 Modified: andromda-ejb3/src/site/xdoc howto16.xml howto17.xml howto15.xml howto20.xml howto14.xml howto13.xml howto18.xml Log: minor fixes updated to use DAO components Revision Changes Path 1.3 +28 -28 cartridges/andromda-ejb3/src/site/xdoc/howto16.xml Index: howto16.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto16.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- howto16.xml 20 Mar 2006 08:51:23 -0000 1.2 +++ howto16.xml 15 May 2006 12:26:04 -0000 1.3 @@ -7,24 +7,18 @@ <body> <section name="Manageable Entities"> <p> - Manageable entities, otherwise known as CRUD facilities, provide a front-end view to managing + Manageable entities provide CRUD facilities and a front-end view to managing entities. The EJB3 cartridge follows the same rules as in <a href="http://galaxy.andromda.org/docs/andromda-cartridges/manageable-entities/index.html"> manageable entities</a>. </p> <p> - The most noticable difference to the current manageable entities feature for the Spring - cartridge is the replacement of data access objects (DAO) with stateless session beans - for each entity which is marked as <![CDATA[<<Manageable>>]]>. This and removal of value objects - are design changes not visible for a user when using the front-end. - </p> - <p> - There is very little you actually need to do. Just make sure you have the above + There is very little you actually need to do. Just make sure you have the <![CDATA[<<Manageable>>]]> stereotype modelled on all entities that require CRUD features and their associated entities and the cartridge will take care of everything else. The following illustrates how we introduce manageable entities into our long-running example. Since manageable entities are driven via a web/console front-end, the example lists files from both the - EJB layer and the Struts web layer. + EJB 3.0 persistence layer and the Struts (using BPM4Struts) web layer. </p> <p> <img src="images/org/andromda/test/16/a/uml.gif"/> @@ -37,30 +31,36 @@ </ul> </p> <p> - The EJB related files are listed below. The <code>ManageableServiceLocator</code> is used by the + The EJB 3.0 related files are listed below. The <code>ManageableServiceLocator</code> is used by the Struts <b>Action</b> classes in much the same way as the <code>ServiceLocator</code> is used by the Service Delegates. Notice how the <code>CarManageableService</code> and - <code>PersonManageableService</code> beans are defined int the ejb-jar and jboss deployment - descriptors. + <code>PersonManageableService</code> beans are defined int the <code>ejb-jar.xml</code> and + <code>jboss.xml</code> deployment descriptors. </p> <p> <ul> - <li class="gen"><a href="src/org/andromda/test/howto16/a/CarEmbeddable.java.txt"><code>CarEmbeddable.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto16/a/Car.java.txt"><code>Car.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/CarType.java.txt"><code>CarType.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/PersonEmbeddable.java.txt"><code>PersonEmbeddable.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto16/a/Person.java.txt"><code>Person.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/ServiceLocator.java.txt"><code>ServiceLocator.java</code></a></li> - <li class="gen"><a class="changed" href="src/org/andromda/test/howto16/a/ManageableServiceLocator.java.txt"><code>ManageableServiceLocator.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalServiceBean.java.txt"><code>RentalServiceBean.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalServiceRemote.java.txt"><code>RentalServiceRemote.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalServiceDelegate.java.txt"><code>RentalServiceDelegate.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto16/a/RentalServiceBeanImpl.java.txt"><code>RentalServiceBeanImpl.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalServiceException.java.txt"><code>RentalServiceException.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalException.java.txt"><code>RentalException.java</code></a></li> - <li class="gen"><a class="changed" href="src/org/andromda/test/howto16/a/ejb-jar.xml.txt"><code>ejb-jar.xml</code></a></li> - <li class="gen"><a class="changed" href="src/org/andromda/test/howto16/a/jboss.xml.txt"><code>jboss.xml</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto16/a/persistence.xml.txt"><code>persistence.xml</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/CarEmbeddable.java"><code>CarEmbeddable.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto16/a/Car.java"><code>Car.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/CarType.java"><code>CarType.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/CarDao.java"><code>CarDao.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/CarDaoBase.java"><code>CarDaoBase.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto16/a/CarDaoImpl.java"><code>CarDaoImpl.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/CarDaoException.java"><code>CarDaoException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/Person.java"><code>Person.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/PersonDao.java"><code>PersonDao.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/PersonDaoBase.java"><code>PersonDaoBase.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto16/a/PersonDaoImpl.java"><code>PersonDaoImpl.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/PersonDaoException.java"><code>PersonDaoException.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto16/a/RentalServiceBean.java"><code>RentalServiceBean.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalServiceRemote.java"><code>RentalServiceRemote.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalServiceDelegate.java"><code>RentalServiceDelegate.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalServiceBase.java"><code>RentalServiceBase.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalServiceException.java"><code>RentalServiceException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/RentalException.java"><code>RentalException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/ServiceLocator.java"><code>ServiceLocator.java</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto16/a/ManageableServiceLocator.java"><code>ManageableServiceLocator.java</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto16/a/ejb-jar.xml"><code>ejb-jar.xml</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto16/a/jboss.xml"><code>jboss.xml</code></a></li> </ul> </p> <p> 1.3 +86 -57 cartridges/andromda-ejb3/src/site/xdoc/howto17.xml Index: howto17.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto17.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- howto17.xml 17 Apr 2006 02:06:24 -0000 1.2 +++ howto17.xml 15 May 2006 12:26:04 -0000 1.3 @@ -37,7 +37,7 @@ <ul> <li>HTTP session state can be cached and accessed across all nodes.</li> <li>Caching includes stateful session beans.</li> - <li>Can cache <i>transient</i> properties across nodes</li> + <li>Can cache <i>transient</i> properties across nodes.</li> </ul> </li> </ul> @@ -58,43 +58,51 @@ </p> <p> <ul> - <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/CarEmbeddable.java.txt"><code>CarEmbeddable.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto17/a/Car.java.txt"><code>Car.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/CarType.java.txt"><code>CarType.java</code></a></li> - <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/PersonEmbeddable.java.txt"><code>PersonEmbeddable.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto17/a/Person.java.txt"><code>Person.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/ServiceLocator.java.txt"><code>ServiceLocator.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalServiceBean.java.txt"><code>RentalServiceBean.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalServiceRemote.java.txt"><code>RentalServiceRemote.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalServiceDelegate.java.txt"><code>RentalServiceDelegate.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto17/a/RentalServiceBeanImpl.java.txt"><code>RentalServiceBeanImpl.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalServiceException.java.txt"><code>RentalServiceException.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalException.java.txt"><code>RentalException.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/ejb-jar.xml.txt"><code>ejb-jar.xml</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/jboss.xml.txt"><code>jboss.xml</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto17/a/persistence.xml.txt"><code>persistence.xml</code></a></li> - <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/ejb3-entity-cache-service.xml.txt"><code>ejb3-entity-cache-service.xml</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/CarEmbeddable.java"><code>CarEmbeddable.java</code></a></li> + <li class="impl"><a class="changed" href="src/org/andromda/test/howto17/a/Car.java"><code>Car.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/CarType.java"><code>CarType.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/CarDao.java"><code>CarDao.java</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/CarDaoBase.java"><code>CarDaoBase.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto17/a/CarDaoImpl.java"><code>CarDaoImpl.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/CarDaoException.java"><code>CarDaoException.java</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/Person.java"><code>Person.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/PersonDao.java"><code>PersonDao.java</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/PersonDaoBase.java"><code>PersonDaoBase.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto17/a/PersonDaoImpl.java"><code>PersonDaoImpl.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/PersonDaoException.java"><code>PersonDaoException.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto17/a/RentalServiceBean.java"><code>RentalServiceBean.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalServiceRemote.java"><code>RentalServiceRemote.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalServiceDelegate.java"><code>RentalServiceDelegate.java</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/RentalServiceBase.java"><code>RentalServiceBase.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalServiceException.java"><code>RentalServiceException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/RentalException.java"><code>RentalException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/ejb-jar.xml"><code>ejb-jar.xml</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/jboss.xml"><code>jboss.xml</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto17/a/persistence.xml"><code>persistence.xml</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/ejb3-entity-cache-service.xml"><code>ejb3-entity-cache-service.xml</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto17/a/andromda.xml"><code>andromda.xml</code></a></li> </ul> </p> + <p> + The following sections will show you how to enable and configure caching and clustering. + </p> <a name="Cache_Config"/> <subsection name="Cache Configuration"> <p> - The cartridge allows you to configure a few caching properties through namespace properties - in the andromda.xml descriptor. As a minimum, make sure the + The EJB3 cartridge allows you to configure caching through namespace properties + via your application <code>andromda.xml</code> descriptor. Make sure the <code>hibernateCacheProvider</code> and <code>hibernateTreecacheMbeanObject</code> properties - are defined to use inbuilt JBoss Cache with JBoss. + are defined to use the internal <i>JBoss Cache</i> with JBoss. <source language="xml"><![CDATA[ <namespace name="ejb3"> <properties> ... <property name="hibernateCacheProvider">org.jboss.ejb3.entity.TreeCacheProviderHook</property> <property name="hibernateTreecacheMbeanObject">jboss.cache:service=EJB3EntityTreeCache</property> - <!-- uncomment to enable default entity cache settings + <!-- uncomment to enable default entity cache settings --> <property name="hibernateEntityCache">TRANSACTIONAL</property> - --> - <!-- uncomment to enable default association caching configuration + <!-- uncomment to enable default association caching configuration --> <property name="hibernateAssociationCache">TRANSACTIONAL</property> - --> ... </properties> </namespace> @@ -103,7 +111,7 @@ define the default cache settings if you choose to enable entity and association caching. </p> <p> - Your <code>persistence.xml</code> descriptor will look like: + Your generated <code>persistence.xml</code> descriptor will look something like: <source language="xml"><![CDATA[ <?xml version="1.0" encoding="UTF-8"?> <!-- @@ -111,8 +119,8 @@ Generated by: persistence.xml.vsl in andromda-ejb3-cartridge. --> <persistence> - <persistence-unit name="howtomodel2"> - <jta-data-source>java:/jdbc/howtomodel2</jta-data-source> + <persistence-unit name="howtomodelcaching"> + <jta-data-source>java:/jdbc/howtomodelcaching</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/> @@ -143,23 +151,24 @@ </properties> </namespace> ]]></source> + This property must be enabled before all other caching properties are fine-tuned. </p> <p> The <code>useDefaultCacheRegion</code> property allows you to specify whether you want all - entities use the default cache region specified in <code>ejb3-entity-cache-service.xml</code>. - By default, this is set to <code>false</code>. If you set to <code>true</code>, the user specified - cache regions for entities will not be defined. + entities to use the default cache region specified in <code>ejb3-entity-cache-service.xml</code> + and the cache region set on corresponding finder queries. + By default, this is set to <code>false</code>. If you set it to <code>true</code>, + the user specified cache regions for entities will not be defined. </p> <p> - If you enable the default entity cache strategy in your andromda.xml descriptor, by enabling - <code>hibernateEntityCache</code>, then the cache strategy for all entities will be assigned - using its specified value. To override this default value, you can model the + If you enable the default entity caching in your andromda.xml descriptor (by enabling + <code>hibernateEntityCache</code>), then caching will be enabled for all entities. + To override this default value, you can model the <code>@andromda.persistence.entity.cache</code> tagged value on individual entities. </p> <p> Once you have enabled entity caching, you will notice the - <code>@org.hibernate.annotations.Cache</code> annotation at the class level in all entity - mapped superclasses. + <code>@org.hibernate.annotations.Cache</code> annotation at the class level in all entities. </p> <p> The corresponding entity cache region is defined in the <code>ejb3-entity-cache-service.xml</code> @@ -191,7 +200,8 @@ <subsection name="Association Cache"> <p> To enable entity association relationship caching, you enable the - <code>hibernateEnableAssociationsCache</code> ejb3 namespace property in your andromda.xml like so: + <code>hibernateEnableAssociationsCache</code> ejb3 namespace property in your + <code>andromda.xml</code> like so: <source language="xml"><![CDATA[ <namespace name="ejb3"> <properties> @@ -205,9 +215,9 @@ You must have <code>hibernateEnableCache</code> enabled. </p> <p> - If you enable the default association cache strategy in your andromda.xml descriptor, by enabling - <code>hibernateAssociationCache</code>, then the cache strategy for all collection associationas - will be assigned using its specified value. To override this default value, you can model the + If you enable the default association cache strategy in your <code>andromda.xml</code> descriptor, + (by enabling <code>hibernateAssociationCache</code>), then all collection association caching + will be enabled by default. To override this default value, you can model the <code>@andromda.persistence.association.cache</code> tagged value on individual target association ends. </p> @@ -220,8 +230,8 @@ <a name="Query_Cache"/> <subsection name="Query Cache"> <p> - To enable entity query caching, you enable the <code>hibernateUseQueryCache</code> - ejb3 namespace property in your andromda.xml like so: + To enable entity query caching for all queries, you enable the <code>hibernateUseQueryCache</code> + ejb3 namespace property in your <code>andromda.xml</code> like so: <source language="xml"><![CDATA[ <namespace name="ejb3"> <properties> @@ -233,15 +243,22 @@ </properties> </namespace> ]]></source> - You must have <code>hibernateEnableCache</code> enabled. You then need to enable caching - for each finder method using the <code>@andromda.ejb.query.useCache</code> tagged value. + You must have <code>hibernateEnableCache</code> enabled. This will enable the query cache + for all queries, including your generic query, the <code>findAll</code> query. + </p> + <p> + In many circumstance, you shouldn't enable query cache for all queries (using the + <code>hibernateUseQueryCache</code> property) but enable caching + for required queries only. You can enable caching for individual finder method using + the <code>@andromda.ejb.query.useCache</code> tagged value which is modelled on the + finder method. </p> <p> The <code>useDefaultCacheRegion</code> property allows you to specify whether you want all queries to use the default cache region specified in <code>ejb3-entity-cache-service.xml</code>. - By default, this is set to <code>false</code>. If you set to <code>true</code>, the user specified - cache regions will not be defined and the hint on queries to set the cache region will not be - assigned. + By default, this is set to <code>false</code>. If you set it to <code>true</code>, + the user specified cache regions will not be defined and the hint on queries to + set the cache region will not be assigned. </p> <p> The cartridge will look for at least one query which is marked for caching. If it finds one @@ -268,15 +285,26 @@ </p> <p> In the above example, the <code>Car</code> entity has the <code>findByType</code> finder marked - as cacheable. When generating the Car mapped superclass <code>findByType</code> finder method, + as cacheable. When generating the<code>findByType</code> DAO method in + <code>CarDaoBase.java</code>, the cartridge will set the <code>org.hibernate.cacheRegion</code> hint automatically like so: <source><![CDATA[ - public static java.util.List<Car> findByType(javax.persistence.EntityManager em, org.andromda.howto2.rental.CarType type) +public java.util.List findByType(final int transform, final org.andromda.howto2.rental.CarType type) + throws org.andromda.howto2.rental.CarDaoException { - javax.persistence.Query query = em.createQuery("FROM Car AS car WHERE car.type = :type"); - query.setParameter("type", type.name()); - query.setHint("org.hibernate.cacheRegion", "/org/andromda/howto2/rental/Car_findByType"); - return query.getResultList(); + try + { + javax.persistence.Query queryObject = emanager.createNamedQuery("Car.findByType"); + queryObject.setParameter("type", type.name()); + queryObject.setHint("org.hibernate.cacheRegion", "/org/andromda/howto2/rental/Car_findByType"); + java.util.List results = queryObject.getResultList(); + transformEntities(transform, results); + return results; + } + catch (Exception ex) + { + throw new org.andromda.howto2.rental.CarDaoException(ex); + } } ]]></source> </p> @@ -285,9 +313,9 @@ configuration service file: <source language="xml"><![CDATA[ .... - <!-- The Car findByType query cache --> - <region name="/org/andromda/howto2/rental/Car_findByType"> - <attribute name="maxNodes">1000</attribute> + <!-- The Car entity cache --> + <region name="/org/andromda/howto2/rental/Car"> + <attribute name="maxNodes">10000</attribute> <attribute name="timeToLiveSeconds">5000</attribute> </region> .... @@ -315,13 +343,14 @@ </namespace> ]]></source> This will automatically add the <code>@org.jboss.annotation.ejb.Clustered</code> JBoss - annotation to all session beans which will enable load-balancing and failover of all requests. + annotation to all session beans which will enable load-balancing and failover of all requests + (if you have configured clustering on the container). The default load balance policy <code>org.jboss.ha.framework.interfaces.RandomRobin</code> is used. </p> <p> There is nothing more you need to do for stateless session beans. For stateful session beans, - you must make sure that the JBoss Cache session state replication service is deployed. + you must make sure that the <i>JBoss Cache</i> session state replication service is deployed. Simply make sure that <code>ejb3-clustered-sfsbcache-service.xml</code> exists in your JBoss deploy directory. </p> 1.2 +9 -3 cartridges/andromda-ejb3/src/site/xdoc/howto15.xml Index: howto15.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto15.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- howto15.xml 9 Mar 2006 06:37:14 -0000 1.1 +++ howto15.xml 15 May 2006 12:26:04 -0000 1.2 @@ -7,8 +7,9 @@ <body> <section name="Transactions"> <p> - Defining transactions within your beans is done via annotations. This takes the complexity - out of the deployment descriptor and makes following transactions very easy. + Defining transactions within or accross beans is done via annotations. This takes the complexity + out of the deployment descriptor however it's just as easy to define transaction boundaries + from the descriptor. </p> <a name="Transaction_Type"/> <subsection name="Transaction Type"> @@ -21,7 +22,12 @@ <p> The EJB 3.0 spec defines that the transaction management type cannot be specified for EJB 3.0 entity POJOs. These entities execute within the transactional context of the caller, which is - the session bean. + the DAO or session bean. + </p> + <p> + The DAO base class also specifies the transaction attribute as <code>REQUIRED</code>. Remember + your business logic resides in the session facade using the DAO API interface; hence you control + your transactions from your session beans. </p> <p> Your <code>TransactionAttributeType</code> options are: 1.2 +9 -0 cartridges/andromda-ejb3/src/site/xdoc/howto20.xml Index: howto20.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto20.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- howto20.xml 5 May 2006 05:32:32 -0000 1.1 +++ howto20.xml 15 May 2006 12:26:04 -0000 1.2 @@ -49,6 +49,15 @@ be supported by modification to the <code>EJB3EmbeddedValueFacade</code> and corresponding <code>EmbeddedValue.vsl</code> template. </p> + <a name="Helpful_Hints"/> + <subsection name="Helpful Hints"> + <p> + Even though the EJB3 cartridge generates an implementation source file extending the + auto generated embedded value object, the implementation is currently not used. Future + version of the EJB3 cartridge will make use of the persistence ORM mapping file and will + fix this issue. + </p> + </subsection> </section> </body> </document> 1.4 +2 -2 cartridges/andromda-ejb3/src/site/xdoc/howto14.xml Index: howto14.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto14.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -w -r1.3 -r1.4 --- howto14.xml 13 May 2006 02:43:20 -0000 1.3 +++ howto14.xml 15 May 2006 12:26:04 -0000 1.4 @@ -8,7 +8,7 @@ <section name="Lifecycle Callbacks"> <p> There are a couple of different ways to define the lifecycle callbacks using the - EJB3 cartridge. This howto will provide the necessary details on how you can implement + EJB3 cartridge. This howto will provide the necessary information on how you can implement the callback handlers for entity, session and message-driven beans. </p> <p> @@ -217,7 +217,7 @@ </section> <section name="Next"> <p> - For a guide on how to utilise transactions in this cartridge, click <a href="howto14.html">here</a>. + For a guide on how to utilise transactions in this cartridge, click <a href="howto15.html">here</a>. </p> </section> </body> 1.3 +28 -22 cartridges/andromda-ejb3/src/site/xdoc/howto13.xml Index: howto13.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto13.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- howto13.xml 17 Mar 2006 09:33:58 -0000 1.2 +++ howto13.xml 15 May 2006 12:26:04 -0000 1.3 @@ -8,7 +8,7 @@ <section name="Interceptor"> <p> Adding custom written interceptors is very easy using the EJB3 cartridge. The following sections - will provide you with enough detail to add your custom made interceptors to session and + will provide you with enough detail to add your custom interceptors to session and message-driven beans. It discusses default, class and method interceptors. </p> <p> @@ -18,7 +18,8 @@ <p> The following example shows how to model a default interceptor as well as 2 class level interceptors for the <code>RentalService</code> bean. Method level interceptor are - modelled in the same fashion, but a dependency is drawn from the session bean method. + modelled in the same fashion, but a dependency is drawn from the session bean method rather than + the actual session bean class. </p> <p> <img src="images/org/andromda/test/13/a/uml.gif"/> @@ -32,24 +33,29 @@ </p> <p> <ul> - <li class="gen"><a href="src/org/andromda/test/howto13/a/CarEmbeddable.java.txt"><code>CarEmbeddable.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto13/a/Car.java.txt"><code>Car.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/CarType.java.txt"><code>CarType.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/PersonEmbeddable.java.txt"><code>PersonEmbeddable.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto13/a/Person.java.txt"><code>Person.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/ServiceLocator.java.txt"><code>ServiceLocator.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalServiceBean.java.txt"><code>RentalServiceBean.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalServiceRemote.java.txt"><code>RentalServiceRemote.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalServiceDelegate.java.txt"><code>RentalServiceDelegate.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto13/a/RentalServiceBeanImpl.java.txt"><code>RentalServiceBeanImpl.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalServiceException.java.txt"><code>RentalServiceException.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalException.java.txt"><code>RentalException.java</code></a></li> - <li class="gen"><a class="changed" href="src/org/andromda/test/howto13/a/ejb-jar.xml.txt"><code>ejb-jar.xml</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/jboss.xml.txt"><code>jboss.xml</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto13/a/persistence.xml.txt"><code>persistence.xml</code></a></li> - <li class="impl"><a class="changed" href="src/org/andromda/test/howto13/a/DefaultInterceptor.java.txt"><code>DefaultInterceptor.java</code></a></li> - <li class="impl"><a class="changed" href="src/org/andromda/test/howto13/a/LogInterceptor.java.txt"><code>LogInterceptor.java</code></a></li> - <li class="impl"><a class="changed" href="src/org/andromda/test/howto13/a/AdminCheckerInterceptor.java.txt"><code>AdminCheckerInterceptor.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/CarEmbeddable.java"><code>CarEmbeddable.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto13/a/Car.java"><code>Car.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/CarType.java"><code>CarType.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/CarDao.java"><code>CarDao.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/CarDaoBase.java"><code>CarDaoBase.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto13/a/CarDaoImpl.java"><code>CarDaoImpl.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/CarDaoException.java"><code>CarDaoException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/Person.java"><code>Person.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/PersonDao.java"><code>PersonDao.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/PersonDaoBase.java"><code>PersonDaoBase.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto13/a/PersonDaoImpl.java"><code>PersonDaoImpl.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/PersonDaoException.java"><code>PersonDaoException.java</code></a></li> + <li class="impl"><a href="src/org/andromda/test/howto13/a/RentalServiceBean.java"><code>RentalServiceBean.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalServiceRemote.java"><code>RentalServiceRemote.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalServiceDelegate.java"><code>RentalServiceDelegate.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalServiceBase.java"><code>RentalServiceBase.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalServiceException.java"><code>RentalServiceException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/RentalException.java"><code>RentalException.java</code></a></li> + <li class="gen"><a class="changed" href="src/org/andromda/test/howto13/a/ejb-jar.xml"><code>ejb-jar.xml</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto13/a/jboss.xml"><code>jboss.xml</code></a></li> + <li class="impl"><a class="changed" href="src/org/andromda/test/howto13/a/DefaultInterceptor.java"><code>DefaultInterceptor.java</code></a></li> + <li class="impl"><a class="changed" href="src/org/andromda/test/howto13/a/LogInterceptor.java"><code>LogInterceptor.java</code></a></li> + <li class="impl"><a class="changed" href="src/org/andromda/test/howto13/a/AdminCheckerInterceptor.java"><code>AdminCheckerInterceptor.java</code></a></li> </ul> </p> <a name="Default_Interceptors"/> @@ -62,7 +68,7 @@ <p> To define a default interceptor for your deployment, model the standard <![CDATA[<<Interceptor>>]]> stereotype on a class and specify the - <code>@andromda.service.interceptor.default</code> tagged value as true. + <code>@andromda.service.interceptor.default</code> tagged value as true on this class. Since this interceptor is invoked for all business methods of all beans, you do not need to model any dependencies on it. The cartridge will generate the class with the necessary interceptor operation and @@ -99,7 +105,7 @@ <p> Method level interceptors are very much similar to class level interceptors, but they are bound to a specific business method within a bean. This means that they are only invoked - when the modelled business method of a bean are invoked. + when the modelled business methods of the bean are invoked. </p> <p> To define a method level interceptor, model the <![CDATA[<<Interceptor>>]]> stereotype on 1.3 +48 -28 cartridges/andromda-ejb3/src/site/xdoc/howto18.xml Index: howto18.xml =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/site/xdoc/howto18.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- howto18.xml 5 May 2006 05:32:49 -0000 1.2 +++ howto18.xml 15 May 2006 12:26:04 -0000 1.3 @@ -40,12 +40,15 @@ allows you to modify the construction of the URL for the webservice endpoints. </p> <p> - The following is a very simple example exposing all session bean operations. This is achieved - by modelling the <![CDATA[<<WebService>>]]> stereotype on the <code>TicketService</code> - session bean. Modelling this is very similar to the WebService cartridge process. The + The following is a very simple example of a session bean exposing all it's operations and + another session bean exposing only 1 of it's operations. This is achieved + by modelling the <![CDATA[<<WebService>>]]> stereotype on the <code>UserService</code> + session bean and <![CDATA[<<WebServiceOperation>>]]> on the <code>addUser</code> + operation in <code>UserEndPointService</code> session bean. + Modelling this is similar to the WebService cartridge process. The EJB3 cartridge introduces a few extra tagged values. The example below models the <code>@andromda.webservice.operation.result.name</code> tagged value on the - <code>processMinimal</code> operation. + <code>addUser</code> operation in <code>UserService</code>. </p> <p> <img src="images/org/andromda/test/18/a/uml.gif"/> @@ -59,25 +62,32 @@ </p> <p> <ul> - <li class="gen"><a href="src/org/andromda/test/howto18/a/TicketEmbeddable.java"><code>TicketEmbeddable.java</code></a></li> - <li class="impl"><a href="src/org/andromda/test/howto18/a/Ticket.java"><code>Ticket.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/ServiceLocator.java"><code>ServiceLocator.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/TicketServiceBase.java"><code>TicketServiceBase.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/TicketServiceRemote.java"><code>TicketServiceRemote.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/TicketServiceDelegate.java"><code>TicketServiceDelegate.java</code></a></li> - <li class="impl"><a class="changed" href="src/org/andromda/test/howto18/a/TicketServiceBean.java"><code>TicketServiceBean.java</code></a></li> - <li class="gen"><a class="changed" href="src/org/andromda/test/howto18/a/TicketServiceWSInterface.java"><code>TicketServiceWSInterface.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/TicketServiceException.java"><code>TicketServiceException.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/TicketException.java"><code>TicketException.java</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/ejb-jar.xml"><code>ejb-jar.xml</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/jboss.xml"><code>jboss.xml</code></a></li> - <li class="gen"><a href="src/org/andromda/test/howto18/a/persistence.xml"><code>persistence.xml</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/User.java"><code>User.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserDao.java"><code>UserDao.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserDaoBase.java"><code>UserDaoBase.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserDaoImpl.java"><code>UserDaoImpl.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserDaoException.java"><code>UserDaoException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserEndPointServiceBase.java"><code>UserEndPointServiceBase.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserEndPointServiceBean.java"><code>UserEndPointServiceBean.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserEndPointServiceRemote.java"><code>UserEndPointServiceRemote.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserEndPointServiceDelegate.java"><code>UserEndPointServiceDelegate.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserEndPointServiceException.java"><code>UserEndPointServiceException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserEndPointServiceWSInterface.java"><code>UserEndPointServiceWSInterface.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserServiceBase.java"><code>UserServiceBase.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserServiceBean.java"><code>UserServiceBean.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserServiceRemote.java"><code>UserServiceRemote.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserServiceDelegate.java"><code>UserServiceDelegate.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserServiceException.java"><code>UserServiceException.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserServiceWSInterface.java"><code>UserServiceWSInterface.java</code></a></li> + <li class="gen"><a href="src/org/andromda/test/howto18/a/UserException.java"><code>UserException.java</code></a></li> </ul> </p> <p> - The <code>TicketServiceBean</code> implementation contains the <code>@WebService</code> + The <code>UserServiceBean</code> and <code>UserEndPointServiceBean</code> implementations + contain the <code>@WebService</code> annotation defining the <code>endpointInterface</code> property that references the - web service interface <code>TicketServiceWSInterface</code> containing all other annotations. + web service interface <code>UserServiceWSInterface</code> and <code>UserEndPointServiceWSInterface</code> + correspondingly, containing all other annotations. Default values are provided via namespace properties, but you can override them using tagged values. </p> @@ -94,7 +104,7 @@ the location specified below. <source language="xml"><![CDATA[ <configuration xmlns="http://www.jboss.org/jbossws-tools"> - <wsdlToJava wsdlLocation="http://localhost:8080/ejb3demo-ws/services/TicketService?wsdl"> + <wsdlToJava wsdlLocation="http://localhost:8080/howtomodel-ws/services/UserService?wsdl"> <mapping fileName="jaxrpc-mapping.xml"/> </wsdlToJava> </configuration> @@ -106,7 +116,7 @@ </p> <p> <code> - jboss-inst/bin/wstools.sh -cp {path to TicketService.class} -config jbosswsConfig.xml + jboss-inst/bin/wstools.sh -cp ".;./core/target/src" -config jbosswsConfig.xml </code> </p> <p> @@ -115,15 +125,15 @@ <p> The client can invoke exposed operations like so. <source><![CDATA[ -URL wsdlURL = new URL("http://localhost:8080/ejb3demo3-ws/services/TicketService?wsdl"); +URL wsdlURL = new URL("http://localhost:8080/howtomodel-ws/services/UserService?wsdl"); -ServiceFactoryImpl factory = new ServiceFactoryImpl(); +org.jboss.ws.jaxrpc.ServiceFactoryImpl factory = new org.jboss.ws.jaxrpc.ServiceFactoryImpl(); File mappingFile = new File("jaxrpc-mapping.xml"); Service service = factory.createService(wsdlURL, null, mappingFile.toURL()); -TicketServiceWSInterface port = (TicketServiceWSInterface)service.getPort(TicketServiceWSInterface.class); -port.process(1, "000", "Test"); +UserServiceWSInterface port = (UserServiceWSInterface)service.getPort(UserServiceWSInterface.class); +port.process(user"); ]]></source> </p> </subsection> @@ -134,14 +144,24 @@ bean operations as web service endpoints. </p> <p> - In the example above, <code>TicketServiceBean</code> is generated once only since it contains + In the example above, <code>UserServiceBean</code> is generated once only since it contains the session bean implementation. Therefore, the <code>@WebService</code> annotation is enabled on generation of the class. To stop exposing this bean, you must manually comment out the - following: + following in <code>UserServiceBean.java</code>: <source><![CDATA[ -@javax.jws.WebService(endpointInterface = "org.andromda.demo3.ejb3.test.TicketServiceWSInterface") +@javax.jws.WebService(endpointInterface = "org.andromda.test.howto18.a.UserServiceWSInterface") ]]></source> </p> + <p> + Currently, the following tags are not available in the WebService profile; + therefore, you must add them to your model if you wish to use them. + <ul> + <li><a href="profile.html#@andromda.webservice.parameter.style">@andromda.webservice.parameter.style</a></li> + <li><a href="profile.html#@andromda.webservice.parameter.oneway">@andromda.webservice.operation.oneway</a></li> + <li><a href="profile.html#@andromda.webservice.parameter.name">@andromda.webservice.operation.name</a></li> + <li><a href="profile.html#@andromda.webservice.parameter.result.name">@andromda.webservice.operation.result.name</a></li> + </ul> + </p> </subsection> </section> <section name="Next"> |