corydon
新手上路
贴子数量 : 24
注册日期 : 5/8/2002 在线情况 : 离线
|
发表于: 5/14/2002 - 02:46 |
我用WSAD写了一个EJB的应用程序。用EJB Test Client测试正常
新建一Application Client . 编译成功!
执行抛出如下异常:
是否是在new InitialContext().之前设置一些关于was的参数?
Getting the context ......
java.lang.NoClassDefFoundError: com/ibm/rmi/iiop/GIOPVersionException
at com.ibm.CORBA.iiop.ConnectionTable.createConnection(ConnectionTable.java:142)
at com.ibm.CORBA.iiop.ConnectionTable.get(ConnectionTable.java:527)
at com.ibm.CORBA.iiop.ConnectionTable.get(ConnectionTable.java:413)
at com.ibm.CORBA.iiop.GIOPImpl.createRequest(GIOPImpl.java:152)
at com.ibm.CORBA.iiop.GIOPImpl.createRequest(GIOPImpl.java:133)
at com.ibm.CORBA.iiop.ClientDelegate.createRequest(ClientDelegate.java:1080)
at com.ibm.CORBA.iiop.InitialNamingClient.resolve(InitialNamingClient.java:372)
at com.ibm.CORBA.iiop.InitialNamingClient.cachedInitialReferences(InitialNamingClient.java:591)
at com.ibm.CORBA.iiop.InitialNamingClient.resolve_initial_references(InitialNamingClient.java:355)
at com.ibm.CORBA.iiop.ORB.resolve_initial_references(ORB.java:1802)
at com.ibm.ws.naming.util.WsnInitCtxFactory.mergeWsnNSProperties(WsnInitCtxFactory.java:590)
at com.ibm.ws.naming.util.WsnInitCtxFactory.getRootJndiContext(WsnInitCtxFactory.java:352)
at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:227)
at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:98)
at com.ibm.ws.naming.util.WsnInitCtx.<init>(WsnInitCtx.java:79)
at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContext(WsnInitCtxFactory.java:135)
at com.ibm.websphere.naming.WsnInitialContextFactory.getInitialContext(WsnInitialContextFactory.java:80)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:669)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:179)
at hbsoft.ejb.clients.HelloWorldEJBTestClient.main(HelloWorldEJBTestClient.java:22)
Exception in thread "P=87064:O=0:CT"
原码:
import javax.naming.*;
import java.util.*;
import javax.rmi.*;
import hbsoft.*;
public class HelloWorldEJBTestClient {
public static void main(String[] args){
HelloWorldSessionHome helloWorldSessionHome= null;
HelloWorldSession helloWorldSession = null;
InitialContext initContext = null;
final String JNDIName = "HelloWorldSessionHome";
String firstNameParam = "Shelon";
String lastNameParam = "Wonsick";
int id = 99;
try {
System.out.println("Getting the context ......");
initContext = new InitialContext();
} catch (Exception ex) {
System.out.println("Whoops! Threw a NamingException..."+ex.getMessage());
ex.printStackTrace();
System.exit(0);
}
//perform the lookup
HelloWorldSessionHome helloSessionHome = null;
try {
System.out.println("Preforming the lookup...");
Object obj=initContext.lookup(JNDIName);
helloWorldSessionHome =
(HelloWorldSessionHome) PortableRemoteObject.narrow(
obj,HelloWorldSessionHome.class);
} catch (javax.naming.NamingException ex) {
System.out.println("whoops!,Error occur...."+ex);
ex.printStackTrace();
System.exit(0);
}
//create a new HelloWorld Session bean
try {
helloWorldSession = helloWorldSessionHome.create();
} catch (Exception ex) {
System.out.println("Whoops! Exception creating new HelloWorldSession: " + ex);
ex.printStackTrace();
System.exit(0);
}
//use the remote interface to EJB
try {
System.out.println("Parameters passed to the commandline:");
System.out.println("Parameter 'id' = " + id);
System.out.println("Parameter 'firstName' = " + firstNameParam);
System.out.println("Parameter 'lastName' = " + lastNameParam);
// talk to the CMP, HelloWorldEntity bean
System.out.println("Calling Session bean methods..");
helloWorldSession.setFirstName(id, firstNameParam);
helloWorldSession.setLastName(id, lastNameParam);
// Verify that the Session bean did in fact update the Entity bean
System.out.println("Verifying method calls happened...");
System.out.println(
"First Name Returned: " + helloWorldSession.getFirstName(id));
System.out.println("Last Name Returned: " + helloWorldSession.getLastName(id));
} catch (java.rmi.RemoteException ex) {
System.out.println(" Whoops!,the call failure");
ex.printStackTrace();
System.exit(0);
}
}
}
|
|
corydon
新手上路
贴子数量 : 24
注册日期 : 5/8/2002 在线情况 : 离线
|
发表于: 5/14/2002 - 02:48 |
我是按照下面的文章来的:
http://www-900.ibm.com/websphere/techjournal/0110_wosnick/index_eng.shtml |
|
goodlz
|
发表于: 5/14/2002 - 05:18 |
我翻了一下ibmorb.jar包,也没找到那个类com.ibm.rmi.iiop.GIOPVersionException
不过我想,既然是在建立连接时出错,是不是你改动了什么设置呢?
因为我截取你init InitialContext的代码,在我机上试了一下,并没有错误,而且你的程序也没有执行下去。
____________________
WebSphere的支持者,J2EE的爱好者,电子商务的探索者! |
|
corydon
新手上路
贴子数量 : 24
注册日期 : 5/8/2002 在线情况 : 离线
|
发表于: 5/14/2002 - 07:18 |
to goodlz:
thanks!
com/ibm/rmi/iiop/GIOPVersionException 在rt.jar中有。我用的是ibm的wsad中的缺神的jdk;
而且,我按照上面的文章写的session bean and servlet中调用
initialContext中能正确调用entitybean.没有问题。
我想使不是执行这个class是要传一定的参数给jvm,我记得weblogic 好像有这类似的参数。在命令行传入。
|
|
goodlz
|
发表于: 5/14/2002 - 08:02 |
wuwu……我就是在Java项目里新建一个class,然后在wsad缺省的JVM下运行的,没有报错。
我用的是最老的4.0.0,在rt.jar里也没有找到那个类。你用的是哪个版?难道扩充了? ____________________
WebSphere的支持者,J2EE的爱好者,电子商务的探索者! |
|
corydon
新手上路
贴子数量 : 24
注册日期 : 5/8/2002 在线情况 : 离线
|
发表于: 5/16/2002 - 00:34 |
我用的是wsad 4.0.2.听说wsad 5。0已出来。有什么新特性
与老版本区别大吗?
C:\WSAD\plugins\com.ibm.etools.server.jdk\jre\lib\rt.jar
中包含上述的类。
|
|
johnnyv_cn
新手上路
贴子数量 : 2
注册日期 : 7/17/2002 在线情况 : 离线
|
发表于: 7/17/2002 - 01:37 |
|
|
johnnyv_cn
新手上路
贴子数量 : 2
注册日期 : 7/17/2002 在线情况 : 离线
|
发表于: 7/17/2002 - 01:42 |
1.Select Window => Preferences.
2.Select Java => Installed JREs. Click New to add the WebSphere JRE to the JRE list. The WebSphere JRE is located in WSAD_HOME/plugins/com.ibm.etools.server.jdk.
3.Right-click on the Java project and select Properties.
Select JRE and then select Use custom JRE for launching.
Select the server JRE that you have just added.
It's all done!
From:
http://www7b.boulder.ibm.com/wsdd/library/techarticles/0203_deboer/deboer.html
|
|
goodlz
|
发表于: 7/17/2002 - 02:34 |
Good!Thanks! |
|