hello
i generate a cmp
ejb automatically by using jb6,it map to the jobs table of
pubs database within the mssqlserver2000,as follow:
local interface: Jobs.class
localhome interface: JobsHome.class
remote interface: JobsRemote.class
remotehome interface: JobsRemoteHome.class
implementation class: JobsBean.class
after that,i create a
test program by using the "test client wizard" in
jb6,as follow:
package jobentity;
import com.mansion.ejb.entity.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
public class JobsTestClient1 {
private JobsRemoteHome jobsRemoteHome = null;
public JobsTestClient1() {
try {
Context ctx = new InitialContext();
Object ref = ctx.lookup("JobsRemote");
jobsRemoteHome = (JobsRemoteHome) PortableRemoteObject.narrow
(ref,JobsRemoteHome.class);
}
catch(Exception e) {
e.printStackTrace();
}
}
public JobsRemoteHome getHome() {
return jobsRemoteHome;
}
public static void main(String[] args) {
JobsTestClient1 client = new JobsTestClient1();
try{
JobsRemote jobsRemote=client.getHome().findByPrimaryKey(new
Integer(1));
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
when i run the test program,it tell me "Must call within a valid transaction
context",as follow:
java.lang.IllegalStateException: Must call within a valid transaction
context
at
com.inprise.visitransact.jta.TransactionMapImpl.getTxKey(TransactionMapImpl.
java:15)
at
com.inprise.visitransact.jta.TransactionMapImpl.get(TransactionMapImpl.java:
23)
at com.inprise.ejb.Global$1.getTxContext(Global.java:544)
at com.borland.ejb.pm.DataEntityManager.c(Unknown Source)
at com.borland.ejb.pm.JdbcEntityManager.e(Unknown Source)
at com.borland.ejb.pm.DataEntityManager.d(Unknown Source)
at com.borland.ejb.pm.DataEntityManager.createTrustedPrimaryKey(Unknown
Source)
at
com.inprise.ejb.deployment.CMP2EntityDescriptor.convertToTrustedPK(CMP2Entit
yDescriptor.java:80)
at com.inprise.ejb.EntityHome.find(EntityHome.java:174)
at com.inprise.ejb.EJBHome.invoke(EJBHome.java:279)
at com.inprise.ejb.EJBHome.access$400(EJBHome.java:6)
at com.inprise.ejb.EJBHome$RemoteStrategyImpl.invoke(EJBHome.java:665)
at
com.mansion.ejb.entity.JobsRemoteHomePOAInvokeHandler.findByPrimaryKey(JobsR
emoteHomePOAInvokeHandler.java:36)
at
com.mansion.ejb.entity.JobsRemoteHomePOAInvokeHandler.findByPrimaryKey(JobsR
emoteHomePOAInvokeHandler.java:88)
at
com.mansion.ejb.entity.JobsRemoteHomePOA._invoke(JobsRemoteHomePOA.java:63)
at
com.mansion.ejb.entity.JobsRemoteHomePOA._invoke(JobsRemoteHomePOA.java:43)
at com.inprise.vbroker.poa.POAImpl.invoke(POAImpl.java:2597)
at
com.inprise.vbroker.poa.ActivationRecord.invoke(ActivationRecord.java:105)
at
com.inprise.vbroker.poa.ServerInterceptorManager$ARWrapper.invoke(ServerInte
rceptorManager.java:95)
at
com.inprise.vbroker.GIOP.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.j
ava:621)
at
com.inprise.vbroker.IIOP.ServerProtocolAdapter.doRequest(ServerProtocolAdapt
er.java:68)
at
com.inprise.vbroker.GIOP.GiopProtocolAdapter.dispatchMessage(GiopProtocolAda
pter.java:833)
at
com.inprise.vbroker.orb.TPDispatcherImpl$TPDispatcher.run(TPDispatcherImpl.j
ava:99)
at com.inprise.vbroker.orb.ThreadPool$PoolWorker.run(ThreadPool.java:76)
who can tell me how i can solve the problem?
thank you!