【问题标题】:ejb remote method works locally but give error remotelyejb 远程方法在本地工作,但远程给出错误
【发布时间】:2013-05-22 11:52:13
【问题描述】:

我创建了一个ejb 远程接口,将它部署在我的本地计算机上glassfish 应用程序服务器上,它运行良好,但是在远程服务器上测试它时它成功部署但我无法在验证时访问远程方法登录表单,出现以下错误:

javax.ejb.EJBException

在 com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5215)

在 com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5113)

在 com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901)

在 com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2045)

在 com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994)

在 com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandl er.java:222)

在 com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocat ionHandlerDelegate.java:89) 在 $Proxy206.findStudentByFirstName(未知来源)

在 pac.Serve.processRequest(Serve.java:46) 在 pac.Serve.doPost(Serve.java:124)

在 javax.servlet.http.HttpServlet.service(HttpServlet.java:688)

在 javax.servlet.http.HttpServlet.service(HttpServlet.java:770)

在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)

在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)

在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)

在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)

在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)

在 org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)

在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)

在 com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)

在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)

在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)

在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)

在 com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)

在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)

在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)

在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)

在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)

在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)

在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)

在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)

在 com.sun.grizzly.ContextTask.run(ContextTask.java:71)

在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)

在 com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)

at java.lang.Thread.run(Thread.java:722) 原因:异常 [EclipseLink-4002](Eclipse 持久性服务 - 2.3.2.v20111125-r10461):org.eclipse.persistence.exceptions.DatabaseException 内部 异常:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:表 'schooldb.Jss_Student_Details' 不存在错误代码:1146 调用: SELECT firstName, lastName FROM schooldb.Jss_Student_Details WHERE (email = ?) bind => [1 参数绑定] 查询: ReportQuery(name="JssStudentDetails.findByEmail1" referenceClass=JssStudentDetails sql="SELECT firstName, lastName FROM schooldb.Jss_Student_Details WHERE (email = ?)")

在 org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)

在 org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:644)

在 org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535)

在 org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1717)

在 org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:566)

在 org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207)

在 org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193)

在 org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:264)

在 org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:646)

在 org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:2611)

在 org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllReportQueryRows(ExpressionQueryMechanism.java:2554)

在 org.eclipse.persistence.queries.ReportQuery.executeDatabaseQuery(ReportQuery.java:846)

在 org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:844)

在 org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1040)

在 org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:392)

在 org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1128)

在 org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)

在 org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516)

在 org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498)

在 org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1463)

在 org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:485)

在 org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:742)

在 wak.capableDoa.findStudentByFirstName(capableDoa.java:34)

在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

在 java.lang.reflect.Method.invoke(Method.java:601)

在 org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)

在 org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)

在 com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388)

在 com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)

在 com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 在 com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)

在 org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:42)

在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

在 java.lang.reflect.Method.invoke(Method.java:601)

在 com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)

在 com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 在 com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)

在 com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)

在 com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

在 java.lang.reflect.Method.invoke(Method.java:601)

在 com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)

在 com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)

在 com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) 在 com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360)

在 com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348)

在 com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214) ... 30 更多 原因: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:表 “schooldb.Jss_Student_Details”不存在

在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)

在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)

在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)

在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)

在 com.mysql.jdbc.Connection.execSQL(Connection.java:3283)

在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)

在 com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1467)

在 com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40.executeQuery(PreparedStatementWrapper40.java:642)

在 org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:931)

在 org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:607) ... 81 更多

请有人帮忙解决这个错误, 提前致谢。

【问题讨论】:

  • 如果您查看异常,您会收到 SQL 错误。我认为两种情况之一正在发生;要么您更改了导致 SQL 错误的配置中的某些内容(很容易检查您是否再次测试服务器 EJB),或者您执行的不是 EJB 存根,而是客户端中的 EJB 本身......
  • 那个异常在哪里被抛出?发布完整代码。

标签: java


【解决方案1】:

这与远程/本地 ejb 无关......这是一个 SQL 错误:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'schooldb.Jss_Student_Details'     doesn't exist

【讨论】:

  • 我尝试将信息存储到数据库中并且效果很好,但是尝试验证登录表单并从数据库中的表中检索会出现上述错误
  • 这是我的验证代码,无法远程工作,但在本地工作完美
  • 公共类服务扩展 HttpServlet { @EJB 私有的能力DoaRemote 能力Doa;
  • protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String Fname = request.getParameter("usrnam"); Integer Pass = Integer.valueOf(request.getParameter("pass")).intValue();
  • 尝试 { HttpSession session = request.getSession(true); List Ins = ableDoa.findStudentByFirstName(Fname); List pas = ableDoa.findStudentByStudPin(Pass); List cas = ableDoa.findStudentByFirsttName(Fname); List tas = ableDoa.findStudentByStudePin(Pass); if(!Ins.isEmpty() && !pas.isEmpty()){ for(Object [] xx : Ins){ session.setAttribute("usrnam", xx[0]); session.setAttribute("usrn", xx[1]);}
猜你喜欢
  • 1970-01-01
  • 2017-04-20
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多