on 05-05-2009 3:59 PM
Hi all,
I'm going through the employee example from the book "Java programming in SAP web application server". I have followed the instrucstions to the letter and have triple checked that i did not miss anything.
During the part "Defining Transaction Control", when i go to the "Assembly" tab, choose "Container-transaction" and click add; i get the following error message.
You have to create and reference EJBs first. Afterwards you can choose them here.
Newly created EJBs are referenced automatically in the ejb-jar.xml, in special cases you might have to reference them manually.
Below is a copy of the ejb-jar. Both beans are referenced in the file so i don't really understand the error message!
Thanks for your help.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description>EJB JAR description</description>
<display-name>EJB JAR</display-name>
<enterprise-beans>
<session>
<ejb-name>EmployeeServicesBean</ejb-name>
<home>com.sap.demo.EmployeeServicesHome</home>
<remote>com.sap.demo.EmployeeServices</remote>
<local-home>com.sap.demo.EmployeeServicesLocalHome</local-home>
<local>com.sap.demo.EmployeeServicesLocal</local>
<ejb-class>com.sap.demo.EmployeeServicesBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<ejb-ref-name>ejb/Employee</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>com.sap.demo.EmployeeLocalHome</local-home>
<local>com.sap.demo.EmployeeLocal</local>
<ejb-link>EmployeeEjb.jar#EmployeeBean</ejb-link>
</ejb-local-ref>
</session>
<entity>
<ejb-name>EmployeeBean</ejb-name>
<home>com.sap.demo.EmployeeHome</home>
<remote>com.sap.demo.Employee</remote>
<local-home>com.sap.demo.EmployeeLocalHome</local-home>
<local>com.sap.demo.EmployeeLocal</local>
<ejb-class>com.sap.demo.EmployeeBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Long</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>EmployeeBean</abstract-schema-name>
<cmp-field>
<field-name>lastname</field-name>
</cmp-field>
<cmp-field>
<field-name>firstname</field-name>
</cmp-field>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>department</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
<query>
<description>Query for getting all employee objects.</description>
<query-method>
<method-name>findAllEmployees</method-name>
<method-params/>
</query-method>
<ejb-ql>Select object (p) from EmployeeBean p</ejb-ql>
</query>
</entity>
</enterprise-beans>
<assembly-descriptor/>
</ejb-jar>
I was able to add the transaction attributes manually to the ejb-jar.xml file. below is what the file looks like now for those interested.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description>EJB JAR description</description>
<display-name>EJB JAR</display-name>
<enterprise-beans>
<session>
<ejb-name>EmployeeServicesBean</ejb-name>
<home>com.sap.demo.EmployeeServicesHome</home>
<remote>com.sap.demo.EmployeeServices</remote>
<local-home>com.sap.demo.EmployeeServicesLocalHome</local-home>
<local>com.sap.demo.EmployeeServicesLocal</local>
<ejb-class>com.sap.demo.EmployeeServicesBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref>
<ejb-ref-name>ejb/Employee</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>com.sap.demo.EmployeeLocalHome</local-home>
<local>com.sap.demo.EmployeeLocal</local>
<ejb-link>EmployeeEjb.jar#EmployeeBean</ejb-link>
</ejb-local-ref>
</session>
<entity>
<ejb-name>EmployeeBean</ejb-name>
<home>com.sap.demo.EmployeeHome</home>
<remote>com.sap.demo.Employee</remote>
<local-home>com.sap.demo.EmployeeLocalHome</local-home>
<local>com.sap.demo.EmployeeLocal</local>
<ejb-class>com.sap.demo.EmployeeBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Long</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>EmployeeBean</abstract-schema-name>
<cmp-field>
<description>
</description>
<field-name>lastname</field-name>
</cmp-field>
<cmp-field>
<description>
</description>
<field-name>firstname</field-name>
</cmp-field>
<cmp-field>
<description>
</description>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<description>
</description>
<field-name>department</field-name>
</cmp-field>
<primkey-field>id</primkey-field>
<query>
<description>Query to get all employee objects.</description>
<query-method>
<method-name>findAllEmployees</method-name>
<method-params/>
</query-method>
<ejb-ql>Select object (p) from EmployeeBean p</ejb-ql>
</query>
</entity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<description>container-transaction</description>
<method>
<ejb-name>EmployeeBean</ejb-name>
<method-name>*</method-name>
</method>
<method>
<ejb-name>EmployeeServicesBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.