3

现在有一个最奇怪的问题 - 有一个 Spring XML 文件,其中 jaxws:client 的地址属性使用地址属性的属性占位符,但它拒绝解析地址属性。

这是日志文件错误:

    引起:java.net.MalformedURLException:无协议:${member.service.uri}
    在 java.net.URL.(URL.java:567) ~[na:1.6.0_33]
    在 java.net.URL.(URL.java:464) ~[na:1.6.0_33]
    在 java.net.URL.(URL.java:413) ~[na:1.6.0_33]
    在 org.apache.cxf.transport.http.HTTPConduit.setupURL(HTTPConduit.java:700) ~[cxf-   
    捆绑-2.6.0.jar:2.6.0]
    在 org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:474) ~[cxf-  
    捆绑-2.6.0.jar:2.6.0]
    在 org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46) ~[cxf-api-2.6.0.jar:2.6.0]
    ...省略了43个常用框架

这是我的 Spring XML 文件的摘录:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:http="http://cxf.apache.org/transports/http/configuration"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"   \
xmlns:sec="http://cxf.apache.org/configuration/security"
xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="
http://www.springframework.org/schema/context  
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/beans    
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/transports/http/configuration   
http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://www.springframework.org/schema/context  
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://cxf.apache.org/configuration/security  
http://cxf.apache.org/schemas/configuration/security.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">    
<http:conduit name="https://.*">
<http:tlsClientParameters>
<sec:trustManagers>
<sec:keyStore type="JKS" password="${jkspass}" file="${jkslocation}" />
</sec:trustManagers>
</http:tlsClientParameters>
<http:client AutoRedirect="true" Connection="Keep-Alive" />
</http:conduit> 
<!-- Member Service -->
<!--<bean id="memberServiceProxy" class="com.loyalty.tp.ets.common.member.ws.Member" 
factory-bean="memberServiceProxyFactory" factory-method="create"/>  --> 
<jaxws:client id="memberServiceProxy"
serviceClass="com.loyalty.tp.ets.common.member.ws.Member"   
address="${member.service.uri}">
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature" />
</jaxws:features>
</jaxws:client> 
<bean id="memberServiceProxyFactory" 
 class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.loyalty.tp.ets.common.member.ws.Member"/>
<property name="address" value="${member.service.uri}"/>
</bean> 
<!-- ETS Collector Service -->
<bean id="collectorServiceProxy" class="com.loyalty.tp.ets.collectorservice.Collector" 
factory-bean="collectorServiceProxyFactory" factory-method="create"/>

<bean id="collectorServiceProxyFactory" 
class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.loyalty.tp.ets.collectorservice.Collector"/>
<property name="address" value="${ets.collector.service.uri}"/>
</bean> 
</beans>

它解决了${jksLocation}并且${jkspassword}很好。这里发生了什么 ?

4

1 回答 1

0

某些版本的 cxf 和 spring 之间似乎不兼容,请尝试找到一对可以一起工作的对象。

我有camel-cxf:2.12.0.redhat-610379,它带来了cxf 2.7.0和spring 3.2.8.RELEASE,一切都很好

于 2015-11-18T13:45:02.420 回答