部署后的Weblogic异常:java.rmi.UnexpectedException

时间:2015-03-03 09:09:36

标签: weblogic weblogic12c

刚遇到类似问题,如下文所述:

Question: Article with similar error description

java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is: 
java.rmi.UnexpectedException: Failed to parse descriptor file; nested exception is: 
java.rmi.server.ExportException: Failed to export class

我发现所描述的问题与任何Java更新完全无关,而且与Weblogic bean-cache相关。在更新部署时,它似乎使用旧的编译版本的类。我在相关问题(Question: Interface-Implementation-mismatch)中搜索了类似的问题。

如何正确修复此问题以允许正确的自动部署(使用WLST)?

1 个答案:

答案 0 :(得分:0)

经过Oracle社区的一些反馈后,它现在的工作原理如下:

1)关闭远程受管服务器

2)删除目录“domains /#MyDomain#/ servers /#MyManagedServer#/ cache / EJBCompilerCache”

3)重新部署EAR /应用程序

在WLST(需要自动执行此操作)中,这非常棘手:

      import shutil

      servers=cmo.getServers()
      domainPath = get('RootDirectory')
      for thisServer in servers:
        pathToManagedServer = domainPath + "\\servers\\" + thisServer.getName()
        print ">Found managed server:" + pathToManagedServer
        pathToCacheDir = pathToManagedServer + "\\" + "cache\\EJBCompilerCache"
        if(os.path.exists(pathToCacheDir) and os.path.isdir(pathToCacheDir) ):
          print ">Found a cache directory that will be deleted:" + pathToCacheDir
          # shutil.rmtree(pathToCacheDir)

注意:测试时要小心,“pathToCacheDir”返回的路径取决于当前设置的MBean上下文。请参阅WLST命令“cd()”的示例。您应首先使用“print domainPath”测试路径输出,然后添加“rmtree”python命令! (我在我的示例中取消注释了删除命令,因此没有人意外删除整个域!)