WebService CXF 학습 (입문 편 2): HelloWorld 예시

5296 단어 WebServicesCXF
이론 은 실제 와 연계 되 어 이론 만 을 말 하면 탁상공론 이 되 고 Hello World Demo 로 일 을 더욱 직관 적 으로 설명 할 수 있다.그럼 설명 을 시작 하 겠 습 니 다.   먼저 apache 공식 네트워크 에 가서 apache - cxf - 2.2.2 를 다운로드 합 니 다. (현재 더 높 은 버 전 2.4) 주소 가 있 습 니 다.http://cxf.apache.org/    자바 프로젝트 를 새로 만 듭 니 다. cxf 상용. jar 패 키 지 를 가 져 옵 니 다. cxf 상용 jar 패 키 지 는 다음 과 같 습 니 다.
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 서버 를 가지 고 있 기 때문에) 인터페이스 가 성공 적 으로 발표 되 었 는 지 확인 합 니 다. 예 를 들 어 브 라 우 저 페이지 에 아래 내용 을 표시 하여 인터페이스 가 성공 적 으로 발표 되 었 음 을 증명 합 니 다.    마지막 으로 클 라 이언 트 프로그램 을 실행 합 니 다.

좋은 웹페이지 즐겨찾기