CXFf 클라이언트는 서버에 의존하고 서버에 의존하지 않는 두 가지 실현 방식

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/"이름 공간입니다
  • 웹 서비스에서 생성된 WSDL 및 XML 요소의 XML 이름 공간을 지정합니다. 
  • 기본값은 웹 서비스가 포함된 패키지 이름에서 매핑된 이름 공간입니다.(문자열)
  • 좋은 웹페이지 즐겨찾기