无法将我的 WAR 文件从 Tomcat 迁移到 Weblogic 12c
Unable to migrate my WAR file from Tomcat to Weblogic 12c
我正在尝试将我的 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 网站需要一个 weblogic.xml 内部的 WEB-INF 文件夹 web.xml,这样您就可以使用 [=23] 部署您的 WAR =]s 在 Weblogic 上正确。
我不确定为什么 Weblogic 部署需要该文件但其他文件(例如:WAS/JBOSS/etc),现在没有时间找出原因。
万一 Weblogic 开发的任何其他新手都像我一样遇到这个问题,如果您需要像我这样的示例,我会 post 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>
我正在尝试将我的 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 网站需要一个 weblogic.xml 内部的 WEB-INF 文件夹 web.xml,这样您就可以使用 [=23] 部署您的 WAR =]s 在 Weblogic 上正确。
我不确定为什么 Weblogic 部署需要该文件但其他文件(例如:WAS/JBOSS/etc),现在没有时间找出原因。
万一 Weblogic 开发的任何其他新手都像我一样遇到这个问题,如果您需要像我这样的示例,我会 post 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>