对于Apache Camel来说,我一般还比较陌生,但是了解它的概念并且能够找到解决方法。我正在实现一个Web服务,供外部系统使用,并且已获得了可以使用的请求/响应格式。我现在面临的问题是响应SOAP的根元素符合我正在使用的规范,因为Camel将附加文本附加到根元素名称上。
我希望返回的响应正文如下:
<ActionResponse>
<ValueOne>000001100913103301000000000001</ValueOne>
<ValueTwo>000002</ValueTwo>
</ActionResponse>
如下所示的请求正文:
<ActionRequest>
<ValueOne>000001100913103301000000000001</ValueOne>
<ValueTwo>000002</ValueTwo>
</ActionRequest>
但当前能够返回如下响应正文:
<ActionRequestResponse>
<ValueOne>000001100913103301000000000001</ValueOne>
<ValueTwo>000002</ValueTwo>
</ActionRequestResponse>
我在没有正面解决方案的情况下尝试了关于StackOverflow,Github和互联网上其他位置的不同建议。迄今为止,最有前途的解决方案是将SOAPBinding批注设置为裸露:
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
以及将javax.jsw
添加到pom.xml
依赖项中。
成功完成此操作后,我将在已安装的依赖项列表中看到maven依赖项,但是会抛出[ERROR] Bundle com.kudimoney:kudimoney.inbound-nip-service:bundle:1.0.0 : Unresolved references to [javax.jws.soap] by class(es) on the Bundle-Classpath[Jar:dot]: [com/kudimoney/soap/NIPInterface.class]
编译时错误。从昨天开始,我一直在尝试解决此问题,但没有成功。
如果我将javax.jms.soap
添加到<Import-Package>
,则项目可以成功构建,但是由于Error executing command: Error installing bundles:
Unable to start bundle file:path/name/version.jar: org.osgi.framework.BundleException: Unable to resolve app.company.name [373](R 373.0): missing requirement [app.company.name [373](R 373.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.jws.soap)(version>=2.0.0)(!(version>=3.0.0))) Unresolved requirements: [[app.company.name [373](R 373.0)] osgi.wiring.package; (&(osgi.wiring.package=javax.jws.soap)(version>=2.0.0)(!(version>=3.0.0)))]
捆绑包异常而无法在Apache Karaf中启动。
有任何想法为什么会这样?