我正在构建一个简单的测试应用程序,该应用程序以 GWT 客户端作为前端。我使用 JBOSS 作为我的应用程序服务器,并且在 JBOSS 上运行远程服务。Eclipse 是我的开发环境。
当我尝试通过 eclipse 调用 JBOSS 远程接口的简单 hello 方法时,它运行良好,JNDI 查找运行良好,并且远程接口的方法被正确调用。
当我在 JBOSS 上部署业务层并保持 GWT 应用程序从 Eclipse 运行时,JNDI 查找也能正常工作,并且远程接口的方法也能正确调用。
在第三种情况下,我在 Tomcate 上部署 Web 应用程序,在 JBOSS 上部署业务层,在这种情况下,JNDI 查找工作正常,但问题是当我尝试调用远程接口的方法时出现以下错误。
以下是我的简单代码。
==================== 代码 ======================================
尝试 { GreetingServiceBI bi = (GreetingServiceBI) ServiceLocator.getInstance().getRemoteService(GreetingServiceBI.class);
System.out.println("BI 已初始化。");
系统.out.println(bi.getClass().toString());
msg = bi.sayHi(输入);
System.out.println("BI说嗨");
} 捕获 (NamingException e) { e.printStackTrace(); }
我在 Tomcat 中运行此代码时遇到的异常是,我收到消息 BI Initialized Class $Proxy2,之后我从 Tomcat 日志中收到错误
================== 异常 ========================================== 2010 年 10 月 21 日下午 3:24:53 org.apache.catalina.core.ApplicationContext 日志严重:调度传入的 RPC 调用时发生异常 com.google.gwt.user.server.rpc.UnexpectedException:服务方法“public abstract java.lang.String com.client.GreetingService.greetServer(java.lang.String) throws java.lang.IllegalArgumentException”引发了意外异常:java.lang.reflect.UndeclaredThrowableException at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:581) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(未知来源) 导致原因:java.lang.reflect.UndeclaredThrowableException at $Proxy7.sayHi(未知来源) at com.server.GreetingServiceImpl.greetServer(GreetingServiceImpl.java:30) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) at java.lang.reflect.Method.invoke(未知来源) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562) ... 另外 17 个由以下原因引起:java.security.PrivilegedActionException:java.lang.reflect.InvocationTargetException at java.security.AccessController.doPrivileged(Native Method) at org.jboss.ejb3.security.client.SecurityActions.createSecurityContext(SecurityActions.java:657) at org.jboss.ejb3.security.client.SecurityClientInterceptor。在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 处在 org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:76) 处在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 处在 org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62) 处在 $Proxy8.invoke(Unknown Source) 处在 org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261) 处org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101) ... 另外 24 个原因:java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.jboss.security.SecurityContextFactory.createSecurityContext(SecurityContextFactory.java:117) at org.jboss.security.SecurityContextFactory.createSecurityContext(SecurityContextFactory.java:76) at org.jboss.ejb3.security.client.SecurityActions$1.run(SecurityActions.java:662) ... 还有 34 个,由以下原因引起:java.lang.NoClassDefFoundError: javax/security/jacc/PolicyContextException at org.jboss.security.plugins.JBossSecurityContext.(JBossSecurityContext.java:82) ... 还有 41 个,由以下原因引起:java.lang.ClassNotFoundException: javax.security.jacc.PolicyContextException at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) ... 还有 42 个createSecurityContext(SecurityContextFactory.java:76) 在 org.jboss.ejb3.security.client.SecurityActions$1.run(SecurityActions.java:662) ... 还有 34 个 导致的原因:java.lang.NoClassDefFoundError: javax/security/jacc/PolicyContextException 在 org.jboss.security.plugins.JBossSecurityContext.(JBossSecurityContext.java:82) ... 还有 41 个 导致的原因:java.lang.ClassNotFoundException: javax.security.jacc.PolicyContextException 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) ... 还有 42 个createSecurityContext(SecurityContextFactory.java:76) 在 org.jboss.ejb3.security.client.SecurityActions$1.run(SecurityActions.java:662) ... 还有 34 个 导致的原因:java.lang.NoClassDefFoundError: javax/security/jacc/PolicyContextException 在 org.jboss.security.plugins.JBossSecurityContext.(JBossSecurityContext.java:82) ... 还有 41 个 导致的原因:java.lang.ClassNotFoundException: javax.security.jacc.PolicyContextException 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) ... 还有 42 个
======================================== 我认为这是配置问题,但我无法弄清楚。
我正处于生产周期的中间,并且陷入困境。
提前致谢。
答案1
根异常是java.lang.ClassNotFoundException: javax.security.jacc.PolicyContextException
此类可以在 JEE jar 中找到,例如在此列表中。
建议您尝试下载并放入client.jar
Tomcat6jacc-1_0.jar
或TOMCAT_HOME/lib
Tomcat TOMCAT_HOME/server/lib
5.5