자바 개발 웹 서비스의 몇 가지 방식을 상세히 설명하다
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 개발이 끝났습니다.이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.