package org.my.mycxf;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
/**
* CXF Web Service的接口
*
* @author CJY
*
*/
// targetNamespace默認是報名的倒寫http://mycxf.my.org/
@WebService
public interface HelloWorld {
@WebMethod(operationName = "SayHello")
@WebResult(name="word")
public String sayHello(@WebParam(name = "name") String name,
@WebParam(name = "address") String address,
@WebParam(name = "email") String email);
}
這是接口的實現
package org.my.mycxf;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
/**
* HelloWorld的實現類
* @author CJY
*
*/
@WebService(endpointInterface="org.my.mycxf.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
@WebMethod(operationName = "SayHello")
@WebResult(name="word")
@Override
public String sayHello(@WebParam(name = "name") String name,
@WebParam(name = "address") String address,
@WebParam(name = "email") String email) {
// TODO Auto-generated method stub
return "你好:"+name+";你的地址是:"+address+";郵箱是:"+email;
}
}
這是客戶端的調用
但是在客戶端調用會有異常
2015-2-1 18:43:06 org.apache.cxf.common.jaxb.JAXBUtils logGeneratedClassNames
信息: Created classes: org.my.mycxf.ObjectFactory, org.my.mycxf.SayHello, org.my.mycxf.SayHelloResponse
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:10: 警告:編碼 GBK 的不可映射字符
* <p>SayHello complex type鐨?Java 綾匯?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:10: 警告:編碼 GBK 的不可映射字符
* <p>SayHello complex type鐨?Java 綾匯?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:12: 警告:編碼 GBK 的不可映射字符
* <p>浠ヤ笅妯″紡鐗囨鎸囧畾鍖呭惈鍦ㄦ綾諱腑鐨勯鏈熷唴瀹廣?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:43: 警告:編碼 GBK 的不可映射字符
* 鑾峯彇name灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:43: 警告:編碼 GBK 的不可映射字符
* 鑾峯彇name灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:43: 警告:編碼 GBK 的不可映射字符
* 鑾峯彇name灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:55: 警告:編碼 GBK 的不可映射字符
* 璁劇疆name灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:55: 警告:編碼 GBK 的不可映射字符
* 璁劇疆name灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:55: 警告:編碼 GBK 的不可映射字符
* 璁劇疆name灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:67: 警告:編碼 GBK 的不可映射字符
* 鑾峯彇address灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:67: 警告:編碼 GBK 的不可映射字符
* 鑾峯彇address灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:67: 警告:編碼 GBK 的不可映射字符
* 鑾峯彇address灞炴?鐨勫?銆?
^
C:\Users\ADMINI~1\AppData\Local\Temp\org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory@523be-1422787386518-src\org\my\mycxf\SayHello.java:79: 警告:編碼 GBK 的不可映射字符
* 璁劇疆address灞炴?鐨勫?銆?
^
org.apache.cxf.binding.soap.SoapFault: Cannot create a secure XMLInputFactory
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:84)
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:51)
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:40)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:849)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1626)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1515)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1318)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:572)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:481)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355)
at org.my.mycxf.Test.main(Test.java:15)
--------------------------------------------------------------------------------------------------------分割線---------------------------------------------------------------------------------------------------------------------
如下是解決方法:
目前筆記本上的項目問題已經解決
1.第一步將服務端web項目的默認編碼設置成UTF-8
右鍵項目名稱properties>resource>text file encoding>other>UTF-8
2.在web.xml中加入:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.在客戶端項目中
右鍵項目名稱properties>resource>text file encoding>other>UTF-8
然後項目重新編譯一下問題就解決了
另外請確定服務端的jar包是否齊全如果不齊會報錯:Cannot create a secure XMLInputFactory