MyEclipse JAX-WS Web Service

Posted lifugang521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyEclipse JAX-WS Web Service相关的知识,希望对你有一定的参考价值。

在Myeclipse8.5下开发Web service程序,目前系统支持的开发框架有3个,JAX-WS,REST(JAX-RS),XFire。其中系统建议不要使用XFire 的框架,可能是要被淘汰了(deprecated)。我们选择的是JAX-WS框架。这个需要Java EE 5.0的支持。所以后面选择Web server容器的时候,是要能支持Java EE 5.0的才可以部署成功

一、Web service服务端开发 

1、新建一个Web service project

 菜单File -> New -> Web Service Project,在上面的框中输入项目名myWebSvc,框架选择 JAX-WS, J2EE只能选择Java EE 5.0。Finish完成项目新建。 

2、新建一个 Java Bean

就是一个普通的Class, File –> New -> Class, 包名输入 com.myweb.ws, 类名输入 SayHello, Finish 结束新建类。在类中加入一个方法sayHaha如下:

package com.myweb.ws; 

public class SayHello 

public String sayHaha(String request) 

return "Haha, " + request + ", O.K. !"; 

3、新建一个Web service

菜单File –> New -> Other -> MyEclipse -> Web Services -> Web Service, Next 进入下一步,选择 Create web  service from java class(Bottom-up scenario),Next进入下一步, Java class 输入 com.myweb.ws.SayHello, 选中 Generate WSDL in project 选项, 
Finish 结束新建。

生成新的服务代理类, com.myweb.ws.SayHelloDelegation ,生成WSDL定义文件,WebRoot\WEB-INF\wsdl\SayHelloService.wsdl ,WebRoot\WEB-INF\wsdl\SayHelloService_Schema1.xsd。

二、部署Web service 服务 

1、部署项目

在服务上右键,选择Add Deployment 部署项目。

2、重启服务

在浏览器输入 http://localhost:7001/myWebSvc/SayHelloPort,如果显示正确,则服务发布成功。

3、如果在Weblogic上部署

在创建Web service 项目的过程中,如果加入了 JAX-WS 2.1 Runtime / API 库,在部署Web service时,会报错误。

错误: com.sun.xml.ws.policy.jaxws.BuilderHandler]  getPolicySubjects只要删去JAX-WS这两个包 ,再重新部署就可以了。

4.、如果在Tomcat 6.0上部署

则需要加上JAX-WS API /  Runtime 两个库,否则会报错。

错误:Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener

三、Web service 客户端开发 

1、新建 Java project

File -> New -> Java Project, 输入项目名 UseWS, Finish 结束新建。

2、新建Web service client程序

File –> New -> Other -> MyEclipse -> Web Services -> Web Service Client, Next 进入下一步。

WSDL File 为Web Service 的WSDL文件 E:\workspace\myWebSvc\WebRoot\WEB-INF\wsdl\SayHelloService.wsdl,

或者WSDL URL 为Web Service 的WSDL文件的发布路径

http://localhost:8080/webServices_JAXWS/SayHelloPort?wsdl

 Next进入下一步,Finish 结束新建。 

四、测试

新建一个测试类,用来调用 SayHelloService,  File -> New -> Class, Finish 结束类的新建。

修改类如下:

SayHelloService sayHelloSvc = new SayHelloService();

         SayHelloDelegate sayHelloDgt = sayHelloSvc.getSayHelloPort();

         String result = sayHelloDgt.sayHaha("World");

         System.out.println(result);

补充:

1、运行项目,发现一个错误,错误显示是Connection refused, 查看了SayHelloService.wsdl文件,发现这里的配置文件中, 标签service 的soap:address location 的端口是8080, 而Weblogic中我们用的默认端口是7001,于是修改端口号为7001, 

2、另外,如果不在同一台机器上测试, 这里的localhost应该改为相应的IP地址。修改后测试,显示成功。Haha, World, O.K. !。

以上是关于MyEclipse JAX-WS Web Service的主要内容,如果未能解决你的问题,请参考以下文章

MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0

MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0

带有 Axis 服务的 JAX-WS 客户端

An internal error occurred during: "Generating JAX-WS Web Services".Unable to create JAXBC

如何调用别人提供的webservice接口

如何从 JAX-WS Web 服务中访问 ServletContext?