org.apache.openejb.server.rest.OpenEJBRestRuntimeException:启动 TomEE 服务器时无法创建类 com.web.config.CryptoApplication

问题描述 投票:0回答:0

我在 TomEE 8.0.14 上部署了一个依赖 Jersey 而不是 Apache CXF 包的 war 文件 我的 Web.xml

        <servlet>
        <servlet-name>CryptoService</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.web.config.CryptoApplication</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

我还在 $TOMEE/conf/system.properties 中添加了以下属性: openejb.classloader.forced-load=javax.ws.rs

启动服务器时出现以下异常,

SEVERE: error invoking org.apache.tomee.webservices.TomeeJaxRsService@c35172e
org.apache.openejb.server.rest.OpenEJBRestRuntimeException: can't create class com.web.config.CryptoApplication
    at org.apache.openejb.server.rest.RESTService.afterApplicationCreated(RESTService.java:183)
    at org.apache.tomee.webservices.TomeeJaxRsService.afterApplicationCreated(TomeeJaxRsService.java:53)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.openejb.observer.ObserverManager$MethodInvocation.invoke(ObserverManager.java:402)
    at org.apache.openejb.observer.ObserverManager$InvocationList.invoke(ObserverManager.java:519)
    at org.apache.openejb.observer.ObserverManager$BeforeAndAfterInvocationSet.invoke(ObserverManager.java:499)
    at org.apache.openejb.observer.ObserverManager.doFire(ObserverManager.java:111)
    at org.apache.openejb.observer.ObserverManager.fireEvent(ObserverManager.java:100)
    at org.apache.openejb.loader.SystemInstance.fireEvent(SystemInstance.java:151)
    at org.apache.tomee.catalina.TomcatWebAppBuilder.afterStart(TomcatWebAppBuilder.java:1819)
    at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:193)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:430)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
Caused by: java.lang.ClassCastException: Cannot cast com.web.config.CryptoApplication to javax.ws.rs.core.Application
    at java.lang.Class.cast(Class.java:3369)
    at org.apache.openejb.server.rest.RESTService.afterApplicationCreated(RESTService.java:174)
    ... 43 more

即使有这个异常,服务器仍在启动,我可以访问该应用程序。

rest maven jax-rs jersey-2.0 tomee-8
© www.soinside.com 2019 - 2024. All rights reserved.