java - WebLogic 上的序列化问题

标签 java serialization weblogic

当我在本地服务器(Jetty)上运行代码时,我的一个类没有实现可序列化,当时它运行良好。(如果没有实现可序列化,代码在本地服务器上运行良好)

但是当我将它部署在 weblogic 上时,它给出的错误为:

Caused by: java.rmi.UnmarshalException: 

当我为该特定类实现 Serialized 时,WebLogic 上的错误就消失了。

知道为什么会发生这种情况吗?

错误的堆栈跟踪

<65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766596> <BEA-000000> <Caused by: java.rmi.UnmarshalException: com.example.usecase.command.version.VersionSearchCriteria; nested exception is:
        java.io.NotSerializableException: com.example.usecase.command.version.VersionSearchCriteria>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766597> <BEA-000000> < at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:350)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766598> <BEA-000000> < at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766599> <BEA-000000> < at com.example.Starter_5i7spw_EOImpl_1002_WLStub.evaluateCommand(Unknown Source)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766600> <BEA-000000> < at com.example.taco2.service.impl.CallcomServerService.callServerWithCommand(CallcomServerService.java:178)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766601> <BEA-000000> < ... 40 more>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766602> <BEA-000000> <Caused by: java.io.NotSerializableException: com.example.usecase.command.version.VersionSearchCriteria>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766603> <BEA-000000> < at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1087)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766604> <BEA-000000> < at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1382)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766605> <BEA-000000> < at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1354)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766606> <BEA-000000> < at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1296)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766607> <BEA-000000> < at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1085)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766608> <BEA-000000> < at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:304)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766609> <BEA-000000> < at weblogic.rmi.extensions.server.CBVOutputStream.writeObject(CBVOutputStream.java:91)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766610> <BEA-000000> < at weblogic.rmi.internal.ServerRequest.copy(ServerRequest.java:238)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766611> <BEA-000000> < at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:166)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766612> <BEA-000000> < at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:335)>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <System.err> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766613> <BEA-000000> < ... 43 more>
####<Tracing Data here> <01.05.2012 09:02:46 CEST> <Error> <HTTP> <example> <coms1m1vm1> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-000000000000003d> <1335855766617> <BEA-101020> <[weblogic.servlet.internal.WebAppServletContext@eff17d - appName: 'taco2', name: 'taco2', context-path: '/taco2'] Servlet failed with Exception
java.lang.NullPointerException
        at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:384)
        at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at com.example.taco2.common.AuthorizeFilter.doFilter(AuthorizeFilter.java:65)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at com.example.enterprise.beasecurity.AuthenticationFilter$1.run(AuthenticationFilter.java:150)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(Unknown Source)
        at weblogic.security.Security.runAs(Security.java:41)
        at com.example.enterprise.beasecurity.AuthenticationFilter.doFilter(AuthenticationFilter.java:147)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at com.example.taco2.common.EncodingFilter.doFilter(EncodingFilter.java:36)
        at com.example.taco2.common.Taco2EncodingFilter.doFilter(Taco2EncodingFilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(Unknown Source)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(Unknown Source)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(Unknown Source)
        at weblogic.servlet.internal.WebAppServletContext.execute(Unknown Source)
        at weblogic.servlet.internal.ServletRequestImpl.run(Unknown Source)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
>
####<01.05.2012 09:02:50 CEST> <Error> <System.err> <example> <coms1m1vm1> <[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-0000000000000004> <1335855770431> <BEA-000000> <01.05.2012 09:02:50 - WARNUNG      : Could not refresh JMS Connection for destination 'jms/elu.AnswerQueue2' - retrying in 5000 ms. Cause: Error creating bean with name 'elu.connection.target.factory2' defined in class path resource [at/example/abc/kernel/beanContext/abc.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: While trying to lookup 'jms.com.example.elu.ConnectionFactory2' didn't find subcontext 'jms'. Resolved ''; remaining name 'jms/at/example/elu/ConnectionFactory2'>
####<01.05.2012 09:02:50 CEST> <Error> <System.err> <example> <coms1m1vm1> <[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-0000000000000004> <1335855770433> <BEA-000000> <>
####<01.05.2012 09:02:50 CEST> <Info> <System.out> <example> <coms1m1vm1> <[STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <com> <> <65d8f2366e4156e8:6d5e12f8:137072e8ad2:-8000-0000000000000004> <1335855770436> <BEA-000000> <<<exampleTimeDebugInfo>>MeteredStream.isToRotate: [STANDBY] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)' time=2012-05-01 09:02:32.435 creationTime=2012-05-01 09:02:29.335 CurrentTime=Tue May 01 09:02:50 CEST 2012>
^Z

最佳答案

此错误是因为在存在多个服务器的情况下,WebLogic 实际上正在序列化远程调用的对象,而 Jetty 则不会序列化,而是使用 EJB 本地接口(interface)。

关于java - WebLogic 上的序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394964/

相关文章:

java - 将项目打包到 JAR 中的最佳实践(和含义)是什么?

c# - 为可序列化模型对象编写事件处理程序的正确方法是什么?

c# - 序列化 List<T> 的 XmlSerializer 的构造函数在与 XmlAttributeOverrides 一起使用时抛出 InvalidOperationException

javascript - jQuery UI sortable 的 serialize 方法排除了一项

java - java.util.Date 有字段转换器吗?

java - LibGDX - 居中正交相机

java - weblogic.Deployer 多次运行时变慢

java - 转换 servlet 时出错 : "main" to javax. servlet.Servlet

java - 哪个 JAR 包含 weblogic.servlet.security.ServletAuthentication 类?

java - Android:适配器内的静态变量为空