前言:由于对WebService的开发过程不甚了解,导致在开发过程花费过多的不必要的精力,下面对这个过程做一次总结,前面写了一篇使用jaxws-rt-2.0EA3.jar开发的webservice,没有客户端的调用过程,刚开始的时候自己在尝试用自己编写的client来调用,在网上翻阅了各种的实例,但是都不靠谱,后来花费了一天的时间也没有调用成功,后来咨询领导,说使用eclipse的webservice插件来开发,于是乎就解决了这个webservice之间通信的问题。
第一步:检查你的eclipse是否已经自带了webservice的开发插件,如下图
如果没有,则从网上进行插件的安装。
第二步:在你原有的web系统中编写service代码,我需要的是以下的内容
package com.ebiz.cms.member.api.service; public class MemberWebService { /** * 提供会员创建接口,提供现货使用 * * @param username * @param password * @param mobile * @param email * @param type * @return */ public String createMemPxy(String username, String password, String mobile, String email, String type) { return "My name is "; } }
第三步:选中web项目,右键新建webservice项目,如图
选择对应的service,按照提示完成webservice的生成,但是如果项目已经开发了很多板块,lib包中也有了类似axis.jar、commons-logging.jar等等的jar包,此时就会生成失败,并且web.xml也会出现错误,我没有弄清楚为什么,然后我采用了以下的解决办法。
第四步:新建一个空的web项目,将上面编写的MemberWebService放置到新建的项目中,保持包的路径一致,方法的具体内容不用关心,再按照上面第三步的方式进行生成service,此时就会成功,然后你可以看到项目的目录结构如下
把红色部分的文件复制到你需要的项目中,再把web.xml中的内容
写道
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet>
<display-name>Axis Admin Servlet</display-name>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/servlet/AdminServlet</url-pattern>
</servlet-mapping>
添加到你需要的项目的web.xml中,然后启动tomacat,然后在地址栏中输入下图中URL,你可以看到你的service已经存在。
第五步:然后选中需要调用service的项目,新建webservice client项目,如图,选中对应service后,按照提示完成生成步骤。
第六步:按照提示生成完成后,你可以看到以下的内容
,当然你可以写一个测试的例子如下
package com.ebiz.cms.member.api.service;
import java.rmi.RemoteException;
public class Test {
public static void main(String[] args) throws RemoteException {
// TODO Auto-generated method stub
MemberWebServiceProxy proxy = new MemberWebServiceProxy();
proxy.createMemPxy("username", "123456", "123123", "qing@sina.com", "M");
}
}
最后,你可以把内容输出,我是通过调试在service端看到了结果。
总结:什么事情在不清楚的情况下,让人真的接近崩溃,花费了一天的时间不知道怎么去调用,在知道方法后不到20分钟却搞定了,但是出了结果后,还是让人很愉悦的。