我一直有问题从我在grails 2.0.3上开发的独立客户端访问我的EJB服务。 EJB服务部署在Glassfish服务器(Java)上。我测试了一个NetBeans测试类的代码来访问EJB的:如何从grails独立客户端访问EJB服务
Properties p = new Properties();
p.put("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
p.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
p.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
p.setProperty("org.omg.CORBA.ORBInitialHost", INTEGRATION_IP);
p.setProperty("org.omg.CORBA.ORBInitialPort", CORBA_PORT);
ctx = new InitialContext(p);
try {
this.admAuth = (AdmAuthenticationRemote) this.ctx.lookup(Tester.AUTHENTICATION_SERVICE_JNDI);
}catch(Exception e){
...
}
这Tester.AUTHENTICATION_SERVICE_JNDI
是一个变量THA包含路径部署的服务,在这种情况下,像"java:global/..."
表示地址是服务被请求。这种访问服务的方式完全可以从测试程序中完成,但是当我尝试从grails执行相同的操作时不起作用。我能够创建上下文以同样的方式,但是当我调用ctx.lookup()
呼叫我得到一个异常:
Message: Lookup failed for 'java:global/...' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory,
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
Cause: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory,
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
[Root exception is java.lang.RuntimeException: Orb initialization erorr]
主要的例外是命名异常,这意味着它在ctx.lookup()
失败,但原因是orb初始化异常,它有另一个异常堆栈:
java.lang.RuntimeException: Orb initialization erorr
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Can not set long field com.sun.corba.ee.impl.orb.ORBDataParserImpl.waitForResponseTimeout to java.lang.Integer
Caused by: java.lang.IllegalArgumentException: Can not set long field com.sun.corba.ee.impl.orb.ORBDataParserImpl.waitForResponseTimeout to java.lang.Integer
我真的迷失在这里。我一直有很多问题需要通过grails来完成,我必须得到所有glassfish罐(库和模块),以便能够调用InitialContext()
,但现在我不确定这是否仍然是jar问题或配置问题或它是什么。
我知道IllegalArgumentException
发生在你尝试在java中分配不兼容的类型,但我没有设置类似的东西,所以我假设它的内部方法初始化。
所以问题是为什么这个例外即将到来?
是否有另一种方式来从grails调用我的服务更好?
+1用于描述错误。 –