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.htmlq http://java.sun.com/products/javamail/q http://xml.apache.org/security/依次下载如下三个压缩文件:q jaf-1_1-fr.zipq javamail-1_4.zipq 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。看如下的服务类://服务类,应该声明为publicpublic 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描述。成功发布的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对象调用方法。如果要传List之类的需要序列化了才可以的
解决方案 »
- dwr+dTree从后台获取数据展示成树问题,跪求大家帮忙!
- MyEclipse总是突然自动关闭、然后浏览器会打开www.13721.net这个网站
- 请教NumberFormat中的百分数问题getPercentInstance
- 可怜小强我吧!getHibernateTemplate().deleteAll(问题
- JNDI是什么?什么作用呢
- 如何将一个Document对象转换为XML文本文件 没分了 恳请帮忙
- log与log4j的用法
- hibernate查询字段为null记录的问题,急 !!!!
- 用weblogic数据库连接池递归调用实现树形目录出错
- 着急!!谁能告诉我哪里有Weblogic6.1 + Crack可以下载???? 在线等待!
- 一个关于log4j问题,将日志信息记录到mysql中
- Help me!调用webService异常错误!
其实解决的方法很简单,
tomcat下少了mail.jar,activation.jar,xmlsec-1.2.1.jar和xalan.jar着四个包还能运行,但jboss的要求要高些,就不能运行了!
其实解决的方法很简单,
tomcat下少了mail.jar,activation.jar,xmlsec-1.2.1.jar和xalan.jar着四个包还能运行,但jboss的要求要高些,就不能运行了!