자바 개발 웹 서비스의 몇 가지 방식을 상세히 설명하다

13743 단어 javawebservice
웹 서비스의 응용은 점점 광범위해지고 있다. 다음은 자바 시스템에서 웹 서비스를 개발하는 몇 가지 방식을 소개하는데 이것은 기록에 해당한다.
1.Axis2
Axis는apache의 다음 소스 웹 서비스 개발 구성 요소로 비교적 이르고 성숙한 편이다.여기서는 주로 Axis+eclipse가 웹 서비스를 개발하는 것을 소개합니다. 물론 eclipse를 사용하지 않아도 웹 서비스를 개발하고 발표할 수 있습니다. 단지 eclipse를 사용하는 것이 비교적 편리합니다.
(1) eclipse의 Java EE 버전을 다운로드합니다https://www.jb51.net/softs/239903.html#down
(2)axis2를 다운로드합니다http://axis.apache.org/axis2/java/core/download.cgi
(3) eclipse의axis2 플러그인 다운로드
Axis2_Codegen_Wizard
Axis2_Service_Archiver
http://axis.apache.org/axis2/java/core/tools/index.html
버전 1.3 권장
(4) eclipse에axis2 플러그인 설치
1) 임의의 디렉터리에 Axis2 폴더를 새로 만들고, 이 폴더에 eclipse 디렉터리를 새로 만들고, eclipse 디렉터리에plugins 디렉터리와features 디렉터리를 새로 만듭니다. 예를 들어 D:\programSoftware\eclipse-SVN\Axis2\eclipse;
2) 다운로드한axis2 플러그인을 압축해제하고 압축해제 파일을 새로 만든 eclipse의plugins 디렉터리에 놓는다.
3)%eclipse_에서홈% 디렉터리에 링크스 디렉터리를 새로 만들고 링크스 디렉터리에 axis2를 새로 만듭니다.링크 파일, 내용: path=D:\programSoftware\eclipse-SVN\Axis2;
4) eclipse를 다시 시작하고/file-new-other를 클릭하면 Axis2 Wizards가 표시되면 플러그인 설치가 성공했습니다.
(5)axis2 설치
Axis2의 WAR Distribution을 다운로드하고 압축을 풀고axis2.war 패키지를%TOMCAT_에 배치HOME%/webapps 아래,tomcat 시작, 액세스http://localhost:port/axis2, Axis2 설치에 성공했습니다.
(6) eclipse 새 웹 프로젝트를 사용하여 일반 자바 클래스를 만들고 최소한 하나의 방법을 포함합니다.
(7) 웹 서비스 발표
1) eclipse의 File-New-other를 클릭하고 Axis2 Wizards를 열고 Axis2 Service Archiver를 선택한 다음 Next;
2) Class File Location, 즉 클래스 파일 저장 경로를 선택하십시오. 주의:classes 디렉터리만 선택하고 패키지 폴더를 포함하지 마십시오. 그리고 Next;
3) Skip WSDL을 선택하고 Next
4) Select the Service XML file to be included in the Service archive에서 Generate the Service xml automatically를 선택합니다.
5) Service Name-당신의 서비스 이름, Class Name-클래스 이름을 기입하고 패키지 이름을 포함하여load를 클릭한 다음Finish를 누르면 웹 서비스가 발표됩니다.
6) 그리고%TOMCAT_HOME%/webapps/axis2/WEB-INF/서비스 하나 더 있는지 확인하세요.aar의 파일;
7) 액세스http://localhost:8085/axis2/services/유명wsdl에서 생성된 wsdl 파일을 볼 수 있습니다.
주의: 이상의 방식은axis2에 발표됩니다.war 패키지에서 당신도 생성할 수 있습니다.aar 파일copy를 실제 응용 프로그램에 적용하는 동시에 eclipse의create 웹 서비스 기능을 사용하여 웹 서비스를 발표할 수 있습니다. axis2를 선택하여 웹 서비스를 생성하면 웹 서비스가 응용 프로그램에 배치됩니다.
2.Apche CXF
CXF가 웹 서비스를 개발하는 것도 비교적 편리하고 간단한데,spring과의 통합은 매우 좋다고 할 수 있다.CXF가 웹 서비스를 개발하는 예를 들자.
1) eclipse에 웹 프로젝트를 새로 만들고 의존 패키지를 가져옵니다.
2) 다음과 같은 인터페이스를 작성합니다.

public String test(@WebParam(name="value", targetNamespace = "http://service.cxf.zcl.com/", mode = WebParam.Mode.IN)String value);
주의: CXF가 개발한 웹 서비스, 인터페이스에 있는 방법의 매개 변수는 반드시 이런 방식으로 해야 합니다. 그렇지 않으면 클라이언트가 호출할 때 CXF 서버에서 매개 변수의 값을 받지 못할 것입니다.name: 매개 변수 이름, 안 쓸 수 있습니다(쓰는 것을 권장합니다), targetNamespace: 이름 공간, 반드시 기입해야 합니다. 기본값은 패키지 이름 반대 순서입니다.mode: 매개 변수 형식, IN은 입력을 표시합니다.
3) 실현 클래스를 작성하여 인터페이스를 실현하는 방법;
4)spring과 통합하여 bean 파일을 작성합니다. 예를 들어 cxf-beans.xml, 내용은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" ?>  
<beans xmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.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/spring-beans.xsd  
            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
 
  <import resource="classpath:META-INF/cxf/cxf.xml" />  
  <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
    
  <jaxws:endpoint id="vote" implementor="com.zcl.cxf.service.VoteImpl" address="/Vote" />  
</beans> 
이 문서는 비교적 이해하기 쉬워서 설명하지 않겠다.
5) CXFSErvlet 구성
웹에서xml 파일에 CXFSERvlet을 설정하고 cxf-beans를 불러옵니다.xml 파일, 내용은 다음과 같습니다.

<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/web-app_2_5.xsd" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
  id="WebApp_ID" version="2.5">  
 
  <context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>WEB-INF/cxf-beans.xml</param-value>  
  </context-param>  
    
  <listener>  
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  </listener>  
    
  <servlet>  
    <servlet-name>cxf</servlet-name>  
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>cxf</servlet-name>  
    <url-pattern>/services/*</url-pattern>  
  </servlet-mapping>  
</web-app> 
프로젝트를tomcat과 같은 중간 부품에 배치하면 웹 서비스에 접근할 수 있습니다. 
3. JDK 개발 웹 서비스
1) 다음과 같은 Java 클래스를 작성합니다.

package demo;  
 
import javax.jws.WebParam;  
import javax.jws.WebService;  
import javax.xml.ws.Endpoint;  
 
@WebService  
public class JdkWebService {  
 
  public String doSomething(@WebParam(name="value", targetNamespace = "http://demo/", mode = WebParam.Mode.IN)String value) {  
    return "Just do it," + value + "!";  
  }  
    
  public static void main(String[] args) {  
    Endpoint.publish("http://localhost:8080/jdkwsdemo/demo.JdkWebService", new JdkWebService());  
  }  
} 
2) 이 자바 클래스를 실행하면 브라우저에서 웹 서비스에 접근할 수 있습니다.
주의: 웹 프로젝트를 개발할 때 이런 방법은 그다지 우호적이지 않다.우리는 servlet 클래스를 작성해서 servlet 클래스의 초기화 방법에서 웹 서비스를 발표할 수 있습니다. 이렇게 하면 우리의 중간부품 서버가 시작될 때 자동 웹 서비스를 도와줄 수 있습니다.
3)  xfire
WebService를 개발하는 프레임워크가 많습니다. 프레임워크마다 각자의 장점이 있습니다. 최근에 저는 xfire로 WebService를 개발하는 연습을 했습니다. 다음은 WebService를 개발하는 작은 예입니다. 입문자에게 작은 도움이 되었으면 합니다.
1. 새 자바 웹 프로젝트를 TestWebService로 명명하고 xfire와 관련된jar 패키지를lib 디렉터리에 추가하고 인터페이스 클래스와 구현 클래스를 작성합니다

package com.lamp.service;  
 
public interface MessageService {  
  public String getName(String name);  
} 

package com.lamp.service; 
 
public interface MessageService { 
  public String getName(String name); 
}
실현류

package com.lamp.service.impl;  
 
import com.lamp.service.MessageService;  
 
public class MessageServiceImpl implements MessageService {  
 
  public String getName(String name) {  
    return "hellow " + name + ", welcome to WebService world";  
  }  
 
} 

package com.lamp.service.impl; 
 
import com.lamp.service.MessageService; 
 
public class MessageServiceImpl implements MessageService { 
 
  public String getName(String name) { 
    return "hellow " + name + ", welcome to WebService world"; 
  } 
 
} 
src 디렉터리에 새 폴더 META-INF를 만들고 그 밑에 새 폴더 xfire를 만들고 xfire 디렉터리에 새 프로필 서비스를 만듭니다.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://xfire.codehaus.org/config/1.0"> 
 <service> 
  <name>MessageService</name> 
  <serviceClass>com.lamp.service.MessageService</serviceClass> 
  <implementationClass>com.lamp.service.impl.MessageServiceImpl</implementationClass> 
 </service> 
</beans> 
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://xfire.codehaus.org/config/1.0"> 
 <service> 
  <name>MessageService</name> 
  <serviceClass>com.lamp.service.MessageService</serviceClass> 
  <implementationClass>com.lamp.service.impl.MessageServiceImpl</implementationClass> 
 </service> 
</beans> 
마지막으로 웹에서.xml에서 xfire를 설정하는 servlet

<servlet> 
    <servlet-name>XFireServlet</servlet-name> 
    <servlet-class> 
      org.codehaus.xfire.transport.http.XFireConfigurableServlet  
    </servlet-class> 
  </servlet> 
 
  <servlet-mapping> 
    <servlet-name>XFireServlet</servlet-name> 
    <url-pattern>/servlet/XFireServlet/*</url-pattern> 
  </servlet-mapping> 
 
  <servlet-mapping> 
    <servlet-name>XFireServlet</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
  </servlet-mapping> 
<servlet> 
    <servlet-name>XFireServlet</servlet-name> 
    <servlet-class> 
      org.codehaus.xfire.transport.http.XFireConfigurableServlet 
    </servlet-class> 
  </servlet> 
 
  <servlet-mapping> 
    <servlet-name>XFireServlet</servlet-name> 
    <url-pattern>/servlet/XFireServlet/*</url-pattern> 
  </servlet-mapping> 
 
  <servlet-mapping> 
    <servlet-name>XFireServlet</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
  </servlet-mapping> 
프로젝트 배치 후 브라우저에서http://localhost:8080/TestWebService/services원격 접근을 볼 수 있는 인터페이스를 방문하고 wsdl을http://localhost:8080/TestWebService/services/MessageService?wsdl
이렇게 서버 측의 개발이 끝났습니다. 지금부터 클라이언트의 개발을 시작합니다.
새 자바 프로젝트도 xfire와 관련된jar를 도입합니다. 저는 ant로 클라이언트에서 프록시 대상을 생성하고 프로젝트 경로에서build를 새로 만듭니다.xml, 코드는

<?xml version="1.0" encoding="UTF-8"?> 
 
<project name="WebService" basedir="." default="gen-webservice"> 
 
  <property file="build.properties"> 
  </property> 
 
  <path id="project-classpath"> 
    <fileset dir="${lib.dir}"> 
      <include name="**/*.jar" />  
    </fileset> 
  </path> 
 
  <target name="gen-webservice"> 
    <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="project-classpath" /> 
 
    <wsgen outputDirectory="${src.dir}" 
     wsdl="${wsdl.dir}" package="com.lamp.ws.client" overwrite="true"/> 
      
  </target> 
 
</project> 

 <?xml version="1.0" encoding="UTF-8"?> 
 
<project name="WebService" basedir="." default="gen-webservice"> 
 
  <property file="build.properties"> 
  </property> 
 
  <path id="project-classpath"> 
    <fileset dir="${lib.dir}"> 
      <include name="**/*.jar" />  
    </fileset> 
  </path> 
 
  <target name="gen-webservice"> 
    <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="project-classpath" /> 
 
    <wsgen outputDirectory="${src.dir}" 
     wsdl="${wsdl.dir}" package="com.lamp.ws.client" overwrite="true"/> 
     
  </target> 
 
</project> 
도입된build.properties 파일도 프로젝트 경로 아래에 있습니다

src.dir=${basedir}/src 
lib.dir=F:/WebService/xfire-1.2.6/lib 
wsdl.dir=http://localhost:8080/TestWebService/services/MessageService?wsdl 
그중lib.jar는 xfire를 저장하는 경로입니다. ant를 실행하면 프록시 대상을 얻을 수 있습니다.
테스트 클래스 작성

package com.lamp.test;  
 
import com.lamp.ws.client.MessageServiceClient;  
import com.lamp.ws.client.MessageServicePortType;  
 
public class TestGetName {  
 
  public static void main(String[] args) {  
    MessageServiceClient msg = new MessageServiceClient();  
    MessageServicePortType portType = msg.getMessageServiceHttpPort();  
    String result = portType.getName(" ");  
    System.out.println(result);  
  }  
 
} 

package com.lamp.test; 
 
import com.lamp.ws.client.MessageServiceClient; 
import com.lamp.ws.client.MessageServicePortType; 
 
public class TestGetName { 
 
  public static void main(String[] args) { 
    MessageServiceClient msg = new MessageServiceClient(); 
    MessageServicePortType portType = msg.getMessageServiceHttpPort(); 
    String result = portType.getName(" "); 
    System.out.println(result); 
  } 
 
} 
컨트롤러에서 hellow 장삼을 보았습니다. welcome to WebService world에서 간단한 WebService 개발이 끝났습니다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기