MYECLIPSE 开发Web Service之详细讲解--第二节

转载 2011年01月07日 13:51:00

第一节中说明了怎么开发webservice,这节主要描述怎么测验和应该注意的内容

一:开发JAVA客户端

上面一节说了,如果你发现下面的内容,那就是发布成功了;

And now... Some Services

CallSoapImpl (wsdl) 这个就是新增加的节点,点wsdl链接,出现XML相关的文件,然后您要做的是点右键,查看源代码。讲内容保存下来,命名CallSoapImpl.wsdl(名称是随便的),这个文件就是我们下面生成客户端需要的。

生成客户端
java org.apache.axis.wsdl.WSDL2Java -p com.xuzr  CallSoapImpl.wsdl

看到了吧,上面就是执行客户端的脚本,com.xuzr  是生成的文件包

然后你到执行脚本的目录下看,会发现多了文件夹,细点,发现,会出现JAVA文件,分别为:

CallSoap.java 

CallSoapImpl_PortType.java

CallSoapImplSoapBindingStub.java

CallSoapLocator.java

注意看CallSoapLocator.java文件,会发现里面有相应的servlet地址,

 public java.util.Iterator getPorts() {
        if (ports == null) {
            ports = new java.util.HashSet();
            //ports.add(new javax.xml.namespace.QName("http://localhost:7001/CallSmsService/services/CallSoapImpl ", "CallSoapImpl"));
            ports.add(new javax.xml.namespace.QName("http://10.168.6.68:8383/CallSmsService/services/CallSoapImpl ", "CallSoapImpl"));
           
        }

呵呵,这就是我们客户端需要用到的。

二:调用web service

上面的步骤都完成的情况下,那么就需要我们来调用咯,呵呵,其实客户端代码有很多种,比如

        org.codehaus.xfire.service.Service srvcModel = new ObjectServiceFactory().create(CallSoap.class);
        XFireProxyFactory factory =
        new XFireProxyFactory(XFireFactory.newInstance().getXFire());
//     String helloWorldURL =
//        "http://localhost:7001/HelloWorld/services/HelloWorldService ";
        String helloWorldURL =
         "http://localhost:7001/CallSoap/services/CallSoapImpl ";
     try {
      CallSoap srvc = (CallSoap)factory.create(srvcModel, helloWorldURL);
        String result = srvc.getCallSoapImpl().example(" 中文测验hello world..11");
        System.out.print(result);
     } catch (MalformedURLException e){
           e.printStackTrace();
     }
 }

但是我们为了让初学的人更容易理解,我建议大家用下面的测验代码:

    CallSoap service = new CallSoapLocator();
  try {
      System.out.println(service.getCallSoapImpl().example(bufferdemo.toString()));
   
   
  } catch (ServiceException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

哈哈,简单吧,如果成功,会出现下面的情况,当然,我的调用很简单,就是返回OK,所以就不需要写了,在调用的过程中有N多日志,你不要管,那都是正常的。

15:17:38,313 DEBUG [SOAPPart] Exit: SOAPPart ctor()
15:17:38,325 DEBUG [SOAPPart] Enter: SOAPPart::getAsSOAPEnvelope()
15:17:38,326 DEBUG [ProjectResourceBundle] org.apache.axis.i18n.resource::handleGetObject(currForm)
15:17:38,326 DEBUG [SOAPPart] current form is FORM_SOAPENVELOPE
15:17:38,326 DEBUG [RPCProvider] Enter: RPCProvider.processMessage()
15:17:38,326 DEBUG [ProjectResourceBundle] org.apache.axis.i18n.resource::handleGetObject(bodyElems00)
15:17:38,326 DEBUG [RPCProvider] There are 1 body elements.
15:17:38,336 DEBUG [ProjectResourceBundle] org.apache.axis.i18n.resource::handleGetObject(register00)
15:17:38,337 DEBUG [SerializationContext] register 'ns1' - 'http://soap.linkage.com'
15:17:38,337 DEBUG [NSStack] NSPush (32)
15:17:38,337 DEBUG [NSStack] NSPush (32)
15:17:38,337 DEBUG [SAXOutputter] SAXOutputter.startElement ['http://soap.linkage.com' example]
15:17:38,337 DEBUG [ProjectResourceBundle] org.apache.axis.i18n.resource::handleGetObject(startElem00)
15:17:38,337 DEBUG [SerializationContext] Start element [http://soap.linkage.com]:example
15:17:38,347 DEBUG [ProjectResourceBundle] org.apache.axis.i18n.resource::handleGetObject(register00)
15:17:38,347 DEBUG [SerializationContext] register 'soapenv' - 'http://schemas.xmlsoap.org/soap/envelope/'
15:17:38,348 DEBUG [NSStack] NSPush (32)
15:17:38,348 DEBUG [ProjectResourceBundle] org.apache.axis.i18n.resource::handleGetObject(register00)
15:17:38,348 DEBUG [SerializationContext] register 'soapenc' - 'http://schemas.xmlsoap.org/soap/encoding/'
15:17:38,348 DEBUG [NSStack] NSPush (32)
15:17:38,349 DEBUG [NSStack] NSPush (32)
15:17:38,349 DEBUG [SAXOutputter] SAXOutputter.startElement ['' message]
15:17:38,349 DEBUG [ProjectResourceBundle] org.apache.axis.i18n.resource::handleGetObject(startElem00)
15:17:38,349 DEBUG [SerializationContext] Start element []:message
15:17:38,349 DEBUG [ProjectResourceBundle] org.apache.axis.i18n.resource::handleGetObject(register00)
15:17:38,349 DEBUG [SerializationContext] register 'xsi' - 'http://www.w3.org/2001/XMLSchema-instance'
15:17:38,349 DEBUG [NSStack] NSPush (32)

好了,关于用Myeclipse开发WEB Service的就讲到这里咯,我相信大家应该很容易上手的,毕竟需要我们写的代码真的不多,恩,下一节我讲下一个开发Demo,EJB的开发和调试,大家等着吧,欢迎和我交流:tropica@163.com

MYECLIPSE 开发Web Service之详细讲解--第一节

最近由于青海的项目要求,需要提供一个外围接口给其他厂商,最后决定用WEBSERVICE的方法给外围提供接口,同时内部用EJB来实现组件封装,这就 涉及到了WEB SERVICE的开发,部署...
  • big1980
  • big1980
  • 2011年01月07日 13:50
  • 503

MYECLIPSE 开发Web Service之详细讲解--第三节

上面第一节和第二节讲了开发和测验, 这次我再强调下相关注意点先把webservice在传输过程中的主要内容贴出来。...
  • big1980
  • big1980
  • 2011年01月07日 13:51
  • 394

Myeclipse 开发web service

  • 2008年10月18日 12:16
  • 1.13MB
  • 下载

WEB SERVICE 详细讲解

  • 2011年08月08日 20:47
  • 29KB
  • 下载

myeclipse下用axis2开发web service的第一个程序(SayHello)

SayHello是很多人都写过的web service。实现的功能是通过web服务输出“人名,how are you?” 本文参考网上众多资料,有的也不知源作者是谁,就不一一列举了,在此感谢愿意...

myeclipse下用axis2开发web service的第一个程序(SayHello)

SayHello是很多人都写过的web service。实现的功能是通过web服务输出“人名,how are you?”本文参考网上众多资料,有的也不知源作者是谁,就不一一列举了,在此感谢愿意shar...

用MyEclipse10开发基于JAX-WS的Web Service实例

一、打开MyEclipse,新建一个Web Service项目。     二、输入项目名Demo   点Finish新建项目。 三、新建一个java类 pa...

MyEclipse下开发Web Service(Axis)

本文主要描述如何使用Apache开源项目Axis提供的API来实现Web Services。本文中的提到的例子只为了方便本文的描述而提出,有不妥之处请见谅。     本文的读者应有JAVA we...

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

原文 http://blog.csdn.net/qianquan003/article/details/23466051 主题Web服务Java 文为Web service 开发入门篇...

MyEclipse下开发Web Service

  • 2010年04月02日 21:09
  • 678KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MYECLIPSE 开发Web Service之详细讲解--第二节
举报原因:
原因补充:

(最多只允许输入30个字)