[자바 기반] - 웹 서비스 인 터 페 이 스 를 호출 하 는 방법
인터페이스 안의 방법 은 2 가지 가 있 습 니 다. 1. Public Student addStudent (Student stu) throws Exception;2、public Student removeStu(int id)throws Exception;
1. 웹 서비스 프로젝트 에서 테스트 사용
package test;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import service.interfaces.MyService;
import bean.Student;
public class TestClient {
/**
* @ : !
* @ :yang
* @ : 2015-7-28
* @ :
* @ : @param args
* @return void
* @throws
*/
public static void main(String[] args) {
// service, ,
Service srcModel = new ObjectServiceFactory().create(MdServer.class);
// ,
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
//webservice , wsdl, tomcat , , ?wsdl
// :http://localhost:8080/MyService/services/MyService?wsdl
String RectServiceUrl = "http://localhost:8080/MyService/services/MyService";// ,
/http://ip / /services/
try {
//
MyService ms = (MyService)factory.create(srcModel,RectServiceUrl);
//
//
Student st=new Student(null," "," ",0);// 0, , 1
Student result=ms.addStudent(st);
System.out.println(" :"+result);// webService
//
Student result2=ms.removeStu(22);
System.out.println(" :"+result2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
2. 다른 항목 에서 서버 에 배 치 된 인 터 페 이 스 를 호출 합 니 다. (실제 배 치 된 것 은 war 패키지 입 니 다)
패키지 가 져 오기 기억 하기: axis - 14 http://download.csdn.net/download/xiaoyong8823/4391971
package test;
import javax.servlet.http.HttpServletResponse;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.junit.Test;
import bean.Student;
/**
* @ : !
* @ :yang
* @ : 2015-7-28
* @ :
* @ : @param args
* @return void
* @throws
*/
public class TestCall {
@Test
//
public String xslsAdd(){
String str="";
try{
//webservice ,
String endPoint="http://localhost:8080/MyService/services/MyService";
//
Service service=new Service();
Call call=(Call)service.createCall();
call.setTargetEndpointAddress(endPoint);
//
call.setOperationName("addStudent");//
call.addParameter("id", XMLType.XSD_INTEGER,ParameterMode.IN );
call.addParameter("name", XMLType.XSD_STRING,ParameterMode.IN );
call.addParameter("address",XMLType.XSD_STRING,ParameterMode.IN );
call.addParameter("status",XMLType.XSD_INT,ParameterMode.IN );
/**
* - SendExResp- ws , ,
* org.w3c.dom.Element.class, org.xml.sax.SAXException:
* SimpleDeserializer encountered a child element, which is NOT expected 。
* : , ws , :call.setReturnClass(String[].class);
*/
call.setReturnClass(org.w3c.dom.Element.class);
// , ,
Integer id=null;
String name=" ";
String address=" ";
String status=0;
// : HTTP SOAPAction ( )
call.setUseSOAPAction(true);
// String , , w3cl
call.setReturnClass(String.class);
call.setSOAPActionURI("addStudent");
// ws
// webService : , , ( , )
Student result=(Student)call.invoke("addStudent",new Object[]{id,name,address,status});
System.out.println(" , :"+result);// , ,
str="addSuccess";
}catch(Exception e){
e.printStackTrace();
return "addError";
}
return str;
}
3. 클 라 이언 트 접근 방식
1, 새로운 자바 프로젝트 2, 패키지 Xfire 1.2 코어 라 이브 러 리 와 XFire 1.2 HTTP 클 라 이언 트 라 이브 러 리 추가 3, 테스트 클래스 생 성
package com.testStudentServer;
import java.net.URL;
import org.codehaus.xfire.client.Client;
import org.junit.Test;
import org.w3c.dom.Document;
public class TestClient {
@Test
public void testAddXsls() throws Exception{
Client client =new Client(new URL("http://localhost:8080/MyService/services/MyService?wsdl"));
Object[] results=client.invoke("addStudent", new Object[]{null," "," ",0});
System.out.println(" :"+results[0]);
//
Document d=(Document)results[0];
System.out.println(d.getFirstChild().getFirstChild().getNodeValue());
/*
System.out.println(" 2:===="+d.getFirstChild());
NodeList n1=d.getElementsByTagName("addStudent");
NodeList n2=n1.item(0).getChildNodes();
System.out.println(" :"+n2.getLength());
for(int i=0;i
상기 3 단 코드 는 모두 테스트 를 거 쳐 정상적으로 사용 할 수 있 습 니 다!궁금 한 점 이 있 으 면 댓 글로 지적 해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.