免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1180 | 回复: 0
打印 上一主题 下一主题

WebService的开源实现(Spring 2.0宝典文摘) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-03 16:19 |只看该作者 |倒序浏览

14.6.1 WebService的开源实现
WebService更多是一种标准,而不是一种具体的技术。不同的平台,不同的语言大都提供WebService的开发实现。在Java领域,WebService的一个成熟实现是Axis。
q      Axis是Apache的一个开源WebService引擎,它是目前最为成熟的开源WebService引擎之一。
q      Apache Axis是符合W3C的SOAP协议的实现。
q      该项目是属于Apache SOAP协议的子项目。
14.6.1.1 Axis的下载
登陆http://www.apache.org/dyn/closer.cgi/ws/axis/1_4站点,Axis的最新版本是1.4,笔者的示例程序都是基于该版本完成。下载到axis-bin-1_4.zip文件,解压缩该文件,发现如下的文件结构:
q      docs:存放Axis的说明文档。
q      lib:存放Axis的二进制发布包。
q      samples:存放利用Axis发布WebService的示例代码。
q      webapps:存放安装Axis的基础应用。
q      xmls:存放相关配置文档。
q      还有LICENSE等相关说明文档。
14.6.1.2 Axis的安装
安装Axis,首先必须保证系统已经正确安装了Web服务器,笔者使用Tomcat5.0.28。也可使用其他应用服务器,例如WebLogic。webapps下的axis路径全部复制到Tomcat的webapps路径下。然后打开浏览器,输入:http://localhost:8888/axis/。
如果出现如图14.3所示界面表示Axis的基本类库已经安装成功,地址中的8888是笔者的Tomcat的端口。单击如图14.3所示页面的左上方“Validation”链接,出现如图14.4所示界面:



图14.3 Axis安装成功界面              图14.4 Axis校验界面
该页面显示Axis的必需组件还缺少一个没有安装,两个可选组件也没有安装,单击上面的提示链接,分别登陆:
q      http://java.sun.com/products/javabeans/glasgow/jaf.html
q      http://java.sun.com/products/javamail/
q      http://xml.apache.org/security/
依次下载如下三个压缩文件:
q      jaf-1_1-fr.zip
q      javamail-1_4.zip
q      xml-security-bin-1_2_1.zip
将这三个压缩文件解压缩。将jaf-1_1-fr.zip压缩包中的activation.jar文件,复制到axis应用的WEB-INF\lib下;将javamail-1_4.zip压缩包中的mail.jar文件,复制到axis应用的WEB-INF/lib下;再将xml-security-bin-1_2_1.zip的lib下xmlsec-1.2.1.jar和xalan.jar文件,复制到WEB-INF/lib下。再次校验Axis,看到页面提示全部安装成功。
14.6.1.3 开发自己的WebService
完成了前面的部署后,就可以开始开发自己的WebService了。首先编写需要提供服务的类,该类不需要实现任何接口,也不需要继承任何父类,只需要是POJO即可。Axis支持将普通方法暴露成WebService。看如下的服务类:
//服务类,应该声明为public
public class Hello
{
         //服务方法
    public String hello()
    {
        return "hello ," + name + ",Welcome to Axis";
    }
}
该类简单得难以置信,但正是个简单的类,它可以提供WebService。将该类的文件名存为Hello.jws。
注意:不是java后缀,而是jws后缀。
将该文件放入axis应用的根路径下,也就是与WEB-INF同一级路径,然后重启动Tomcat,或者在Tomcat控制台重新加载axis应用。然后,打开浏览器输入如下地址:
http://localhost:8888/axis/Hello.jws
看到如图14.5所示界面:

图14.5 Hello WebService
这表示该WebService发布成功,单击“Click to see the WSDL”链接,可查看该WebService的WSDL描述。
注意此时可能会出现如下异常:
AXIS error
Sorry, something seems to have gone wrong... here are the details:
Fault - ; nested exception is:
        java.io.FileNotFoundException: D:\Program\apache-tomcat-5.5.17\webapps\axis\WEB-INF\jwsClasses\Hello.class (系统找不到指定的文件。)
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.FileNotFoundException: D:\Program\apache-tomcat-5.5.17\webapps\axis\WEB-INF\jwsClasses\JavaBeanWS.class (系统找不到指定的文件。)
faultActor:
faultNode:
faultDetail:
        {http://xml.apache.org/axis/}hostname:ab9f9fb6e4f944b这个问题主要是大家在写的时候加了包路径而引起的,很好解决就不说拉。
成功发布的WebSerivice通过网络访问,因为SOAP协议基于HTTP协议,因此WebService可以在互联网上访问。访问该WebService的客户端代码如下:
public class WebServiceClient{
        //程序的入口
    public static void main(String args[])
    {
           System.out.println("开始调用WebService");        
           try
           {
                            //WebService所在的url
                String endpoint = "http://localhost:8888/axis/Hello.jws";
                            //创建Serivce对象,Service对用用于创建Call对象
                 Service service = new Service();
                            //创建Call对象,Call对象用于调用服务
                Call call = (Call)service.createCall();
                            为Call对象设置WebService的url
                call.setTargetEndpointAddress(new java.net.URL(endpoint));
                //为Call对象设置调用的方法名
                call.setOperationName("hello");
                            //调用WebService的方法,并获得返回值
                String s = (String)call.invoke(new Object[] {"中国人"});
                            //输出返回值
                System.out.println(s);
           }
           catch (Exception e)
           {
                System.out.println(e.toString());
           }
           System.out.println("调用WebService正常结束");        
    }
}
借助于Axis可以将POJO发布成WebService,远程客户端不需要任何接口或类,因为远程客户端直接调用方法,直接使用Call对象调用方法。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36006/showart_394275.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP