Thu*_*tne 3 java osgi cxf jax-rs maven
这与jax-rs-2-0-change-default-implementation有关, 我有一个OSGi包,它包含cxf 2.7.8和openejb.cxf依赖项作为嵌入式依赖项添加.
当我尝试部署webapp时,我得到以下异常.当我在启动服务器时设置系统属性,因为-Djavax.ws.rs.ext.RuntimeDelegate=org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl
这可以解决.
但是在上面的链接中它说当我有META-INF/services/javax.ws.rs.ext.RuntimeDelegate
文件的内容,因为org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl
这可以解决.
在我的OSGi包中,该文件存在于cxf-rt-frontend-jaxrs-2.7.8.jar
但是这个jar嵌入在OSGi包中似乎没有得到正确的选择.我试图将相同的文件添加到OSGi包中,META-INF/services
但它也不起作用.
有人可以告诉我有没有办法摆脱这个没有手动设置系统属性?
java.lang.Class.forName0(本机方法)的java.lang.ExceptionInInitializerError,位于com.sun.proxy的java.lang.Class.forName(Class.java:191).$ Proxy89.(未知来源)at sun.reflect位于sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)的sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)中的.NativeConstructorAccessorImpl.newInstance0(Native Method)at java.lang.reflect.Constructor.newInstance(Constructor) .java:526)在java.lang.reflect.Proxy.newInstance(Proxy.java:764)的java.lang.reflect.Proxy.newProxyInstance(Proxy.java:755)atg.apache.openejb.server.cxf. rs.CxfRSService $ ContextBean.(CxfRSService.java:192)位于org.apache.openejb.server.cxf.rs.CxfRSService的org.apache.openejb.server.cxf.rs.CxfRSService.contextCDIIntegration(CxfRSService.java:111) .integrateCDIAndJaxRsInjections(CxfRSService.java:100)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccess orImpl.invoke(NativeMethodAccessorImpl.java:57)位于org.apache.openejb.observer的java.lang.reflect.Method.invoke(Method.java:606)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .ObserverManager $ MethodInvocation.invoke(ObserverManager.java:400)org.apache.openejb.observer.ObserverManager.doFire(ObserverManager.java:111)at org.apache.openejb.observer.ObserverManager.fireEvent(ObserverManager.java:100 )org.apache.openejb.loader.SystemInstance.fireEvent(SystemInstance.java:134)atg.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:150)org.apache.openejb.cdi.CdiBuilder.在org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:838)的org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:644)中构建(CdiBuilder.java:41) at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1250)at sun.reflect.NativeMethodAccessorImp l.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(方法. java:606)org.wso2.carbon.javaee.tomee.ASTomcatWebAppBuilder.configureStart(ASTomcatWebAppBuilder.java:127)org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)at org.wso2.carbon .javaee.tomee.ASGlobalListenerSupport.lifecycleEvent(ASGlobalListenerSupport.java:74)在org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)在org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java :90)org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5412)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)org.apache.catalina.core.在org.apache.catalina.core.Contain的ContainerBase.addChildInternal(ContainerBase.java:901)ergase.addChild(ContainerBase.java:877)org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:345)在org.wso2.carbon.tomcat.internal.CarbonTomcat.addWebApp(CarbonTomcat.java:190)在org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:257)在org.wso2.carbon.webapp .mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:207)org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:174)org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer) .java:139)org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deployThisWebApp(AbstractWebappDeployer.java:204)org.wso2.carbon.webapp.mgt.AbstractWebappDeployer.deploy(AbstractWebappDeployer.java:111)at org. wso2.carbon.webapp.deployer.WebappDeployer.deploy(WEBA ppDeployer.java:42)org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807)at org位于org.apache.axis2.deployment.RepositoryListener的org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377)上的.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) .checkServices(RepositoryListener.java:254)org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:135)org.wso2.carbon.core.CarbonAxisConfigurator.deployServices(CarbonAxisConfigurator.java:567)org.位于org.wso2.carbon.core.internal的org.wso2.carbon.core.internal.CarbonCoreServiceComponent.notifyBefore(CarbonCoreServiceComponent.java:235)中的wso2.carbon.core.internal.DeploymentServerStartupObserver.completingServerStartup(DeploymentServerStartupObserver.java:51). StartupFinalizerServiceComponent.completeInitialization(StartupFinalizerS erviceComponent.java:185)在org.wso2.carbon.core.internal.StartupFinalizerServiceComponent.serviceChanged(StartupFinalizerServiceComponent.java:288)在org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)在组织位于org.eclipse.osgi.framework的org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)的.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) .eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)在org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)在org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry .java:771)org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214))org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)at org.位于sun.reflect.NativeMethodAccessorImpl的org.wso2.carbon.throttling.agent.internal.ThrottlingAgentServiceComponent.activate(ThrottlingAgentServiceComponent.java:100)中的wso2.carbon.throttling.agent.internal.ThrottlingAgentServiceComponent.registerThrottlingAgent(ThrottlingAgentServiceComponent.java:123).在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)的java.lang.reflect.Method.invoke上的invoke0(Native Method)(Method.java: 606)org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260)org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146)at org .eclipse.equinox.internal.ds 位于org.eclipse.equinox.internal.ds.InstanceProcess.build上的orm.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620)中的.model.ServiceComponentProp.build(ServiceComponentProp.java:345),InstanceProcessnts .java:197)org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)at org. eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)位于org.eclipse.osgi.framework的org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861). eventmgr.EventManager.dispatchEvent(EventManager.java:230)位于org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry)的org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148). java:819)at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.pu blishServiceEvent(ServiceRegistry.java:771)位于org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214 org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)位于org.wso2的org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)位于org.wso2.carbon.cron.internal.CarbonCoreServiceComponent的org.wso2.carbon.core.init.CarbonServerManager.start(CarbonServerManager.java:219)上的.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:517) .activate(CarbonCoreServiceComponent.java:91)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43 )在java.la 位于org.eclipse.equinox.internal.ds.model的org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260)的ng.reflect.Method.invoke(Method.java:606). ServiceComponentProp.activate(ServiceComponentProp.java:146)atg.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345)at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess. java:620)org.eclipse中的org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197)org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343)位于org.eclipse.osgi.framework.internal.core的org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)的.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) .bundleContextImpl.dispatchEvent(BundleContextImpl.java:861)位于org.ecl的org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)位于org.eclipse.osgi.internal.serviceregistry的org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)中的ipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148). ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)位于org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java)的org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) 214)org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)org.eclipse.equinox.http.servlet.internal.Activator.registerHttpService(Activator.java:81)at org位于org.wso2.carbon的org.eclipse.equinox.http.servlet.internal.ProxyServlet.init(ProxyServlet.java:40)的.eclipse.equinox.http.servlet.internal.Activator.addProxyServlet(Activator.java:60)组织中的.tomcat.ext.servlet.DelegationServlet.init(DelegationServlet.java:38).apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)位于org.apache.catalina.core.StandardWrapper.load(StandardWrapper)的org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197) .java:1087)org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5262)位于org.apache.catalina的org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5550). util.LifecycleBase.start(LifecycleBase.java:150)位于org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1575)org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase. java:1565)java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615)java.lang.Thread.run(Thread.java:745)引起:java.lang.RuntimeException:java.lang.ClassNotFoundException:org.glassfish.je rsey.internal.RuntimeDelegateImpl不能由tomee_1.7.2.SNAPSHOT_wso2v1在javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:151)在javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java实测值: 119)at javax.ws.rs.core.EntityTag.(EntityTag.java:56)... 131更多引起:java.lang.ClassNotFoundException:org.glassfish.jersey.internal.RuntimeDelegateImpl找不到tomee_1.7.2位于org.eclipse.osgi的org.eclipse.os上的org.eclipse.osup.internal.loader.BindleLoader.findClass(BundleLoader.java:421)org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)的.SNAPSHOT_wso2v1 .internal.loader.BundleLoader.findClass(BundleLoader.java:412)位于java.lang.ClassLoader.loadClass上的org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)(ClassLoader.java:358 )java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:191)at javax.ws.rs.ext.FactoryFinder.newInstance(FactoryFinder.java:114)at javax.ws.rs.ext.FactoryFinder.find(FactoryFinder.java:207)at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:134)... 133更多
小智 8
能够在这里找到答案:https://wso2.org/jira/browse/WSAS-1870
基本上,您需要添加一个系统属性来设置默认委托:
javax.ws.rs.ext.RuntimeDelegate = org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl
如果您正在使用
导入 javax.ws.rs.core.Response;
然后在“pom.xml”文件中添加以下依赖项。它对我有用..
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Spring Boot 2、Jersey 和 Eureka 也有类似的问题。我能够通过添加 mkwyche 答案的变体来解决:
-Djavax.ws.rs.ext.RuntimeDelegate=com.sun.ws.rs.ext.RuntimeDelegateImpl
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14625 次 |
最近记录: |