加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用XFire开发WebServices服务端

发布时间:2020-12-17 00:25:57 所属栏目:安全 来源:网络整理
导读:关于XFire的集合映射:这里使用了 JDK5.0提供的 新特性中的 泛型机制 ,所以不需要 InterfaceName.aegis.xml 文件 ????????????????????????????? 如果您使用的是 JDK4 ,那么就需要配置 InterfaceName.aegis.xml 文件,相关资料请找Google老师 交待一下我的

关于XFire的集合映射:这里使用了JDK5.0提供的 新特性中的泛型机制 ,所以不需要<InterfaceName>.aegis.xml文件
????????????????????????????? 如果您使用的是JDK4,那么就需要配置<InterfaceName>.aegis.xml文件,相关资料请找Google老师
交待一下我的开发环境:MyEclipse6.5 Tomcat-6.0.10JDK1.5.0_08XFire-1.2.6
如果对WebServics还不是很了解,请参阅我之前写过的一篇文章——What is WebServices
MyEclipse6.5自身便提供了对XFire的支持,所以我们可以直接创建一个Web Service Project
创建步骤——略。网上有很多,希望勤快的您能够自行查阅
下面展示的是WebServices服务端的全部代码 代码已亲测,全部通过
其中包含了使用XFire处理简单对象的传递、对象的传递、List的传递

首先是web.xml文件

[xhtml] view plain copy print ?
  1. <?xmlversion="1.0"encoding="UTF-8"?>?
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"?
  3. ??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.5"?
  4. ??? xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?? http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">?
  5. ??? <servlet>?
  6. ??????? <servlet-name>XFireServlet</servlet-name>?
  7. ??????? <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>?
  8. ??? </servlet>?
  9. ??? <servlet-mapping>?
  10. ??????? <servlet-name>XFireServlet</servlet-name>?
  11. ??????? <url-pattern>/services/*</url-pattern>?
  12. ??? </servlet-mapping>?
  13. </web-app>?
  14. <!-- XFireServlet拦截了所有关于/services/*的请求,即只在这个URI下开放WebService服务 -->?
  15. <!-- 所以对外系统开放的SebService的URL基本上都是【http://127.0.0.1:端口/项目/services/服务名】的形式 -->?
  16. <!-- 当我们将该WebService项目部署到Tomcat上之后,打开浏览器,然后输入http://127.0.0.1:8080/XFire_demo/services/XFireServer?wsdl -->?
  17. <!-- 其中XFireServer是services.xml中<service>标签的<name>元素所定义的内容,而问号后面的wsdl参数表示查看该Web服务的WSDL(Web服务描述语言)文件 -->?

然后是services.xml文件

[xhtml] view plain copy print ?
  1. <?xmlversion="1.0"encoding="UTF-8"?>?
  2. <!-- 该文件用于将我们写的一般的Java类暴露成WebService -->?
  3. <!-- This file should be placed in your classpath at "META-INF/xfire/services.xml" -->?
  4. <!-- 这是XFire官网上说的,即services.xml文件需要保存在classpath下面的/META-INF/xfire/目录中 -->?
  5. <!-- 但MyEclipse却在项目中建立了一个WebService文件夹来保存services.xml文件 -->?
  6. <!-- 其实MyEclipse已帮我们映射好了位置,它会自动将该文件存放在WEB-INF/classes/META-INF/xfire/目录下 -->?
  7. <beansxmlns="http://xfire.codehaus.org/config/1.0">?
  8. ??? <!-- service标签和它所包含的XML内容为发布成Web服务的POJO提供完整的描述 -->?
  9. ??? <!-- ★★注意★★在使用XFire与Spring2.0集成时,正常情况下,控制台会报告异常 -->?
  10. ??? <!-- ★★注意★★此时把xmlns="http://xfire.codehaus.org/config/1.0"写到<service>标签里面,即可 -->?
  11. ??? <!-- ★★注意★★<beans><service xmlns="http://xfire.codehaus.org/config/1.0">...<servcie><beans> -->?
  12. ??? <service>?
  13. ??????? <!-- Web服务被发布时所采用的唯一名称,即我们的WebServices服务对外提供的名字 -->?
  14. ??????? <!-- 该名字可以是任何的合法名字,它将会被客户端程序和其它需要调用我们的服务的组件用到 -->?
  15. ??????? <!-- 并且,服务准备好(比如发布到Tomcat上)以后,可以在浏览器中使用该名字来查看WSDL -->?
  16. ??????? <!-- The name element is required -->?
  17. ??????? <name>XFireServer</name>?
  18. ?????????
  19. ??????? <!-- Web服务发布时所使用的命名空间 -->?
  20. ??????? <!-- The namespace element is optional -->?
  21. ??????? <namespace>http://www.jadyer.com/XFireDemo</namespace>?
  22. ?????????
  23. ??????? <!-- 指定所要提供WebServices服务的Java类的名字,包括包名和类名 -->?
  24. ??????? <!-- 这里我们指定的是HelloService接口 -->?
  25. ??????? <!-- 如果我们的Java类没有实现任何接口,那么这里就可以直接指定Java类的名字 -->?
  26. ??????? <!-- The serviceClass element is required -->?
  27. ??????? <serviceClass>com.jadyer.server.HelloService</serviceClass>?
  28. ?????????
  29. ??????? <!-- 指定当WebServices服务被调用时,服务端用来处理请求的接口的Java实现类,包括包名和类名 -->?
  30. ??????? <!-- 这是一个可选元素,如果<serviceClass>指定的是一个接口,那么就必须在这里指定相应的实现类 -->?
  31. ??????? <!-- The implementationClass element is optional -->?
  32. ??????? <implementationClass>com.jadyer.server.HelloServiceImpl</implementationClass>?
  33. ??? </service>?
  34. </beans>?

接着是暴露成Web服务的接口类

[java] view plain copy print ?
  1. package com.jadyer.server;?
  2. import java.util.List;?
  3. import com.jadyer.model.Person;?
  4. import com.jadyer.model.User;?
  5. /**
  6. * 暴露成web服务的接口类
  7. */?
  8. public interface HelloService {?
  9. ??? public String sayHello(String name);//简单对象的传递?
  10. ??? public Person getPerson(User u);//对象的传递?
  11. ??? public List<Person> getPersonList(Integer age,String name);//List的传递?
  12. }?

然后是暴露成Web服务的接口的实现类

[java] view plain copy print ?
  1. package com.jadyer.server;?
  2. import java.util.ArrayList;?
  3. import java.util.List;?
  4. import com.jadyer.model.Person;?
  5. import com.jadyer.model.User;?
  6. /**
  7. * 暴露成web服务的接口的实现类
  8. * @see 该类必须显式或隐式的提供一个public的无参的【即默认的】构造函数
  9. * @see 否则XFire将无法初始化该类
  10. */?
  11. public class HelloServiceImplimplements HelloService {?
  12. ?????
  13. ??? //Default constructor?
  14. ??? public HelloServiceImpl(){}?
  15. ??? public String sayHello(String name) {?
  16. ??????? if(null==name){?
  17. ??????????? return "Hello,World";?
  18. ??????? }else{?
  19. ??????????? return "Hello," + name;?
  20. ??????? }?
  21. ??? }?
  22. ??? public Person getPerson(User u) {?
  23. ??????? Person p = new Person();?
  24. ??????? p.setAge(24);?
  25. ??????? p.setName(u.getName());?
  26. ??????? return p;?
  27. ??? }?
  28. ??? public List<Person> getPersonList(Integer age,String name) {?
  29. ??????? Person p = new Person();?
  30. ??????? p.setAge(age);?
  31. ??????? p.setName(name);?
  32. ??????? List<Person> list = new ArrayList<Person>();?
  33. ??????? list.add(p);?
  34. ??????? return list;?
  35. ??? }?
  36. }?

最后再把两个POJO类补充上

[java] view plain copy print ?
  1. package com.jadyer.model;?
  2. public class User {?
  3. ??? private String name;?
  4. ??? /*-- getter和setter略 --*/?
  5. }?
  6. /**
  7. * 两个POJO类
  8. */?
  9. package com.jadyer.model;?
  10. public class Person {?
  11. ??? private Integer age;?
  12. ??? private String name;?
  13. ??? /*-- getter和setter略 --*/?
  14. }?

关于相应的客户端的开发,请参考我的下一篇文章——在XFire中创建WebService客户端的三种常用方式

?

转载地址:http://www.voidcn.com/article/p-fiqvbwho-baw.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读