使用的技术:
问题:我的所有杰克逊注释都被忽略了。这会导致所有方法在序列化的每个类中执行。
在Java中使用OSGi时,似乎有三个地方声明关于依赖关系:
我可能在某个地方犯了一个错误,两个类正在阅读JSON注释。任何见解?
相关的pom.xml代码段
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>3.2.1</version>
</dependency>
<!-- Adds Jackson JSON Provider to JAX-RS -->
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.9.8</version>
</dependency>
相关的features.xml片段
<feature version="${jackson.version}">jackson-core</feature>
<feature version="${jackson.version}">jackson-annotations</feature>
OSGi进口
<Import-Package>
org.apache.cxf.*,
<!--org.apache.camel.component.blueprint,-->
org.apache.camel,
org.apache.camel.component.cxf,
<!--org.apache.camel.component.jackson,-->
org.apache.camel.component.http4,
<!--org.apache.camel.jaxb,-->
<!--org.apache.camel.component.jsch,-->
javax.ws.rs;version="0";resolution:=optional,
javax.xml.bind.*,
com.fasterxml.jackson.jaxrs.json;resolution:=optional,
com.fasterxml.jackson.jaxrs.annotation,
com.fasterxml.jackson.jaxrs.base,
</Import-Package>
<!-- JAXRS providers -->
<bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
<!--<bean id="xmlProvider" class="com.fasterxml.jackson.jaxrs.xml.JacksonJaxbXMLProvider"/>-->
<!--<bean id="jaxbjsonProvider" class="com.fasterxml.jackson.jaxrs.xml.JacksonJaxbJsonProvider" />-->
<!-- CXF Core Bus conveniently called "jaxrs" so that we can bind the jsonProvider to it for all traffic -->
<cxfcore:bus id="jaxrs" bus="jaxrs">
<!--<cxfcore:properties>
<entry key="skip.default.json.provider.registration" value="true"/>
</cxfcore:properties>-->
</cxfcore:bus>
<!-- CXF REST Server using rsServer element -->
<cxf:rsServer id="cxfConsumer" address="/mcs-connect" serviceClass="at.ac.uibk.mcsconnect.api.IMcsService" loggingFeatureEnabled="true" bus="jaxrs">
<cxf:providers>
<ref component-id="jsonProvider"/>
<!--<ref component-id="xmlProvider"/>-->
<!--<ref component-id="jaxbjsonProvider"/>-->
</cxf:providers>
</cxf:rsServer>
我看不到实际发布服务器但使用CXF + Jackson的相关代码/蓝图我通常导入org.apache.cxf.jaxrs.provider.*
包并将以下配置放在蓝图文件中:
<jaxrs:server id="your.server.name" address="/template">
<jaxrs:serviceBeans>
<ref component-id="your.server.impl" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref component-id="jsonProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>