java - 无法将我的 WAR 文件从 Tomcat 迁移到 Weblogic 12c

标签 java tomcat war weblogic12c

我正在尝试将我的 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/

相关文章:

eclipse - 如何在不遇到 java.lang.ClassNotFoundException 的情况下将 JAR 库添加到 WAR 项目?类路径 vs 构建路径 vs/WEB-INF/lib

java - 您是否需要重写hashCode()和equals()进行记录?

java - 数组扫描阻止下一次字符串扫描?

eclipse - tomcat eclipse 和 WTP 与 maven

java - 从Spring创建war文件:boot project in Eclipse

java - 将 WAR 复制到应用程序服务器

Java 流在循环中的使用

java - Spring的Singleton作用域bean在Web应用程序中的表现如何?

Tomcat 部署脚本返回 405

java - 我在 tomcat7 服务器中遇到端口问题 在 http ://localhost:8080/but actual port is 8090 using maven project 上运行 war