我正在尝试将我的 Web 服务从 Tomcat 8.5 迁移到 Weblogic 12c。我的项目在 Tomcat 上运行良好,所以我预计它也会很好,因为它们都使用相同版本的 Java。
在我使用 Weblogic 控制台部署我的 WAR 后,它说它的状态很好并且正在运行。但是当我使用 Chrome 连接到它时,它始终会出现错误 500。即使我深入挖掘 Weblogic 的日志也很难猜出它出了什么问题
<Error> <HTTP> <AdminServer> <[ACTIVE] ExecuteThread: '10' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <f21f82c8-a7fe-4d00-9ead-58094613f623-00000045> <1513072074680> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-101020> <[ServletContext@715231355[app:testCMS module:testCMS.war path:null spec-version:3.1]] Servlet failed with an Exception
java.lang.NullPointerException
at weblogic.servlet.internal.ServletRequestImpl$CookieKey.hashCode(ServletRequestImpl.java:2084)
at java.util.HashMap.hash(HashMap.java:338)
at java.util.HashMap.get(HashMap.java:556)
at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.getSessionIDFromMap(ServletRequestImpl.java:2819)
at weblogic.servlet.internal.ServletRequestImpl$SessionHelper._getSessionInternal(ServletRequestImpl.java:2902)
at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.getSessionInternal(ServletRequestImpl.java:2869)
at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.getSession(ServletRequestImpl.java:2859)
at weblogic.servlet.internal.ServletRequestImpl.getSession(ServletRequestImpl.java:1513)
at weblogic.servlet.internal.ServletResponseImpl.encodeURL(ServletResponseImpl.java:690)
at weblogic.servlet.internal.ServletResponseImpl.encodeRedirectURL(ServletResponseImpl.java:673)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2226)
at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1691)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1651)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270)
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
谁能告诉我如何解决这个奇怪的问题?
最佳答案
好吧,我自己找到了答案。
看来 JSP 网站需要一个包含 web.xml 的 WEB-INF 文件夹中的 weblogic.xml,这样您就可以在 Weblogic 上正确部署带有 JSP 的 WAR。
我不确定为什么 Weblogic 部署需要该文件但其他文件(例如:WAS/JBOSS/等),现在没有时间找出原因。
以防其他 Weblogic 开发新手像我一样遇到这个问题,如果您需要像我这样的示例,我将在此处发布 weblogic.xml 内容。
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">
<wls:weblogic-version>12.2.1.2</wls:weblogic-version>
<wls:context-root>testCMS</wls:context-root>
</wls:weblogic-web-app>
关于java - 无法将我的 WAR 文件从 Tomcat 迁移到 Weblogic 12c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47769966/