浏览 6690 次
锁定老帖子 主题:WebService的几种不同实现方式
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (11)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-06
最后修改:2010-03-06
server 01:ejb07 //定义接口 public interface EjbWebService { public void addUser(String x); } //定义实现 import javax.ejb.Stateless; import javax.jws.WebMethod; import javax.jws.WebService; @Stateless @WebService//标注这是一个提供WebService的类 public class EjbWebServiceImpl implements EjbWebService { @WebMethod////标注webService方法 public void addUser(String x) { System.out.println("EjbWebServiceImpl:" + x); } } 启动Jboss服务器并部署项目 client for ejb07_axis: 新建Java项目将axis的jar包引入 然后将simples\client下的DynamicInvoker.java方法拷贝到新建的Java项目中 打开文件细读会发现文件中有一个main方法,里面有三个变量的定义用来接收参数,(想要了解整个流程要把这个文件读懂,初学者可以不用理会)所以 在DynamicInvoker.java上右键单击-->Run Configurations--->args:设置如下-->run //访问服务器端webServiceBean生成wsdl文件 http://localhost:8080/ejb07/EjbWebServiceImpl?wsdl //访问Webservice方法 addUser //为方法添加参数 张三 方法执行完成后会成功调用到server端的代码。 client—for ejb07_jax: 新建java项目aaa -->src(或包名)右键单击-->new WebService Client--Next--Jax-WS---输入WSDL URL并选择JavaPackage---next会根据wsdl文档生成相应的代码-->next自动导入相应的jar包--finish完成 //建立一个测试类测试 import com.bjsxt.web.service.EjbWebServiceImpl; import com.bjsxt.web.service.EjbWebServiceImplService; public class Test { public static void main(String[] args) { EjbWebServiceImplService service = new EjbWebServiceImplService(); EjbWebServiceImpl portType = service.getEjbWebServiceImplPort(); portType.addUser("刘德华"); } } client—for ejb07_xfire: new web service Project aaa -->Framework选择xfire-->next可以使用默认-->next 系统添加相应的jar包--finish 当做到这步的时候web.xml文件中会自动添加一个<servlet>的配置,我们可以启动Jboss服务器部署服务端的代码,然后用这个用<servlet>中的url-parttern的值来访问测试一下,能否生成wsdl描述文件格式:http://localhost:8080/ejb07/services/XFireServlet?wsdl 接着继续 new Web service Client FrameWork选择XFire-->next 输入WSDL-URL并选择JavaPackage-->next 验证url-->next 系统加入jar包-->finish完成并自动生成相应的代码 找到自动生成的EjbWebServiceImplServiceClient文件下面有个main方法,然后调用service.addUser("张三")测试即可 上面介绍了用ejb做服务端,然后用axis jax-ws xfire做客户端实现的三种方式,我们并不建议使用ejb项目做为服务器端,为了开发webService程序还要建立一个ejb项目,有点大材小用 server 02: 用jax做为服务器端,建立一个项目 new web Service Project --->完成 写一个将来客户端要调用的方法 简单起见: public class TestMethod { public String print(String name) { System.out.println("name:" + name); return name; } } src上 new Web Service-->next-->FrameWork选择jax-ws Strategy(策略)选择create web service from Java Class-->next选择TestMethod-->finish这个时候会给你刚才选择的TestMethod生成个代理类。jax-ws server端建立完毕。 server 03: 用XFire做服务器端,建立一个项目 new web Service Project -->frameWork选择 Xfire-->next....-->完成(可以建立好自己的包) src 右键单击 -->new WebService--FrameWork选择XFire-->Strategy(策略)选择第二项-->next 输入WebService名称,根据这个名称自动生成接口(example方法)和实现类然后可以根据自己的需要更改方法名称及加入自己的业务逻辑.xfire的server端建立完毕 在此只提供server端的建立方法,对于这两种种的server的其他的三种客户端的建立方法与用ejb做server其他的三种方式做客户端的的方式基本类似,可以进行测试。 注意:在这三种分别做server端,然后用另外的三种方式测试加上ejb做server端共12次测试的过程中 可能会出现两个问题,一个是部署到jBoss启动的时候会报错,还有一种情况是传参数的时候服务端能掉用成功,但是接收到得参数总是null。暂时没有找到原因,可能和jboss以及jdk的版本有关! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-08
这贴也上首页,搞不懂
|
|
返回顶楼 | |
发表时间:2010-03-08
没看明白。。。
|
|
返回顶楼 | |