통합 axis 개발 웹 서비스
14437 단어 WebServiceXMLApache네트워크 프로 토 콜Spring
기초 지식
웹 서 비 스 는 주로 각 고립 된 사이트 간 의 정 보 를 서로 통신 하고 공유 할 수 있 도록 하 는 인터페이스 이다.웹 서 비 스 는 HTTP,XML,SOAP(단순 대상 접근 프로 토 콜),WSDL 등 인터넷 상에 서 통일 되 고 개 방 된 표준 을 사용 하기 때문에 웹 서 비 스 는 이러한 표준 을 지원 하 는 모든 환경(Windows,Linux)에서 사용 할 수 있다.
Axis 는 세 가지 웹 서비스의 배치 와 개발 을 지원 합 니 다.각각 다음 과 같 습 니 다.
1、Dynamic Invocation Interface ( DII)
2.Stubs 방식
3.동적 프 록 시 방식
명사 해석:
SOAP 프로 토 콜(Simple Object Access Protocal,간단 한 대상 접근 프로 토 콜)은 분산 과 분포 식 환경 에서 네트워크 정보 교환 을 위 한 XML 기반 통신 프로 토 콜 입 니 다.이 프로 토 콜 에서 소프트웨어 구성 요소 나 응용 프로그램 은 표준 HTTP 프로 토 콜 을 통 해 통신 할 수 있다.그의 디자인 목 표 는 바로 단순 성과 확장 성 이다.이것 은 대량의 이 구조 프로그램 과 플랫폼 간 의 상호작용 성에 도움 이 되 고 존재 하 는 응용 프로그램 이 광범 위 한 사용자 에 게 접근 할 수 있 도록 한다.
WSDL(네트워크 서비스 설명 언어,Web Services Description Language)은 XML 형식 으로 네트워크 서 비 스 를 문서 정보 나 프로 세 스 정 보 를 포함 하 는 정 보 를 조작 하 는 데 사용 된다.이 형식 은 먼저 조작 과 메시지 에 대해 추상 적 으로 설명 한 다음 에 구체 적 인 네트워크 프로 토 콜 과 메시지 형식 에 연결 하여 점 을 정의 합 니 다.관련 된 구체 적 인 단점 은 바로 조합 이 추상 적 인 단점(서비스)이 되 는 것 이다.
UDDI(유 니 버 설 설명,발견 과 통합 서비스,Universal Description,Discovery and Integration)의 목적 은 전자 상 거래 를 위 한 표준 을 세 우 는 것 이다.UDDI 는 웹 기반 의 분포 식,웹 서비스 에 제공 되 는 정보 등록 센터 의 실현 표준 규범 이자 기업 이 자신 이 제공 하 는 웹 서 비 스 를 등록 하여 다른 기업 이 발견 할 수 있 도록 하 는 방문 협의의 실현 기준 도 포함한다.
JAXP(Java API for XML Parsing)는 자바 에서 DOM,SAX,XSLT 를 사용 하 는 일반적인 인 터 페 이 스 를 정의 합 니 다.이렇게 하면 프로그램 에서 일반적인 인 터 페 이 스 를 사용 하기 만 하면 구체 적 인 실현 을 바 꿀 필요 가 있 을 때 코드 를 수정 할 필요 가 없다.
JAXM(Java API for XML Messaging)은 SOAP 통신 에 접근 방법 과 전송 메커니즘 을 제공 하 는 API 다.
둘째,axis 를 사용 하여 웹 서 비 스 를 개발 하 는 예 1
(1)발표 할 서버 프로그램
package com.logcd.webservice;
import com.logcd.model.OpResult;
public class Calculator {
public int add(int i1, int i2) {
return i1 + i2;
}
public int subtract(int i1, int i2) {
return i1 - i2;
}
public int multiply(int i1, int i2) {
return i1 * i2;
}
public int divide(int i1, int i2) {
return i1 / i2;
}
public OpResult getOpResult(int i1, int i2){
OpResult result = new OpResult();
result.setSum(add(i1, i2));
result.setDifference(subtract(i1, i2));
result.setProduct(multiply(i1, i2));
result.setQuotient(divide(i1, i2));
return result;
}
}
(2)웹.xml 에 Axis Servlet 설정
Apache-Axis Servlet
AxisServlet
org.apache.axis.transport.http.AxisServlet
AxisServlet
/servlet/AxisServlet
AxisServlet
*.jws
AxisServlet
/services/*
(3)정적 게시 파일 server-config.wsdd 설정
http://xml.apache.org/axis/wsdd/
http://axis.userguide.samples
(4)호출 테스트
package com.logcd.webservice;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class CalcTest {
public static void main(String [] args) throws Exception {
try{
String endpoint = "http://127.0.0.1/js_test/services/Calculator";
Integer i1 = new Integer(1000);
Integer i2 = new Integer(1009);
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName("add");
call.addParameter("i1", XMLType.XSD_INT, ParameterMode.IN);
call.addParameter("i2", XMLType.XSD_INT, ParameterMode.IN);
call.setReturnType(XMLType.XSD_INT);
Integer ret = (Integer) call.invoke(new Object[] {i1, i2});
System.out.println("Got result : " + ret);
}
catch(Exception e){
e.printStackTrace();
}
}
}
package com.logcd.webservice;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import com.logcd.model.OpResult;
public class ObjResultTest {
public static void main(String[] args) throws Exception {
try {
String endpoint = "http://127.0.0.1/js_test/services/Calculator";
Integer i1 = new Integer(1009);
Integer i2 = new Integer(1000);
Service service = new Service();
Call call = (Call) service.createCall();
QName qn = new QName("urn:BeanService","resp");
// bean
call.registerTypeMapping(OpResult.class, qn,
new BeanSerializerFactory(OpResult.class, qn),
new BeanDeserializerFactory(OpResult.class, qn));
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://axis.userguide.samples","getOpResult"));
OpResult ret = (OpResult) call.invoke(new Object[] { i1, i2 });
System.out.println("the operation result following:");
System.out.println("sum = " + ret.getSum());
System.out.println("difference = " + ret.getDifference());
System.out.println("product = " + ret.getProduct());
System.out.println("quotient = " + ret.getQuotient());
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.예 2.Spring 의 ServletEndpoint Support 를 사용 하여 웹 서 비 스 를 실현 합 니 다.
(1)인터페이스 와 실현
package com.logcd.service;
public interface IHelloWorld {
public String getMessage(String name);
}
package com.logcd.service.impl;
import com.logcd.service.IHelloWorld;
public class HelloWorldImpl implements IHelloWorld {
private String helloStr;
public String getMessage(String name) {
return helloStr + ":" + name;
}
public String getHelloStr() {
return helloStr;
}
public void setHelloStr(String helloStr) {
this.helloStr = helloStr;
}
}
(2),ServletEndpoint Support 사용
package com.logcd.webservice;
import javax.xml.rpc.ServiceException;
import org.springframework.remoting.jaxrpc.ServletEndpointSupport;
import com.logcd.service.IHelloWorld;
public class JaxRpcHelloWorld extends ServletEndpointSupport implements IHelloWorld{
private IHelloWorld helloWorld;
protected void onInit() throws ServiceException {
// Spring Bean
helloWorld = (IHelloWorld) getApplicationContext().getBean(
"helloWorld");
}
public String getMessage(String name){
return helloWorld.getMessage(name);
}
}
(3),웹.xml,applicationContext.xml
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
axis
org.apache.axis.transport.http.AxisServlet
2
axis
/services/*
Say Hello to :
(4)、server-config.wsdd
(5)、테스트
package com.logcd.test;
import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class testWebServiceClient {
public static void main(String[] args) {
try {
String wsdlUrl = "http://localhost:8088/webService/services/HelloWorld?wsdl";
String nameSpaceUri = "http://localhost:8088/webService/services/HelloWorld";
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
System.out.println(">>>getMessage");
call.setOperationName(new QName(nameSpaceUri, "getMessage"));
call.setTargetEndpointAddress(new URL(wsdlUrl));
String ret = (String) call.invoke(new Object[] { "ABC" });
System.out.println("return value is " + ret);
} catch (Exception e) {
e.printStackTrace();
}
}
}
다운로드 횟수:64
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
귀멸의 칼날, 토호를 멸비정상적인 고부하에 대비하는 것은 쉽지 않은 것은 중대한 인식에 있습니다. 10/13(화) 00:00:00←예매권의 좌석 지정・신규 감상권 구입 접수 개시 나도 귀멸의 칼 팬 중 한 명으로 예매권을 구입하고 좌석 지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.