如何使用tomcat运行Guidewire war文件?

Ara*_*lai 1 tomcat guidewire

我有一个使用 Tomcat 服务器启动 CC war 文件的特定需求。我创建了两个 war 文件 - 一个使用“warTomcatDbcp”命令,另一个使用“warTomcatJndi”命令。但是,当我尝试启动 Tomcat 服务器时,我在这两个战争中都遇到了错误。为了确保这不是 tomcat 的问题,我部署了一个从小型 Java 项目创建的 war 文件,并且没有出现任何问题。

“gwb warTomcatDbcp”或“gwb warTomcatJndi”是在 Guidewire 中构建 war 文件的正确方法吗?此外,正确构建 war 文件是否还需要任何其他步骤或配置?

请注意 - 我正在尝试使用 OOTB 版本进行此操作,并且没有进行任何代码更改,而且我也能够从 studio jetty 服务器启动服务器。

这是当我尝试从 tomcat 启动服务器时收到的 cc 日志。

31-Oct-2023 09:02:57.488 SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class [com.guidewire.pl.system.websocket.WebSocketServletContextListener]
    java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2352)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:800)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1317)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1165)
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:491)
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:473)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4349)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4860)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:712)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:975)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1952)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:776)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1659)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:345)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:845)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:240)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:917)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
    Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1353)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1165)
        ... 51 more
Run Code Online (Sandbox Code Playgroud)

对于此事的任何帮助或指导将不胜感激。

谢谢!

Mar*_*vik 7

您能否澄清一下这是否是 PC 的 GWCP 云版本?还是自我管理?如果您可以粘贴project-version.properties 的内容,这将有助于缩小范围。

从我在平台支持矩阵(可通过登录在community.guidewire.com上获得)中可以看到,不支持在本地Tomcat实例上运行云版本 - 可用的Jetty服务器被认为足以满足大多数情况。在 GWCP 环境中,最新版本在 Apache Tomcat 9.0.78 和更高版本的 9.0.x 上运行。您可以检查您的版本(或与您的版本相关的版本)以确保它不是兼容性问题。


小智 6

warTomcatDbcp 和 warTomcatJndi 的区别在于,前者将数据库驱动程序打包到 war 文件中,而后者则没有。造成这种区别的原因是,后一个 ant 任务假设您将使用由 servlet 容器(在您的示例中为 Tomcat)管理的数据库连接的 JNDI 查找,而不是管理其自己的连接池。如果您使用 JNDI,则不需要数据库驱动程序。

不过,这些都与您的问题无关。许多 servlet 包在 Tomcat 10 及更高版本中被重命名,Guidewire 产品不支持这些。如果您降级到 Tomcat 9,您应该已准备就绪。