webservice(xfire demo)
·
1.导入jar包
2.
配置1:
配置web.xml
<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>/services/*</url-pattern>
</servlet-mapping>
配置services.xml(路径WEB-INF/classes/META-INF/xfire/services.xml)
services.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>Hello</name>
<serviceClass>com.zhshch.test.IHello</serviceClass>
<implementationClass>com.zhshch.test.Hello</implementationClass>
</service>
</beans>
解释:
<service>
<name>Hello</name>//url路径的资源名字
<serviceClass>com.zhshch.test.IHello</serviceClass>//资源接口
<implementationClass>com.zhshch.test.Hello</implementationClass>//资源实现
</service>
配置2:不需要配置services.xml
配置web.xml
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
com.zhshch.servlet.MyServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
解释:
<servlet-class>
com.zhshch.servlet.MyServlet
</servlet-class>
第一个配置的servlet指向的是xfire的servlet
这个配置指向的是我们自己定义的servlet
MyServlet内容如下:
public class MyServlet extends XFireServlet{
@Override
public void init() throws ServletException {
super.init();
Service service = new ObjectServiceFactory().create(IHello.class);
service.setInvoker( new BeanInvoker( new Hello())) ;//Hello是实现类
getXFire().getServiceRegistry().register(service);
}
}
3.接口和实现类
接口:
@WebService
public interface IHello {
public String sayHello(String name) ;
public ArrayList<Integer> getList(ArrayList<Integer> it) ;
public Map<String,Object> getMap(Map<String,Object> map);
public Student getStu(Student stu) ;
}
实现类:
@WebService
public class Hello implements IHello {
public String sayHello(String name) {
System.out.println("hello world");
return name ;
}
public ArrayList<Integer> getList(ArrayList<Integer> it) {
it.add(1) ;
return it;
}
public Map<String, Object> getMap(Map<String,Object> map) {
map.put("name", "zhshch") ;
return map ;
}
public Student getStu(Student stu) {
stu.setName("zhshch") ;
return stu ;
}
}
pojo(用来测试自定义对象):
public class Student {
private int age ;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
运行web成功后,浏览器测试发布是否成功
如下图:
4.客户端测试
public static void test1() throws Exception{
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire()) ;
//如果是配置1,
//这里url中services/后面跟的资源名是services.xml里的name
//<name>Hello</name>
//String url = "http://localhost:8080/MyXfire/services/Hello" ;
//如果是配置2
//这里url中services/后面跟的资源名是接口名:IHello
String url = "http://localhost:8080/MyXfire/services/IHello" ;
Service service = new ObjectServiceFactory().create(IHello.class) ;
IHello hello = (IHello) factory.create(service, url) ;
//测试字符串
System.out.println(hello.sayHello("zhshch hello") );
System.out.println("-------------------1---------");
//测试map
Map<String,Object> map = new HashMap<String, Object>();
System.out.println(hello.getMap(map) );
System.out.println("-------------------2---------");
//测试自定义对象
Student stu = new Student() ;
stu.setAge(20) ;
System.out.println(hello.getStu(stu).getName() );
//测试list
System.out.println("-------------------3---------");
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(65) ;
System.out.println(Arrays.toString(hello.getList(list).toArray() ));
}
demo
更多推荐



所有评论(0)