cancel
Showing results for 
Search instead for 
Did you mean: 

Assignment of transaction attributes in ejb-jar.xml

Former Member
0 Kudos

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>

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

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