Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240752
  • 博文数量: 29
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-23 23:55
文章分类

全部博文(29)

文章存档

2009年(7)

2008年(22)

我的朋友

分类: Java

2008-04-24 13:00:38

使用 Axis2 实现 Web services 应用
(JDK 必须是 1.4 以上)
理论一下:
Apache Axis2 是Axis的后续版本,是新一代的SOAP引擎。
目前Axis2支持三种模式:In-Only、Robust-In和In-Out。
In-Only消息交换模式只有SOAP请求,而不需要应答;
Robust-In消息交换模式发送SOAP请求,只有在出错的情况下才返回应答;
In-Out消息交换模式总是存在SOAP请求和应答。

实现步骤:
  1. 下载 axis2 的开发包 axis2.war ;
  2. 下载 axis2 doc ,还有参考 OMElement 等 API 的在线文档,用 google 找;
  3. 把 axis2.war 放到 Tomcat 的 webapp/ 下,启动或重新启动 Tomcat ;
  4. 在浏览器中输入 ,如果可以见到 axis2 的管理界面,表示部署 axis2 成功;
  5. 以下是在 MyEclipse 中开发;
  6. 新建工程 WSDemo ,把 axis2 的 lib 添加到工程中;
  7. 编写方法 public void display(OMElement in) ,这个方法是没有返回值的,也就是 axis2 实现 In-Only 方式的消息传输,in.getText() 方法可以取出传入参数 in 中的数据,关于 OMElement 更详细的方法,参考文档;
  8. 编写方法 public OMElement display(OMElement in),这个方法传入一个 OMElement 类型,返回一个 OMElement 类型的数据,OMElement 是一个 XML 模型数据结构,可以用 OMElement 的方法getChildElements() 取出所有 Element ,然后取出数值;
  9. 要返回一个 OMElement,所以要生成一个 OMElement 类型的结果值;生成步骤如:
  10. OMFactory fac = OMAbstractFactory.getOMFactory();
  11. OMNamespace omNs = fac.createOMNamespace("", "result");
  12. OMElement resp = fac.createOMElement("sumRespone", omNs);
  13. resp.setText(String.valueOf(x+y));
  14. 这时就可以得到了一个 OMElement;
  15. 服务器端程序结束;
  16. 配置 /META-INF/services.xml 文件

   
      This is a sample Web Service.
   

   
    test.ws.WSDemo
   
   
   
                      class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
     


     
                  class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
   


  1. 这时,把 JAVA 类和 services.xml 文件打成 aar 包(Eclipse 中 export jar),打包后的目录结构是 /test/ws/WSDemo.class , /META-INF/services.xml ;
  2. 把这个 aar 包 Copy 到 webapps\axis2\WEB-INF\services 中;(也可以使用管理页面来上传)
  3. 这时,重启 Tomcat ,进入管理页面,点开 Services ,可以见到自己的 aar 服务了;
  4. 下面编写客户端代码,访问部署好的 service ;
  5. 这里,就要了解下消息传递的方式了,有同步和异步两种;
private static final String localtc="";
    public static void testMultiInOnly(){
        try {
            Options options = new Options();
            options.setTo(targetEPR);
            ServiceClient sender = new ServiceClient();
            sender.setOptions(options);
            OMElement ae = null;
            OMElement be = null;
            OMElement infoe = null;
            OMFactory fac = OMAbstractFactory.getOMFactory();
            // OMNamespace指定此SOAP文档名称空间
            OMNamespace omNs = fac.createOMNamespace("", "");
            infoe=fac.createOMElement("subscribe", omNs);
            ae=fac.createOMElement("id", omNs);
            be=fac.createOMElement("pass", omNs);
            ae.setText("wuhonda");
            be.setText("abcd");
            infoe.addChild(ae);
            infoe.addChild(be);
            if(infoe!=null){
                sender.sendRobust(infoe);
            }
            else
                System.out.println("------infoe is null");
           
        } catch (Exception axisFault) {
            axisFault.printStackTrace();
        }
    }
  

阅读(2452) | 评论(1) | 转发(0) |
0

上一篇:java调用oracle存储过程

下一篇:vi命令表

给主人留下些什么吧!~~

chinaunix网友2008-04-25 12:10:49

牵扯“藏独” 水晶报表向部分中国客户道歉? 美国时间上周五下班后,商务智能软件提供商Business Objects公司采取了不寻常的步骤,向遇到有关的问题的客户发出道歉,包括服务差、延迟交付该公司的技术。 文中提到,“当我们回头看过去几个星期,这是痛苦的很明显,我们的内部系统带来了问题和不必要的分心,在Business Objects公司的软件解决方案。尤其是很多客户尚未能及时接受我们的技术。我们致以最诚挚的道歉,这些问题我们会立即解决“ 。 文中还提到 “最近的这些失误已引起整个公司的关注,解决这些问题是该公司的最高优先级的事情”,电子邮件包括电话号码,为客户服务的网址,电子软件交付,文件和产品警报。 这件事情的实质情况是:这些"部分道歉信"其实是发给中国客户的,因为奥运圣火及“藏独”的问题,该公司的产品受到部分用户的抵制,一些服务于该公司的中国员工也消极怠工,导致“服务差、延迟交付该公司的技术”,防止可能遭到大范围抵制! 其实国产的一些报表也不错,例如:皕杰报表(http://www.bijetsoft.com)]、UCML WEB报表(http://w