当前位置:文档之家› 使用Myeclipse创建WebService实例

使用Myeclipse创建WebService实例

使用Myeclipse 开发基于JAX-WS的Web service实例
本文为Web service 开发入门篇,主要介绍在Myeclipse 环境下开发Web service的服务程序和客户端程序的基本流程。

在Weblogic 10.3.4 中部署Web service服务。

开发环境如下:
JAVA IDE:Myeclipse
Web server:Weblogic
开发Web service服务程序,需要了解以下相关内容,WSDL, SOAP, XML。

这些是组成Web service 的基础。

在下开发Web service程序,目前系统支持的开发框架有3个,
JAX-WS,REST(JAX-RS),XFire。

其中系统建议不要使用XFire 的框架,可能是要被淘汰了(deprecated)。

我们选择的是JAX-WS框架。

这个需要Java EE 的支持。

所以后面选择Web server容器的时候,是要能支持Java EE 的才可以部署成功。

(一)Web service服务端开发
1. 新建一个Web service project, 菜单File -> New -> Web Service Project,
在上面的框中输入项目名myWebSvc,框架选择JAX-WS, J2EE只能选择Java EE 。

Finish完成项目新建。

2. 新建一个Java Bean, 就是一个普通的Class, File –> New -> Class,
包名输入类名输入SayHello, Finish 结束新建类。

在类中加入一个方法sayHaha如下,
package
public class SayHello
{
public String sayHaha(String request)
{
return "Haha, " + request + ", . !";
}
}
3. 新建一个Web service,菜单File –> New -> Other -> MyEclipse -> Web Services -> Web Service,
Next 进入下一步,
选择Create web service from java class(Bottom-up scenario),Next进入下一步,
Java class 输入选中Generate WSDL in project 选项,Finish 结束新建。

生成新的服务代理类,
生成WSDL定义文件,WebRoot\WEB-INF\wsdl\ WebRoot\WEB-INF\wsdl\,
(二)部署Web service 服务
1. Window -> Show View -> Servers, 这里前提是已经安装完成Weblogic10.3.4,
在Weblogic 上点右键,选择Add Deployment 部署myWebSvc,
Finish结束部署。

2. 重启Weblogic 服务,在浏览器输入,如果显示正确,则服务发布成功。

3. 在创建Web service 项目的过程中,如果加入了JAX-WS Runtime / API 库,在部署Web service时,会报错误,
2011-10-13 17:28:22 [ getPolicySubjects
严重: [failed to localize]
WSP_1014_POLICY_REFERENCE_DOES_NOT_EXIST(zip:D:/bea/weblogic1034/webd omain/servers/AdminServer/tmp/_WL_user/_appsdir_WebServicePro_dir/achpn5/war/W EB-INF/lib/!/WEB-INF/wsdl/#Addressing_policy)
2011-10-13 17:28:22 [ finished
严重: [failed to localize]
WSP_1014_POLICY_REFERENCE_DOES_NOT_EXIST(zip:D:/bea/weblogic1034/webd omain/servers/AdminServer/tmp/_WL_user/_appsdir_WebServicePro_dir/achpn5/war/W EB-INF/lib/!/WEB-INF/wsdl/#Addressing_policy)
2011-10-13 17:28:22 [ finished
严重: [failed to localize]
WSP_1018_POLICY_EXCEPTION_WHILE_FINISHING_PARSING_WSDL()
[failed to localize]
WSP_1014_POLICY_REFERENCE_DOES_NOT_EXIST(zip:D:/bea/weblogic1034/webd omain/servers/AdminServer/tmp/_WL_user/_appsdir_WebServicePro_dir/achpn5/war/W EB-INF/lib/!/WEB-INF/wsdl/#Addressing_policy)
at
只要删去JAX-WS这两个包,再重新部署就可以了。

4. 如果在Tomcat 上部署,则需要加上JAX-WS API / Runtime 两个库,否则会报错,
严重: Error configuring application listener of class
(三)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\ Next进入下一步,
Finish 结束新建。

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

修改类如下:
import
import
public class Test
{
public static void main(String[] args)
{
String request = "World";
String response = null;
SayHelloService sayHelloSvc = new SayHelloService();
SayHelloDelegate sayHelloDgt = ();
response = (request);
}
}
4. 运行项目,发现一个错误,
Exception in thread "main" HTTP transport error: Connection refused: connect at
at
at
at
at
at
at
at
at
at
at
at
at $(Unknown Source)
at :15)
Caused by: Connection refused: connect at Method)
at
at
at
at
at
at
at
at
at
at
at
at
at
at
at
... 14 more
错误显示是Connection refused,查看了文件,发现这里的配置文件中,标签service 的soap:address location 的端口是8080,而Weblogic中我们用的默认端口是7001,于是修改端口号为7001,
<service name="SayHelloService">
<port binding="tns:SayHelloPortBinding" name="SayHelloPort">
<soap:address location=""/>
</port>
</service>
修改为
<service name="SayHelloService">
<port binding="tns:SayHelloPortBinding" name="SayHelloPort">
<soap:address location=""/>
</port>
</service>
另外,如果不在同一台机器上测试,这里的localhost应该改为相应的IP地址。

修改后测试,显示成功。

Haha, World, . !。

相关主题