WebService CXF 학습 (입문 편 2): HelloWorld 예시
5296 단어 WebServicesCXF
1、commons-logging-1.1.1.jar2、cxf-2.4.1.jar3、geronimo-activation_1.1_spec-1.1.jar4、geronimo-annotation_1.0_spec-1.1.1.jar5、geronimo-javamail_1.4_spec-1.7.1.jar6、geronimo-jaxws_2.2_spec-1.0.jar7、geronimo-servlet_3.0_spec-1.0.jar8、geronimo-stax-api_1.0_spec-1.0.1.jar9、geronimo-ws-metadata_2.0_spec - 1.1.3. jar 10, jettison - 1.3. jar 11, jetty - continuation - 7.4.2. v 20110526. jar 12, jetty - http - 7.4.2. v 20110526. jar 13, jetty - io - 7.4.2. v 20110526. jar 14, jetty - server - 7.4.2. v 20110526. jar 15, jetty - util - 7.4.2. v 20110526. jar 16, neethi - 3.0.0. jar 17, saaj - api - 1.3. jar 18, saaj - impl - 1.3.2. jar 19, serializer - 2.7.1. jarcxf 결합 spring 시 필요 한 jar 패키지 (jar) spring-asm-3.0.5.RELEASE.jar spring-beans-3.0.5.RELEASE.jar spring-context-3.0.5.RELEASE.jar spring-core-3.0.5.RELEASE.jar spring-expression-3.0.5.RELEASE.jar spring-aop-3.0.5.RELEASE.jar spring-web-3.0.5.RELEASE.jar)20、wsdl4j-1.6.2.jar21、xalan-2.7.1.jar22、xercesImpl.jar23、xml-resolver-1.2.jar24、xmlschema-core-2.0.jar25、jaxb-api-2.2.1.jar ---- 웹 서 비 스 는 26, jaxb - impl - 2.2.1.1. jar 를 추가 해 야 합 니 다. - jdk 의 버 전이 이 버 전과 일치 하면 웹 서 비 스 는 서버 와 클 라 이언 트 를 추가 할 필요 가 없습니다.jdk 버 전 을 덮어 쓰 는 방법: jdk 의 설치 디 렉 터 리 에 있 는 jre \ lib \ endorsed 폴 더 (endorsed 폴 더 가 존재 하지 않 으 면 새로 만 들 수 있 음) 를 찾 으 면 jaxb - api - 2.2.1 과 jaxb - impl - 2.2.1.1 을 이 폴 더 아래 에 두 면 됩 니 다.
첫 번 째 단계: 웹 서비스 서버 인터페이스 와 구현 클래스 를 새로 만 듭 니 다.
1. 서버 인터페이스
package com.ws.services;
import javax.jws.WebService;
@WebService
public interface IHelloServices {
public String sayHelloToAll(String[] userNames);
public String[] getHelloWords();
public String sayHello(String name);
}
2. 서버 인터페이스 구현 클래스
package com.ws.services.impl;
import javax.jws.WebService;
import com.ws.services.IHelloServices;
@WebService(endpointInterface="com.ws.services.IHelloServices")
public class HelloServicesImpl implements IHelloServices {
public String[] getHelloWords() {
String[] words = {"hello vicky.","hello,i'm vicky.","hi,ivy and simon."};
return words;
}
public String sayHello(String name) {
return "hello "+name+" ! ";
}
public String sayHelloToAll(String[] userNames) {
String hello = "hello ";
for(int i=0;i
3. 웹 서 비 스 를 만 들 고 서 비 스 를 발표 합 니 다.
package com.test;
import javax.xml.ws.Endpoint;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import com.ws.services.IHelloServices;
import com.ws.services.impl.HelloServicesImpl;
import com.ws.services.impl.UserServicesImpl;
public class ServerTest {
public ServerTest(){
//
IHelloServices hello = new HelloServicesImpl();
// WebServices
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
// webservices
factory.setServiceClass(IHelloServices.class);
//
factory.setAddress("http://localhost:8090/helloServices");
factory.setServiceBean(hello);
//
factory.create();
//
//Endpoint.publish("http://localhost:8090/helloServices", new HelloServicesImpl());
}
public static void main(String[] args) {
//
new ServerTest();
System.out.println("Server ready...");
try {
Thread.sleep(1000*300); // ,
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Server exit...");
System.exit(0);
}
}
두 번 째 단계: 웹 서비스 클 라 이언 트 를 새로 만 들 고 웹 서비스의 서 비 스 를 테스트 합 니 다
1. 본 프로젝트 에서 테스트 (즉, 서버 와 클 라 이언 트 가 같은 프로젝트 에서)
package com.ws.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.ws.server.IHelloServices;
public class HelloTest {
public static void main(String[] args) {
// WebService
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// WebService
factory.setServiceClass(IHelloServices.class);
// WebService
factory.setAddress("http://localhost:8090/helloServices");
IHelloServices iHelloWorld = (IHelloServices)factory.create();
System.out.println("invoke webservice...");
String[] hellos = iHelloWorld.getHelloWords();
for(int i=0;i
2. 웹 서 비 스 를 새로 만 드 는 클 라 이언 트 테스트 프로젝트
(1) 프로젝트 를 새로 만 들 고 cxf 의 jar 가방 을 추가 합 니 다.
(2) 웹 서비스 서버 프로젝트 의 인터페이스 류 를 클 라 이언 트 프로젝트 에 복사 하고 경 로 는 계속 해 야 합 니 다.
(3) 테스트 클래스 를 새로 만 듭 니 다. 코드 는 위 와 같 습 니 다.
마지막 으로 모든 것 이 준비 되 어 테스트 만 부족 하 다. 우선, 서버 프로그램 실행 그 다음 브 라 우 저 를 열 고 주소 표시 줄 에 입력 하 십시오.http://localhost:8090/helloServices?wsdl(cxf 가 자체 적 으로 Jetty 서버 를 가지 고 있 기 때문에) 인터페이스 가 성공 적 으로 발표 되 었 는 지 확인 합 니 다. 예 를 들 어 브 라 우 저 페이지 에 아래 내용 을 표시 하여 인터페이스 가 성공 적 으로 발표 되 었 음 을 증명 합 니 다. 마지막 으로 클 라 이언 트 프로그램 을 실행 합 니 다.