geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From CG <learn....@gmail.com>
Subject Re: problem JNDI lookup in geronimo
Date Sat, 12 Apr 2008 00:34:39 GMT
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 <david_jencks@yahoo.com> 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>
> >
>

Mime
View raw message