-
1. Re: Problem with finder method in CMP2.0
adrian.brock Sep 17, 2003 10:53 AM (in response to teena)Where does it "hang" post a thread dump.
Regards,
Adrian -
2. Re: Problem with finder method in CMP2.0
teena Sep 18, 2003 2:43 AM (in response to teena)Adrian,
Thanks for the response.
For debugging purposes, I have put some log statements inside my servlet's post method. Here is the extract of that.
EmployeeLocal duke = employeeHome.create(101, "Duke","6th street","London","UK","7th","NY","US","","","");
System.out.println(duke.getEname()+" created with id= "+duke.getEID());
duke.setEname("Robin");
System.out.println("His changed Name is "+duke.getEname());
EmployeeLocal john = employeeHome.create(102, "john");
System.out.println(john.getEname()+" created with id= "+john.getEID());
EmployeeLocal duke1=employeeHome.findByPrimaryKey(new EmployeePK(101));
EmployeeLocal john1=employeeHome.findByPrimaryKey(new EmployeePK(102));
System.out.println("Getting List");
ArrayList arl=duke1.getAddressList();
System.out.println("Got List");
Iterator i=arl.iterator();
int j=0;
while (i.hasNext()) {
try{
AddressLocal addr=(AddressLocal)arl.get(j);
System.out.println(addr.getCity());
}catch(Exception e){
break;
}
j++;
}
System.out.println("Looking out for Robins");
Collection c1=employeeHome.findByEname("Robin");
Iterator i1=c1.iterator();
int j1=0;
while(i1.hasNext()){
j1++;
}
System.out.println("We have "+j1+" Robins");
Collection c2=employeeHome.findAll();
Iterator i2=c2.iterator();
int j2=0;
while(i2.hasNext()){
j2++;
}
System.out.println("We have "+j2+" Employees");
So, when I run this servlet,here is what I get at the prompt.
13:40:05,004 INFO [STDOUT] Lookup for EmployeeDetails is success
13:40:05,164 INFO [STDOUT] Duke created with id= 101
13:40:05,284 INFO [STDOUT] His changed Name is Robin
13:40:05,344 INFO [STDOUT] john created with id= 102
13:40:05,364 INFO [STDOUT] Getting List
13:40:05,384 INFO [STDOUT] Got List
13:40:05,434 INFO [STDOUT] London
13:40:05,444 INFO [STDOUT] NY
13:40:05,474 INFO [STDOUT] null
13:40:05,474 INFO [STDOUT] Looking out for Robins
Just after it says 'Looking out for Robins' it hangs, when executing findByEname. However, it doesn't throw any exceptions. One more peculiar behaviour is that it executes perfectly if no matching bean is found.
also, I have changed the xmls that I had earlier posted. Here is the new version of it.
<ejb-jar>
<enterprise-beans>
<ejb-name>EmployeeEJB</ejb-name>
<local-home>DataServices.Entity.EmployeeLocalHome</local-home>
DataServices.Entity.EmployeeLocal
<ejb-class>DataServices.Entity.EmployeeEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>DataServices.Entity.EmployeePK</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>EmployeeEJB</abstract-schema-name>
<cmp-field><field-name>eID</field-name></cmp-field>
<cmp-field><field-name>ename</field-name></cmp-field>
<query-method>
<method-name>findByEname</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT OBJECT(e) FROM EmployeeEJB e WHERE e.ename = ?1]]>
</ejb-ql>
<query-method>
<method-name>findAll</method-name>
<method-params/>
</query-method>
<ejb-ql>
<![CDATA[SELECT OBJECT(e) FROM EmployeeEJB e]]>
</ejb-ql>
<ejb-name>AddressEJB</ejb-name>
<local-home>DataServices.Entity.AddressLocalHome</local-home>
DataServices.Entity.AddressLocal
<ejb-class>DataServices.Entity.AddressEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>DataServices.Entity.AddressPK</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>AddressEJB</abstract-schema-name>
<cmp-field><field-name>eID</field-name></cmp-field>
<cmp-field><field-name>aID</field-name></cmp-field>
<cmp-field><field-name>street</field-name></cmp-field>
<cmp-field><field-name>city</field-name></cmp-field>
<cmp-field><field-name>country</field-name></cmp-field>
</enterprise-beans>
<ejb-relation>
<ejb-relation-name>Employee-Address</ejb-relation-name>
<ejb-relationship-role>
<ejb-relationship-role-name>Employee-has-Addresses</ejb-relationship-role-name>
One
<relationship-role-source>
<ejb-name>EmployeeEJB</ejb-name>
</relationship-role-source>
<cmr-field>
<cmr-field-name>addresses</cmr-field-name>
<cmr-field-type>java.util.Collection</cmr-field-type>
</cmr-field>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>Addresses-belongs-to-Employee</ejb-relationship-role-name>
Many
<relationship-role-source>
<ejb-name>AddressEJB</ejb-name>
</relationship-role-source>
</ejb-relationship-role>
</ejb-relation>
<assembly-descriptor>
<container-transaction>
All methods require a transaction
<ejb-name>EmployeeEJB</ejb-name>
<method-name>*</method-name>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
A small Export of jboss-cmp.xml follows
<enterprise-beans>
<ejb-name>EmployeeEJB</ejb-name>
java:/LibraryDS
<datasource-mapping>Oracle8</datasource-mapping>
<create-table>true</create-table>
<remove-table>true</remove-table>
<table-name>EmployeeEJB</table-name>
<cmp-field>
<field-name>eID</field-name>
<column-name>eID</column-name>
</cmp-field>
<cmp-field>
<field-name>ename</field-name>
<column-name>ename</column-name>
</cmp-field>
<ejb-name>AddressEJB</ejb-name>
java:/LibraryDS
<datasource-mapping>Oracle8</datasource-mapping>
<create-table>true</create-table>
<remove-table>true</remove-table>
<table-name>AddressEJB</table-name>
<cmp-field>
<field-name>eID</field-name>
<column-name>eID</column-name>
</cmp-field>
<cmp-field>
<field-name>aID</field-name>
<column-name>aID</column-name>
</cmp-field>
<cmp-field>
<field-name>street</field-name>
<column-name>street</column-name>
</cmp-field>
<cmp-field>
<field-name>city</field-name>
<column-name>city</column-name>
</cmp-field>
<cmp-field>
<field-name>country</field-name>
<column-name>country</column-name>
</cmp-field>
</enterprise-beans>
Thanks for your time.
Please give me your views and hence the possible solution to my problem.
Thanks and Regards,
Teena -
3. Re: Problem with finder method in CMP2.0
nraghuram Sep 23, 2003 2:10 AM (in response to teena)Your iterator loop is not ending bcos you arent calling iterator.next();