Thx for the reply :) > Does your application have any CMP 2.1 Entity beans? Not sure whether is CMP 2.1 and how should I verify ? I coded it byfollowing a tutorial of EJB3 . I enclose the source of the EntityBEan Material.java as a reference at end of msg
> What geronimo version are you using? I am using geronimo 2.1 on ubuntu , below is the openejb-jar.xml & persistence.xml for your reference FYI, my program consists of 2 entity bean, Material & MaterialType. Initially I try to use the dbpool in geronimo for the db connection but it seems like does not work , therefore , I hardcoded the driver name , server name in the coding. Initially there is tag <jta-source> in the openejb-jar.xml but it prompt me for error under eclipse GEP 2.1 snapshot plugin, and Ihave remove it out. Thanks CG openejb-jar.xml ==================== <?xml version="1.0" encoding="UTF-8"?> <openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.2" xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0" xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.2" xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2"> <sys:environment> <sys:moduleId> <sys:groupId>default</sys:groupId> <sys:artifactId>EJBStructsEJB</sys:artifactId> <sys:version>1.0</sys:version> <sys:type>car</sys:type> </sys:moduleId> <sys:dependencies> <sys:dependency> <sys:groupId>console.dbpool</sys:groupId> <sys:artifactId>mysql</sys:artifactId> </sys:dependency> </sys:dependencies> </sys:environment> <enterprise-beans/> </openejb-jar> persistence.xml =================== <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="EJBStructsEJB"> <description>Entity Beans for Material</description> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> <class>com.quesofttech.entity.MaterialType</class> <properties> <property name="openjpa.jdbc.SynchronizeMappings" value="false"/> <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/> <property name="openjpa.ConnectionURL" value="jdbc:mysql:localhost:3306/ERP"/> <property name="openjpa.ConnectionUserName" value="root"/> <property name="openjpa.ConnectionPassword" value="super123"/> </properties> </persistence-unit> </persistence> <code> package com.quesofttech.entity; import java.io.Serializable; import java.sql.Date; import java.sql.Time; import javax.persistence.Id; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; //import javax.persistence.SequenceGenerator; import javax.persistence.TableGenerator; import javax.persistence.ManyToOne; import javax.persistence.JoinColumn; @Entity @Table(name = "Material") //For Postgresql : @SequenceGenerator(name = "material_sequence", sequenceName = "material_id_seq") //Generic solution : (Use a table named PrimaryKeys, with 2 fields , tableName & keyField) @TableGenerator( name="material_id", table="PrimaryKeys", pkColumnName="tableName", pkColumnValue="material", valueColumnName="keyField") public class Material implements Serializable { private static final long serialVersionUID = 7422574264557894632L; private Integer id; private String code; private String description; // Foreign keys private MaterialType materialType; // Common fields private String recordStatus; private String sessionId; private String createLogin; private String createApp; private java.sql.Date createDate; private java.sql.Time createTime; private String modifyLogin; private String modifyApp; private java.sql.Date modifyDate; private java.sql.Time modifyTime; public Material() { super(); // TODO Auto-generated constructor stub } public Material(Integer id, String code, String description) { super(); this.id = id; this.code = code; this.description = description; } public Material(Integer id, String code, String description, MaterialType materialType, String recordStatus, String sessionId, String createLogin, String createApp, Date createDate, Time createTime, String modifyLogin, String modifyApp, Date modifyDate, Time modifyTime) { super(); this.id = id; this.code = code; this.description = description; this.materialType = materialType; this.recordStatus = recordStatus; this.sessionId = sessionId; this.createLogin = createLogin; this.createApp = createApp; this.createDate = createDate; this.createTime = createTime; this.modifyLogin = modifyLogin; this.modifyApp = modifyApp; this.modifyDate = modifyDate; this.modifyTime = modifyTime; } @Override public String toString() { return "Id: " + getId() + " Desc: " + getDescription() + " Code:" + getCode() + " RecordStatus: " + getRecordStatus() + " SessionId: " + getSessionId() + " CreateLogin: " + getCreateLogin() + " CreateApp: " + getCreateApp() + " CreateDate: " + getCreateDate() + " CreateTime: " + getCreateTime() + " ModifyLogin: "+ getModifyLogin() + " ModifyApp: " + getModifyApp() + " ModifyDate: " + getModifyDate() + " ModifyTime: " + getModifyTime(); } @Id //For Postgresql : @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "material_sequence") //For MSSQL : @GeneratedValue(strategy = GenerationType.IDENTITY) //Generic solution : @GeneratedValue(strategy = GenerationType.TABLE, generator = "material_id") public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getRecordStatus() { return recordStatus; } public void setRecordStatus(String recordStatus) { this.recordStatus = recordStatus; } public String getSessionId() { return sessionId; } public void setSessionId(String sessionId) { this.sessionId = sessionId; } public String getCreateLogin() { return createLogin; } public void setCreateLogin(String createLogin) { this.createLogin = createLogin; } public String getCreateApp() { return createApp; } public void setCreateApp(String createApp) { this.createApp = createApp; } public java.sql.Date getCreateDate() { return createDate; } public void setCreateDate(java.sql.Date createDate) { this.createDate = createDate; } public java.sql.Time getCreateTime() { return createTime; } public void setCreateTime(java.sql.Time createTime) { this.createTime = createTime; } public String getModifyLogin() { return modifyLogin; } public void setModifyLogin(String modifyLogin) { this.modifyLogin = modifyLogin; } public String getModifyApp() { return modifyApp; } public void setModifyApp(String modifyApp) { this.modifyApp = modifyApp; } public java.sql.Date getModifyDate() { return modifyDate; } public void setModifyDate(java.sql.Date modifyDate) { this.modifyDate = modifyDate; } public java.sql.Time getModifyTime() { return modifyTime; } public void setModifyTime(java.sql.Time modifyTime) { this.modifyTime = modifyTime; } @ManyToOne @JoinColumn(name="materialType_fk") public MaterialType getMaterialType() { return materialType; } public void setMaterialType(MaterialType materialType) { this.materialType = materialType; } } </code> On Sat, Apr 12, 2008 at 3:25 AM, David Jencks <[EMAIL PROTECTED]> wrote: > Hi CG, > > That's not a terribly informative error message :-). It looks to me as if > the cmp entity bean support is not properly configured. > Does your application have any CMP 2.1 Entity beans? > What geronimo version are you using? > > If your application does not have any CMP2.1 entity beans and you are using > a geronimo version before 2.1 please upgrade. There was a bug in some > versions that installed the cmp support even if you didn't have any cmp > beans. I think this was fixed by G 2.1. > > If you do have cmp 2.1 entity beans you should (1) upgrade to jpa or if > that is not possible (2) show us your openejb-jar.xml. > > If you are not using cmp 2.1 entity beans and are already using G 2.1 > please let us know.... we should check this is not a problem for G 2.1.1 > > thanks > david jencks > > > On Apr 11, 2008, at 11:49 AM, CG wrote: > > > > Hi all, > > > > > > > > I have solved a few remaining problem in JNDI lookup which occur after > that. > > > > And I manage to get a initialcontext and manage to lookup an EJB , > > however, the program throw exception when I try to call EJB function > > using the returned reference of EJB. > > > > Already search google but can't get useful info ... > > My EJB fundamental concept is not strong , find hard to understand the > > error message , therefore , hope to get some hints at here > > THanks > > > > CG > > <code> > > > > OK context = new InitialContext(props); > > seems OK beanRemote = (MaterialTestBeanRemote) > > context.lookup(MaterialTestBean.RemoteJNDIName); > > if(beanRemote!=null) > > { > > problem beanRemote.testMaterial(); > > beanRemote.testMaterialType(); > > //beanRemote.testRelation(); > > } > > > > </code> > > > > Error msg > > Exception in thread "main" javax.ejb.EJBException: The bean > > encountered a non-application exception.; nested exception is: > > <openjpa-1.0.1-r420667:592145 fatal general error> > > org.apache.openjpa.persistence.PersistenceException: null > > at > org.apache.openejb.client.EJBInvocationHandler.convertException(EJBInvocationHandler.java:210) > > at > org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:157) > > at > org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:116) > > at > org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52) > > at $Proxy0.testMaterialType(Unknown Source) > > at > test.com.quesofttech.FirstEJB3TutorialClient.main(FirstEJB3TutorialClient.java:52) > > Caused by: <openjpa-1.0.1-r420667:592145 fatal general error> > > org.apache.openjpa.persistence.PersistenceException: null > > at > org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:234) > > at > org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:709) > > at > org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:809) > > at > org.apache.openjpa.jdbc.kernel.JDBCStoreManager.setContext(JDBCStoreManager.java:120) > > at > org.apache.openjpa.kernel.DelegatingStoreManager.setContext(DelegatingStoreManager.java:78) > > at > org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:285) > > at > org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:187) > > at > org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142) > > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192) > > at > org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56) > > at > org.apache.geronimo.persistence.CMPEntityManagerTxScoped.createEntityManager(CMPEntityManagerTxScoped.java:74) > > at > org.apache.geronimo.persistence.CMPEntityManagerTxScoped.getEntityManager(CMPEntityManagerTxScoped.java:55) > > at > org.apache.geronimo.persistence.CMPEntityManagerTxScoped.persist(CMPEntityManagerTxScoped.java:81) > > at > com.quesofttech.session.MaterialTestBean.testMaterialType(MaterialTestBean.java:63) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > > at > org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:146) > > at > org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:129) > > at > org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:67) > > at > org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210) > > at > org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188) > > at > org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165) > > at > org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:214) > > at > org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:121) > > at > org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:164) > > at > org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:122) > > at > org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:84) > > at > org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:60) > > at > org.apache.openejb.server.ServiceLogger.service(ServiceLogger.java:76) > > at > org.apache.openejb.server.ServiceAccessController.service(ServiceAccessController.java:55) > > at > org.apache.openejb.server.ServiceDaemon$1.run(ServiceDaemon.java:118) > > at java.lang.Thread.run(Thread.java:619) > > Caused by: java.lang.Exception: java.lang.NullPointerException > > at > org.apache.openjpa.util.Exceptions.replaceNestedThrowables(Exceptions.java:242) > > at > org.apache.openjpa.persistence.PersistenceException.writeObject(PersistenceException.java:100) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > > at > java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) > > at > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461) > > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) > > at > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) > > at > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509) > > at > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474) > > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) > > at > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) > > at > java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) > > at > org.apache.openejb.client.ThrowableArtifact.writeExternal(ThrowableArtifact.java:49) > > at > java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1421) > > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1390) > > at > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) > > at > java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) > > at > org.apache.openejb.client.EJBResponse.writeExternal(EJBResponse.java:111) > > at > org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:197) > > ... 8 more > > > > <snip> > > >
