CXF
CXF는 XFIRE를 기반으로 구현됩니다.
1) 우선, 그것은 여전히 패키지의 문제입니다. http://cxf.apache.org/download.html에서 최신 버전의 CXF를 다운로드 할 수 있습니다. 물론 최신 버전을 사용합니다. 다음은 넌센스입니다. 웹 프로젝트를 작성하여 항아리 패키지에 넣습니다. 우리는 항아리 패키지를 선택하지 않고 모두 넣습니다.
우리는 그것이 스프링의 항아리 패키지를 포함하고 있음을 알게 될 것입니다. 웹 프로젝트로 CXF를 배포 해야하는 경우 스프링 구성 파일을 사용해야하며 나중에 설명합니다.
또는 인터페이스 클래스 및 구현 클래스 :
@webservice public interface ireaderservice {public reader getReader (@WebParam (name = "name") 문자열 이름,@webparam (name = "password") 문자열 암호); 공개 목록 <Leader> getReaders (); } @webservice (endpointinterface = "com.cxf.servlet.ireaderService", serviceName = "readerService") public class readerservice emperments inreaderservice {@webparam (name = "name") 문자열 이름,@webparam (name = "password") {name new Reader (password, password); } public list <Leater> getReaders () {list <Leasher> readerList = new ArrayList <Reader> (); readerList.Add (새 독자 ( "Shun1", "123")); readerList.Add (새 독자 ( "Shun2", "123")); 리턴 리더리스트; }} 주석을 추가하는 것을 제외 하고이 두 클래스는 어제 언급 한 것과 동일합니다. 나는 여기서 그것에 대해 이야기하지 않을 것입니다. 주석에 대한 설명은 Javaee 문서를 살펴볼 수 있습니다. 그러나 의미에 따라 이해하기 쉽습니다.
다음은 Javabean 또는 독자 수업입니다.
공개 클래스 리더 {private static final long serialversionuid = 1L; 개인 문자열 이름; 개인 문자열 비밀번호; public reader () {} public reader (문자열 이름, 문자열 암호) {this.name = name; this.password = 비밀번호; } // get/set method ovist public string toString () {return "name :"+name+", password :"+password; }} 위의 내용이 작성되었습니다.
2) 웹 프로젝트로 사용하고 싶습니까? 걱정하지 마세요. 지금 사용하지 마십시오. CXF에는 가벼운 컨테이너 서비스가 제공되며 IOC 컨테이너를 제공하는 스프링 자체와 동일합니다. 우리는 그것을 사용하여 배포가 성공했는지 테스트 할 수 있습니다.
테스트 수업을 받자 :
public static void main (String [] args) {System.out.println ( "서버가 시작 중 ..."); readerService readerService = 새로운 readerService (); endpoint.publish ( "http : // localhost : 8080/readerservice", readerservice); System.out.println ( "서버가 시작되었습니다 ..."); } 매우 간단합니다. 주소를 직접 게시 한 다음 인터페이스 또는 클래스를 지정해도 괜찮습니다. 여기서 수업을 사용하고 있지만 인터페이스를 사용하려고합니다. 결국 인터페이스 지향 프로그래밍은 실제 객체 지향 아이디어입니다.
결과를보기 시작하겠습니다.
스타트 업이 완료된 다음 브라우저를 시작하여 성공했는지 확인합니다.
브라우저에 http : // localhost : 8080/readerservice? wsdl을 직접 입력하십시오.
WSDL 파일을 생성하여 성공적으로 배포했음을 나타냅니다.
3) 배포가 성공하면 호출합니다. 그 호출도 매우 간단합니다. Xfire와 유사합니다. 인터페이스를 얻은 다음 로컬 클래스와 같은 메소드를 호출 할 수 있습니다.
public static void main (String [] args) {jaxwsproxyfactorybean factorybean = new jaxwsproxyfactorybean (); FactoryBean.SetServiceClass (ireaderservice.class); FactoryBean.setAddress ( "http : // localhost : 8080/readerservice"); ireaderservice readerService = (ireaderservice) factorybean.create (); Reader Reader = readerService.getReader ( "Shun", "123"); System.out.println ( "Reader :"+Reader); } 여기에서 매우 간단합니다. 공장 클래스를 얻은 다음 인터페이스 및 주소를 직접 설정하고 해당 인터페이스를 얻기 위해 작성할 수 있습니다. Xfire와 마찬가지로 먼저 인터페이스 프로토 타입을 정의해야합니다. 그렇지 않으면 이러한 통화는 시작할 방법이 없습니다.
우리는 결과를 얻기 위해 실행합니다.
문제 없습니다. 우리가 예상 한 결과와 일치합니다.
4) 그러나 대부분의 경우, 우리는 웹 서비스와 응용 프로그램이 두 서버를 분리하는 것을 원하지 않지만 동일한 컨테이너, Tomcat 또는 Jboss 또는 기타에 있으므로 웹을 통해 이전에 완료 한 웹 서비스를 배포해야합니다.
여기서는 스프링 정의 파일을 사용해야합니다.
먼저 web.xml을보십시오 :
<? xml version = "1.0"encoding = "utf-8"?> <web-app xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xmlns = "http://java.sun.com/xml/ns/javaee" xmlns : web = "http://java.sun.com/xml/ns/javaee"xmlns : web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id = "webapp_id"version = "3.0"> context-param> <Param-value> Web-value/beans.xml </param-value> </context-param> <layer> <layer-class> org.springframework.web.context.contextloaderListener </Lister> <servlet> <servlet-name> cxfservletlet </servlet-name> <Servlet-class> org.apache.cxf.transport.servlet.cxfservlet.cxfservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> cxfservlet </servlet-name> <url-pattern>/webservice/*</url-pattern> </servlet-mapping> </web-appp>
여기에서 매우 간단합니다. 스프링 리스너와 해당 구성 파일 경로를 지정하고 CXF 인터 셉션 방법을 지정하십시오.
다음으로 Beans.xml을 살펴보십시오.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : jaxws = "http://cxf.apache.org/jaxws"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spride-beans/spronans http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd "> import resource ="classpath : meta-inf/cxf/cxf.xml "/> <classpath : meta-inf/cxf/cxf-exf-extsension-sop.xml Resource = "ClassPath : Meta-Inf/CXF/CXF-EXTENCE-SOAP.XML"/> <import resource = "ClassPath : Meta-Inf/CXF/CXF-Servlet.xml"/> <jaxws : endpoint id = "readerServicce2"구현 자 = "com.cxf.servlet.Readerservice" "/readerVice2" "
여기에서 매우 간단합니다. jaxws : endpoint를 통해 웹 서비스를 정의하십시오. 구현자는 웹 서비스의 처리 클래스이며 주소는 이전에 쓴 독자 서비스와 유사한 액세스 경로입니다.
현재 Tomcat에 배포 할 수 있으며 http : // localhost : 8080/cxfwebservice/webservice/readerservice2? wsdl을 통해 직접 액세스 할 수 있습니다.
일부 친구들은 이번에 방문한 URL이 이전과 다른 이유를 묻습니다. 실제로 이전 액세스 주소는 직접 정의되며 여기의 웹 서비스 주소는 구성 파일에 구성되며 웹 프로젝트를 통해 배포됩니다. 프로젝트 이름은 여기에서 필요하며 CXFServlet의 웹 서비스로 URL 패턴을 구성하므로 최종 URL은 위와 동일합니다.
우리는 효과를 볼 수 있습니다.
이것은 우리의 배포가 성공했음을 증명합니다.
이전 테스트 클래스를 사용하여 다시 테스트 할 수 있습니다. 게시 한 URL로 주소를 수정해야합니다.
CXF는 XFIRE보다 조금 더 간결합니다. 주석이 약간 추가되지만 무해합니다. 이전 Services.xml의 정보를 클래스에 집중시켜 유지하기에 더 편리합니다. 그러나 이것은 여전히 의견의 문제입니다. 어떤 사람들은 구성 파일을 좋아하고 다른 사람들은 그렇지 않습니다. 또한 CXF의 호출 방법은 더 간결하며 XFIRE보다 코드 볼륨이 작아서 큰 개선입니다.
일부 친구는 건설 과정에서 문제가 있으므로 하나씩 답장을받지 못하게됩니다. 코드는 여기에서 출시됩니다. 도움이 필요한 친구들은 그것을 다운로드 할 수 있습니다.
LIB 디렉토리의 모든 패키지를 넣지 않으므로 모든 패키지를 CXF에 넣으십시오.
참고 : 사용 된 IDE는 아이디어이며 파일 구조는 일식에 공통적이지 않습니다. Eclipse에서 사용해야하는 경우 코드와 파일을 Eclipse의 새로 생성 된 프로젝트에 직접 복사 할 수 있습니다.
저지
기본 사용법을 살펴 보겠습니다.
프로젝트를 살펴 보겠습니다. 프로젝트를 시작하기 전에 패키지를 직접 다운로드해야합니다 : https://maven.java.net/content/repositories/releases/com/sun/jersey/는 예제를 실행해야합니다. 서버와 클라이언트를 모두 다운로드해야합니다. 물론 많은 것을 찾고 싶지 않으므로이 zip 패키지를 직접 다운로드 할 수 있습니다. https://maven.java.net/service/local/artifact/maven/redirect?r=releases&g=com.sun.jersey&a=jersey-archive&v=1.10&e=zip
1) Javabean을하십시오
@xmlrootelement 공개 클래스 리더는 시리얼이즈 가능한 {private static final long serialversionuid = 1l을 구현합니다. 개인 문자열 이름; 개인 문자열 비밀번호; public reader () {} public reader (문자열 이름, 문자열 암호) {this.name = name; this.password = 비밀번호; } // get/set 메소드를 생략하십시오 public String toString () {return "name :"+name+", password :"+password; }} 여기에는 태그가 사용되며, 이는 반환시 유형을 나타냅니다. 즉,이 리더 클래스는 XML 리턴에 사용할 수 있습니다.
2) 서비스 클래스를 사용하려면 더 이상 과거에 CXF 및 XFIRE와 같은 인터페이스가 필요하지 않습니다. 수업을 직접 사용하십시오.
@Path ( "/readerService/{name}/{password}")) public class readerService {@get @produces (mediaType.application_json) 공개 독자 getReader (@PathParam ( "이름") 문자열 이름, @pathparam ( "password") {return new Reader (이름, 암호); } public static void main (string [] args)은 불법 행위 exception, ioException, urisyntaxException {httpserver server = httpserVerfactory.create ( "http : // localhost : 8080/"); server.start (); }} 현재 몇 개의 태그가 사용되었습니다. Path는 SpringMVC를 사용한 친구들이 URL 일치하는 이러한 글쓰기 방식을 알아야한다고 생각합니다. 당신이 명확하지 않다면, 당신은 가서 먼저 볼 수 있습니다. get 태그는이 메소드가 Get 메소드를 통해서만 액세스 할 수 있음을 나타내며, 생성은 생성 된 결과를 나타내므로 시스템이 리더 객체를 JSON 결과로 둘러싸고 반환합니다.
당신이 이해하지 못하든 상관없이, 당신은 잠시 후에 그것을 이해할 수 있습니다.
그리고 현재 주요 방법이 있습니다. 큰 질문이 있다고 생각합니다. 이것은 저지가 제공하는 가벼운 내부 컨테이너입니다. 우리가 디버깅하는 데 일시적으로 사용될 수 있지만 실제로 사용하는 것은 불가능합니다.
3) 테스트 클래스를 작성합시다
Public Class ReaderClient {public static void main (String [] args) {client client = client.create (); Webresource resource = client.resource ( "http : // localhost : 8080/readerservice/shun/123213"); Reader Reader = resource.get (reader.class); System.out.println (Reader); }} 매우 간단한 코드, 당신은 그것을 이해해야합니다. 클라이언트 객체는 웹 서비스를 요청하고 리소스를 반환 한 다음 리소스가 해당 메소드를 직접 호출합니다. 물론이 방법은 URL을 통해 일치합니다.
여기서는 먼저 가벼운 서비스로 테스트합니다. 주요 방법이 포함 된 readerService를 직접 실행하십시오. 실행 후, 우리는 ReaderClient를 실행하고 결과가 다음을 알 수 있습니다.
결과가 정확합니다.
물론 우리는 서버로 제공되는 경량 서비스를 사용하고 싶지 않습니다. Tomcat, Jboss 등과 같은 프로젝트와 동일한 서버에 넣어야합니다.
4) 물론 Web.xml은 웹 프로젝트에 없어서는 안될 것입니다.
<? xml version = "1.0"encoding = "utf-8"?> <web-app xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xmlns = "http://java.sun.com/xml/ns/javaee" xmlns : web = "http://java.sun.com/xml/ns/javaee"xmlns : web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id = "webapp_id"version = "3.0 <servlet> <servlet-name> <Servlet-Class> com.sun.jersey.spi.container.servlet.servletcontainer </servletcontainer </servletcontup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> Jersey Web Application </servlet-name> <Url-pattern>/</url-pletn> </servletn> <Welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app>
현재 지정된 모든 휴식 경로는 저지가 가로 채립니다.
우리는 Tomcat에 배포하여 시작한 다음 ReaderClient를 다시 실행합니다. 먼저 리소스 경로를 수정해야합니다.
Webresource Resource = Client.Resource ( "http : // localhost : 8080/jerseywebservice/rest/readerservice/shun/123213");
내 프로젝트 이름은 JerseyWebservice입니다. 프로젝트 이름에 따라 수정하십시오.
수정 후 다시 실행되며 결과는 다음과 같습니다.
위의 결과와 일치하면 배포 효과가 동일하고 정확하다는 것을 의미합니다.