解决客户端调用EJB远程接口传递基本数据类型数组失败
最近做项目中发现一个问题,调用EJB远程接口时,传递的是基本数组类型如(int[] long[]等等...),发布运行后,产生如下错误。
Specified calling class, [J could not be found for sun.misc.Launcher$AppClassLoader@1c78e57
at org.jboss.ejb3.common.lang.SerializableMethod.getClassFromName(SerializableMethod.java:348)
at org.jboss.ejb3.common.lang.SerializableMethod.toMethod(SerializableMethod.java:238)
at org.jboss.ejb3.common.lang.SerializableMethod.toMethod(SerializableMethod.java:219)
at org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:236)
at org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101)
at $Proxy7.register(Unknown Source)
服务器使用的是JBOSS,客户端引用了一些JBOSS的客户端类库,其中包括了这个EJB3,导致使用类加载器时候出错了,修改方法如下:
1.修改java运行时参数
set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name=%PROGNAME% -Dsun.lang.ClassLoader.allowArraySyntax=true