簡體   English   中英

Apache CXF Jaxrs服務器ServiceConstructionException

[英]Apache cxf jaxrs server ServiceConstructionException

嗨,我已經寫了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>

有沒有人是什么問題?

就我而言,這是一個cxf依賴項不匹配。cxf-spring-boot-starter-jaxrs 3.2.2與jsonProvider-rs需要的cxf-bundle-jaxrs 2.7.18不兼容。 我可以通過將cxf-bundle-jaxrs替換為cxf-rt-rs-extension-providers 3.2.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();

不確定您的具體情況,但希望至少可以使您朝正確的方向前進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM