【问题标题】:Apache cxf jaxrs server ServiceConstructionExceptionApache cxf jaxrs 服务器 ServiceConstructionException
【发布时间】:2018-03-14 14:17:36
【问题描述】:

你好,我写过 jaxrs apache cxf rest server。以前它工作正常。突然它没有启动,它给出了这个错误。

Caused by: java.lang.ClassCastException: org.apache.cxf.jaxrs.model.wadl.WadlGenerator cannot be cast to javax.ws.rs.container.ContainerRequestFilter
    at org.apache.cxf.jaxrs.provider.ServerProviderFactory.createWadlGenerator(ServerProviderFactory.java:104)
    at org.apache.cxf.jaxrs.provider.ServerProviderFactory.<init>(ServerProviderFactory.java:95)
    at org.apache.cxf.jaxrs.provider.ServerProviderFactory.initBaseFactory(ServerProviderFactory.java:132)
    at org.apache.cxf.jaxrs.provider.ServerProviderFactory.createInstance(ServerProviderFactory.java:116)
    at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.setupFactory(JAXRSServerFactoryBean.java:234)
    at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:182)

这是我的弹簧配置

<jaxrs:server name="server" address="${url}">
    <jaxrs:serviceBeans>
        <ref bean="serverApi"/>
        <ref bean="swaggerResourceJSON"/>
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <ref bean="jacksonProvider"/>
        <ref bean="resourceWriter"/>
        <ref bean="apiWriter"/>
        <ref bean="corsFilter"/>
    </jaxrs:providers>
</jaxrs:server>

有人有什么问题吗??

【问题讨论】:

  • 我还没有答案,但我现在遇到了同样的问题。如果我找到答案,我会在这里发布。

标签: java spring apache jax-rs cxf


【解决方案1】:

在我的情况下,这是一个 cxf 依赖项不匹配。cxf-spring-boot-starter-jaxrs 3.2.2 与我需要 jsonProvider-rs 的 cxf-bundle-jaxrs 2.7.18 不兼容。我能够通过用 cxf-rt-rs-extension-providers 3.2.2 替换 cxf-bundle-jaxrs 来解决问题

【讨论】:

    【解决方案2】:

    就我而言,我在尝试测试 CXF JAX_RX API 时遇到了这个问题。我在测试情况下尝试创建服务器时遇到了这个问题。我尝试了几种不同的方法...

    这个游戏给我ClassCastException:

    JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
    sf.setTransportId(LocalTransportFactory.TRANSPORT_ID);
    sf.setAddress("api/address");
    sf.setResourceClasses(OurJaxResource.class);
    server = sf.create();
    

    这样做:

    JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
    sf.setResourceClasses(OurJaxResource.class);
    
    List<Object> providers = new ArrayList<Object>();
    sf.setProviders(providers);
    sf.setResourceProvider(OurJaxResource.class, new SingletonResourceProvider(new OurJaxResource(), true));
    sf.setAddress(ENDPOINT_ADDRESS);
    
    server = sf.create();
    

    最终解决这个异常的方法是:

    JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
    sf.setBindingId(JAXRSBindingFactory.JAXRS_BINDING_ID);
    sf.setAddress("api/address");
    server = serverFactory.create();
    server.start();
    

    不确定您的具体情况,但希望这至少能让您朝着正确的方向前进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 2014-01-21
      相关资源
      最近更新 更多