`
daizh868
  • 浏览: 20321 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Myeclipse 8.5开发基于JAX-WS的Web service实例

阅读更多

使用Myeclipse 8.5开发基于JAX-WS的Web service实例

本文为Web service 开发入门篇,主要介绍在Myeclipse 8.5环境下开发Web service的服务程序和客户端程序的基本流程。
在Weblogic 10.3.4 中部署Web service服务。

开发环境如下:
JAVA IDE:       Myeclipse 8.5
Web server:     Weblogic 10.3.4

开发Web service服务程序,需要了解以下相关内容, WSDL,  SOAP, XML。这些是组成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. Window -> Show View -> Servers, 这里前提是已经安装完成Weblogic10.3.4,
在 Weblogic 10.x上点右键, 选择Add Deployment 部署myWebSvc,


Finish结束部署。

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

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

2011-10-13 17:28:22 [com.sun.xml.ws.policy.jaxws.BuilderHandler]  getPolicySubjects
严重: [failed to localize] WSP_1014_POLICY_REFERENCE_DOES_NOT_EXIST(zip:D:/bea/weblogic1034/webdomain/servers/AdminServer/tmp/_WL_user/_appsdir_WebServicePro_dir/achpn5/war/WEB-INF/lib/webservices-rt.jar!/WEB-INF/wsdl/wsat.wsdl#Addressing_policy)
2011-10-13 17:28:22 [com.sun.xml.ws.policy.jaxws.PolicyWSDLParserExtension]  finished
严重: [failed to localize] WSP_1014_POLICY_REFERENCE_DOES_NOT_EXIST(zip:D:/bea/weblogic1034/webdomain/servers/AdminServer/tmp/_WL_user/_appsdir_WebServicePro_dir/achpn5/war/WEB-INF/lib/webservices-rt.jar!/WEB-INF/wsdl/wsat.wsdl#Addressing_policy)
2011-10-13 17:28:22 [com.sun.xml.ws.policy.jaxws.PolicyWSDLParserExtension]  finished
严重: [failed to localize] WSP_1018_POLICY_EXCEPTION_WHILE_FINISHING_PARSING_WSDL()
com.sun.xml.ws.policy.PolicyException: [failed to localize] WSP_1014_POLICY_REFERENCE_DOES_NOT_EXIST(zip:D:/bea/weblogic1034/webdomain/servers/AdminServer/tmp/_WL_user/_appsdir_WebServicePro_dir/achpn5/war/WEB-INF/lib/webservices-rt.jar!/WEB-INF/wsdl/wsat.wsdl#Addressing_policy)
at com.sun.xml.ws.policy.jaxws.BuilderHandler.getPolicies(BuilderHandler.java:93)

只要删去JAX-WS这两个包 ,再重新部署就可以了。

 

4. 如果在Tomcat 6.0上部署,则需要加上JAX-WS API /  Runtime 两个库,否则会报错,

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

java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)

    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)

    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)



(三) 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

Next进入下一步,



Finish 结束新建。

3. 新建一个Test类,用来调用 SayHelloService,  File -> New -> Class,



Finish 结束类的新建。

修改类如下:
import com.myweb.ws.SayHelloDelegate;
import com.myweb.ws.SayHelloService;

public class Test
{

    public static void main(String[] args)
    {
String request = "World";
String response = null;

SayHelloService sayHelloSvc = new SayHelloService();
SayHelloDelegate sayHelloDgt = sayHelloSvc.getSayHelloPort();

response = sayHelloDgt.sayHaha(request);
System.out.println(response);
    }
}

4. 运行项目,发现一个错误,
Exception in thread "main" com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:134)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:140)
at com.sun.xml.xwss.XWSSClientPipe.process(XWSSClientPipe.java:118)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
at com.sun.xml.ws.client.Stub.process(Stub.java:248)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
at $Proxy34.sayHaha(Unknown Source)
at Test.main(Test.java:15)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.Socket.connect(Socket.java:507)
at java.net.Socket.connect(Socket.java:457)
at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:214)
at sun.net.www.http.HttpClient.New(HttpClient.java:287)
at sun.net.www.http.HttpClient.New(HttpClient.java:299)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:792)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:771)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:669)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:836)
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:122)
... 14 more


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

<service name="SayHelloService">
    <port binding="tns:SayHelloPortBinding" name="SayHelloPort">
      <soap:address location="http://localhost:8080/myWebSvc/SayHelloPort"/>
    </port>
  </service>

修改为

<service name="SayHelloService">
    <port binding="tns:SayHelloPortBinding" name="SayHelloPort">
      <soap:address location="http://localhost:7001/myWebSvc/SayHelloPort"/>
    </port>
  </service>

另外,如果不在同一台机器上测试, 这里的localhost应该改为相应的IP地址。

修改后测试,显示成功。

Haha, World, O.K. !


(全文完)

 

分享到:
评论
6 楼 okooo00 2013-08-21  
http://blog.csdn.net/foart/article/details/4287515这个是tomcat的
5 楼 850075610 2013-06-27  
我尝试着走了一下流程,成功了,中间遇到的问题可以通过http://www.mkyong.com/webservices/jax-ws/java-lang-classnotfoundexception-com-sun-xml-ws-transport-http-servlet-wsservletcontextlistener/comment-page-1/#comment-135504解决,小问题是web service到底如何应用,比如PC和android的交互场景中如何应用?
4 楼 it_palmer 2013-06-26  
谢谢!我试了,好用!有更深入点没?比如传参的类型,安全等方面的。。
3 楼 forrest_lv 2013-04-08  
谢谢,我今天试验成功了我是用的是wls 12c+myeclipse 6.5 ,sun jdk1.6
Haha, World, O.K. ! 
2 楼 qxw180 2012-07-24  
楼主  能补充一下在tomcat6.0发布吗   那个包找不到啊。
1 楼 javaAlpha 2012-03-12  
楼主 ,如果方便的话,最好是把项目打包发布下,然后把jar也单独打下包,如果jar太大了,可以把jar的相关下载地址留出来,这样也方便大家下载和学习。

相关推荐

    使用Myeclipse-8.5开发基于JAX-WS的Web-service实例.docx

    使用 Myeclipse 8.5 开发基于 JAX-WS 的 Web Service 实例 本文档主要介绍了使用 Myeclipse 8.5 开发基于 JAX-WS 的 Web Service 实例的步骤,涵盖了 Web 服务程序和客户端程序的基本流程,以及在 Weblogic 10.3.4 ...

    如何基于JAX-WS开发一个WebService实例

    通过以上步骤,你可以基于JAX-WS开发并部署一个简单的Web服务实例。随着项目的复杂性增加,可能需要处理更复杂的业务逻辑、错误处理和事务管理,但这些基础步骤将为你构建更复杂的Web服务奠定坚实的基础。

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例

    MyEclipse8_0中使用 JAX-WS 部署 WebService 实例 - 外衣 - 博客频道 - CSDN_NET.mht

    MyEclipse6_5上基于JAX-WS开发Webservice(中文示例)

    本篇将详细介绍如何在MyEclipse6_5集成开发环境中使用JAX-WS来开发Web服务。 首先,让我们了解MyEclipse 6.5。MyEclipse是基于Eclipse的一款强大的Java、J2EE集成开发环境,提供了丰富的特性集,包括代码编辑、调试...

    gsoap客户端Jax-ws服务端实例

    本实例主要探讨了如何使用gSOAP客户端来访问由JAX-WS(Java API for XML Web Services)在MyEclipse 8.x环境中创建的Web服务。这个过程涉及到C++编程和.NET框架的使用,特别是Visual Studio 2005。 首先,让我们...

    ws_myeclipse

    使用Myeclipse_8.5开发基于JAX-WS的Web_service实例.docx myeclipse6.5上基于JAX-WS开发Webservice(中文示例).docx 博文链接:https://saltdstar.iteye.com/blog/1714505

    web Service 实例教程

    开发Java Web服务通常使用集成开发环境(IDE)如Myeclipse10。此外,还需要服务器软件,如Apache Tomcat,它是一个开源的Web应用服务器。在这个实例中,服务器版本为7.0.34。 ### WebService服务端开发 服务端开发...

    使用Myeclipse 创建WebService 项目服务端

    MyEclipse作为一款强大的Java集成开发环境,提供了方便的工具支持来创建和部署基于JAX-WS的Web服务。下面将详细讲解如何使用MyEclipse创建一个WebService项目服务端,以及涉及的关键知识点。 首先,创建一个新项目...

    MyEclipse开发WebService教程

    在本教程中,我们将深入探讨如何使用MyEclipse这一强大的集成开发环境来开发Web Service。Web Service是一种基于标准的、跨平台的、可互操作的服务,它允许不同系统之间的数据交换。MyEclipse作为Java EE开发工具,...

    web service实例

    在这个实例中,我们关注的是Java实现的Web服务,特别是使用MyEclipse IDE进行开发的情况。MyEclipse是一款强大的集成开发环境,特别适合Java EE项目的开发,包括Web服务。 1. **Web服务基础**: Web服务基于开放...

    xfire 的webservice_server端和client端代码,包括复杂类型.

    从网上看到xfire的例子不少,大多都是只返回一个...这些包通过点击项目右键build-path-&gt;add libraries-&gt;myeclipse libraries-&gt;相应的包即可.client的jar包需要你建立一个jax-ws的web service client能获得这这些包.。

    MyEclipse下XFire开发Webservice实例

    本文主要介绍了如何在MyEclipse环境中使用XFire框架开发Web Service。XFire是一个基于Java的SOAP框架,提供了轻量级的信息处理模块,利用STAX与SOAP消息交互,支持多种传输协议如HTTP、JMS、XMPP、In-memory,并且与...

    java使用webserver发布服务端和客户端

    在这个例子中,`MyEclipse6.5基于JAX-WS开发Webservice.docx`可能是一个详细的教程文档,讲述了如何在MyEclipse 6.5中使用JAX-WS开发Web服务。而`Testws`和`javaws_src`可能是包含了服务端和客户端源代码的目录。 ...

    MyEclipse开发Webservice实例详解

    在本文中,我们将深入探讨如何使用MyEclipse开发Webservice的实例,特别关注XFire框架。 1. **XFire框架**: XFire是Java平台上的一个SOAP(简单对象访问协议)框架,它被MyEclipse的Web Services功能所采用。...

    WebService例子.zip

    2. **JAX-WS (Java API for XML Web Services)**: JAX-WS是SUN公司开发的用于创建和消费SOAP WebServices的API。它简化了开发过程,将复杂的SOAP消息处理隐藏在库后面,使开发者能够使用简单的Java接口来定义服务和...

    MyEclipse开发WebService实例详解

    可以使用JAX-WS(Java API for XML Web Services)框架,它提供了在Java中创建WebService的标准方式。在Servlet中,使用@WebService注解标识类为WebService,并用@WebMethod注解标记服务方法。 接下来,为了让其他...

Global site tag (gtag.js) - Google Analytics