cxf 클 라 이언 트 의존 서버 와 서버 에 의존 하지 않 는 두 가지 실현 방식
2622 단어 CXF
package com.ws.cxf.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
public class Client {
public static void main(String[] args) {
//********** *****************
/*
* // WebService
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// WebService
factory.setServiceClass(IHelloWorld.class);
// WebService
factory.setAddress("http://localhost:8080/cxfTest/webservice/HelloWorld");
IHelloWorld iHelloWorld = (IHelloWorld) factory.create();
System.out.println(iHelloWorld.sayHello("jim"));
*/
//********** *****************
JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();
org.apache.cxf.endpoint.Client client = clientFactory.createClient("http://localhost:8080/cxfTest/webservice/HelloWorld?wsdl");
try {
Object[] result = client.invoke("sayHello", "jim");//invoke( , )
System.out.println(result[0]);
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
주의:
서버 쪽 에 의존 하지 않 을 때 인터페이스의 실현 류 는 @ WebService 에 표 공간 을 추가 해 야 합 니 다. 그렇지 않 으 면 이상 이 발생 합 니 다.
org.apache.cxf.common.i18n.UncheckedException: No operation was found with the name {http://daoImpl.cxf.ws.com/}sayHello. at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:331) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:325) at com.ws.cxf.client.Client.main(Client.java:25)
인터페이스 구현 클래스 는 다음 과 같 습 니 다.
package com.ws.cxf.daoImpl;
import javax.jws.WebService;
import com.ws.cxf.dao.IHelloWorld;
@WebService(endpointInterface="com.ws.cxf.dao.IHelloWorld",
serviceName="helloWorld",
targetNamespace="http://dao.cxf.ws.com/")
public class HelloWorldImpl implements IHelloWorld{
public String sayHello(String username) {
System.out.println("sayHello() is called");
return username +" helloWorld";
}
}
targetNamespace="http://dao.cxf.ws.com/" ,
Web Service WSDL XML XML 。
Web Service 。( )