xfire 웹 서비스 강좌

저자: Thirdteen Devil 13요괴
qq: 181907667
 
설명: 이 예는 웹 서비스 전달의 사용자 정의 대상을 해결할 수 있다
 
서버의 파일 및 설정
 
웹에서.xml xfire servlet 설정
XFireServlet org.codehaus.xfire.transport.http.XFireConfigurableServlet XFireServlet /servlet/XFireServlet/* XFireServlet /services/*
 
게시할 프로그램의 인터페이스 IUserService를 설정합니다.java
package com.devil13th.xfire; import java.util.List; public interface IUserService { public String msg(String g); public User findUsr(String usrName); public List getAllUsr(); }
주의: getAllUsr가 되돌아오는 형식은List 형식입니다. 만약 jdk1이라면.4 또는 다음 버전은 다음 파일을 추가할 것입니다. 발표된 인터페이스 (IUser Service) 와 같은 디렉터리에 놓으십시오.파일의 이름은 인터페이스와 같아야 합니다. (인터페이스 이름. aegis.xml) jdk1이면.5이상 범용을 사용하면 IUser Service를 사용할 수 있습니다.aegis.xml:
XFireServlet org.codehaus.xfire.transport.http.XFireConfigurableServlet XFireServlet /servlet/XFireServlet/* XFireServlet /services/*
 
게시할 프로그램의 인터페이스를 UserServiceImpl로 만듭니다.java
package com.devil13th.xfire; import java.util.ArrayList; import java.util.List; public class UserServiceImpl implements IUserService{ public String msg(String g){ System.out.println(g); return g; }; public User findUsr(String usrName){ User u = new User(); u.setName(usrName); return u; } public List getAllUsr(){ List l = new ArrayList(); for(int i = 0 ; i < 5 ; i++){ User u = new User(); u.setName("name_"+ i); l.add(u); } return l; } }
 
필요한 User 클래스 User.java
package com.devil13th.xfire; public class User { public String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
 
서비스 설정xml
userService userServiceTest com.devil13th.xfire.IUserService com.devil13th.xfire.UserServiceImpl
그 중에서name은 서비스 이름입니다. 다음에 웹 주소를 입력하는 데 사용됩니다. 서비스클래스는 서비스 인터페이스의 이름입니다. 서비스클래스는 서비스 인터페이스의 실현 클래스입니다.xml은 src/META-INF/xfire 디렉터리에 놓고classes 디렉터리에 생성됩니다.
주의는 src 아래의 META-INF입니다. 웹루트 아래의 META-INF가 아닙니다. 최근에 몇몇 친구들은 Spring2를 사용하기 때문에.0 이상 버전에서는 다음과 같은 예외가 발생합니다. ERROR - Error initializing XFireServlet.org.springframework.beans.factory.BeanDefinitionStoreException: Unrecognized xbean element mapping: beans in namespace http://xfire.codehaus.org/config/1.0다음과 같이 변경하면 됩니다.
userService userServiceTest com.devil13th.xfire.IUserService com.devil13th.xfire.UserServiceImpl
 
테스트 서비스:
서비스를 열고 주소 표시줄에 http://127.0.0.1:8080/xfire/services/userService?wsdl 입력한 결과는 xml로 구축이 성공했음을 의미할 것입니다.
 
 
다음은 클라이언트 호출입니다
인터페이스 IUserService를 설정합니다.java
package com.devil13th.client; import java.util.List; import com.devil13th.xfire.User; public interface IUserService { public String msg(String g); public User findUsr(String usrName); public List getAllUsr(); }
이 인터페이스는 서버 인터페이스와 일치해야 합니다. getAllUsr가 되돌아오는 형식은List 형식입니다. 만약 jdk1이라면.4 또는 다음 버전은 다음 파일을 추가할 것입니다. 발표된 인터페이스 (IUser Service) 와 같은 디렉터리에 놓으십시오.파일의 이름은 인터페이스와 같아야 합니다. (인터페이스 이름. aegis.xml) jdk1이면.5 이상은 일반형을 사용하면 됩니다. 이 인터페이스와 xml 파일은 서버 측의 인터페이스와 xml 파일을 직접 복사할 수 있습니다.
 
인터페이스에 사용할 bean User를 설정합니다.java
package com.devil13th.xfire; public class User { public String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
특히 주의: 이 bean의 명칭과 가방 이름은 반드시 서버에서 사용하는 bean과 같아야 한다!!!
 
클라이언트 호출
package com.devil13th.client; import java.util.List; 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 com.devil13th.xfire.User; public class ClientTest { public static void main(String[] args) { Service serviceModel = new ObjectServiceFactory() .create(IUserService.class); XFireProxyFactory factory = new XFireProxyFactory(XFireFactory .newInstance().getXFire()); String helloWorldURL = "http://127.0.0.1:8080/xfire/services/userService"; try {IUser Service ts = (IUser Service) factory.create(서비스 모델, hello WorldURL),//msg 방법은 System.out.println(ts.msg("22")),//findUsr 방법은 User u = ts.findfindUs.findUsr('13요괴'), System.out.printntln(u.println(u.print.println(u.print.print.printt.printt.println (uI.prints·I. I.print.prints·Itytytyty ((IUservicet Service))),///get e (); for (int i = 0, j = l.size (); i < j ; i++){ User ux = (User)l.get(i); System.out.println(ux.getName()); } } catch (Exception e) { System.out.println(e); } } }
 
 
모든 ok입니다. 예는 첨부파일에 상세하게 적혀있어서 더 이상 쓸데없는 설명을 하지 않겠습니다.
 
 
 

좋은 웹페이지 즐겨찾기