`
inspire_xg
  • 浏览: 27796 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Web service 一些整理

 
阅读更多
WebService是一种跨编程语言和跨操作系统平台的远程调用技术

SOAP 简单的对象访问协议
Web 服务规范通常归为两类:基本 Web 服务规范和扩展 Web 服务规范。基本规范有
SOAP
WSDL
UDDI
扩展的Web服务规范:
WS-BPEL
JAX-WS为JAX-RPC 1.1的后续版本

安装Axis2作为一个独立的服务器
1.下载Axis2 binary包
2.解压Axis2 binary包到目录,然后运行axis2server.bat

重要的配置文件axis2.xml

5中方式可以部署web service
Pojo
AXIOM'S OMElement
ADB
XMLBeans
JiBx

一下摘录自网上
---------------------------------------------------------
最近在做一个调用webservice的客户端,之前做过,以为很容易,但这过程中遇到的一些问题让我发现自己懂的还是太少。

    webservice的服务端是需要证书认证的,证书已经发给我了,cer格式的,使用java的keytool工具提取证书后,在调用webservice时执行以下语句:

  System.setPRoperty("javax.net.ssl.trustStore", "xxxx.truststore");

告诉服务端我客户端是有证书的,目前来看没问题。

    接下来,我用axis2的wsdl2java生成了客户端的代码,结果一执行就出现如下错误:

org.apache.axis2.AxisFault: [ISS.0088.9125] SOAP request does not conform to the SOAP message model

    在soap的开发文档中查到这个错,是因为请求的soap message格式错误,文档地址:http://documentation.softwareag.com/webmethods/wmsuite7/Developer/Guides/7-1-1_SOAP_Developers_Guide.pdf(89页)

    这时对方要求我把soap request message发过去,我对webservice只是停留在用的阶段,会用axis,xfire之类的工具写服务端和客户端,但是对soap就是一知半解了,上网找资料,问同事,折腾了半天,总算把request message找出来了。同事给的方法是用tcp monitor之类的工具,但是webservice是https格式的,不能用,后来在生成的客户端代码里把SOAPEnvelope.toString()打出来才得到,如下:

<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns1:UPLGenerate xmlns:ns1="http://www.alcatel-lucent.com/webService/WS_UPL">
<OperationCode>1 </OperationCode>
<Plant>2 </Plant>
<QuoteNumber>3 </QuoteNumber>
<UserID>4 </UserID>
<IncludePriceType>5 </IncludePriceType>
</ns1:UPLGenerate>
</soapenv:Body>
</soapenv:Envelope>

    其实这个问题的原因是axis2客户端默认的transfer-encoding是chunked,所以在soap 请求报文的body首尾会有两个数字,可以用tcpmon测试一下,.net或者其他一些server是不支持这种模式的,代码中设置一下就可以了,如下:
stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, false);



周末研究出来的,之前咨询了公司的一个senior,帮我查,也给了我一些建议,非常感谢他!

现在执行应该没问题了吧,我倒是想,结果又有问题了
Exception in thread "main" org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement xxxxResponse
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)

这个问题折腾了我三天,在网上查到很多,有的说要用wstx-asl-3.2.1.jar等等,都试了,不通,至少我这边不是因为这个错,很急,一点头绪没有,后来偶然在stub里把org.apache.axiom.soap.SOAPEnvelope _returnEnv打印出来了,就是_returnEnv.toString(),发现和用soapUI返回的结果不一样,因为这个webservice是https的,所以不能用tcpmon,这下明白了,因为返回response里的一下元素不是一直有的,但是在wsdl定义里却没有定义,即没写minOccurs="0",结果用这个wsdl生成的客户端代码如果没取到那些没返回的元素,自然会报错,在wsdl里加上minOccurs="0",重新生成客户端代码,测试,通过。



    最后一步,部署到websphere上后,执行webservice调用出错:


java.net.SocketException: Unconnected sockets not implemented

是证书的问题,花了好几天时间,后来又反复,是因为缺少这个证书的父证书,总之如果在websphere里无法通过host和port得到所有证书,包括从直接使用的证书到证书颁发机构的证书,只有通过导入.cer文件的方法了,问题的根源就在这里:证书!!!

      遇到的问题很烦人,但是收获也不小,这短短几天,让我对webservice的认识加深很多,很惭愧的说,以前只知道用axis等写服务端,然后用wsdl生成客户端,不知道用wsdl还可以生成服务端的。还好有这次机会,我进步了,大家共勉。
分享到:
评论

相关推荐

    android 资料整理 web service

    在Android开发中,Web Service是一种常见的技术,用于让Android客户端应用程序与远程服务器进行通信,获取或发送数据。这里我们主要探讨Android与Web Service的交互,以及相关知识点。 首先,理解Web Service的概念...

    XML/Web Service整理

    在"XML/Web Service整理"的主题中,我们可以深入探讨以下几个知识点: 1. **WSDL(Web Service Description Language)**:这是描述Web服务接口的标准语言,它定义了服务的位置以及如何调用服务。WSDL文件是XML文档...

    整理xfire和spring的集成 web service 面向服务编程 java

    【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...

    Web Service相关规范整理

    Web服务是一种技术,它允许不同系统间的应用程序通过网络进行通信,从而实现数据交换和功能共享。Web服务的核心规范包括WSDL(Web服务描述语言)、UDDI(通用描述、发现及整合)和SOAP(简易对象访问协议)。 WSDL...

    jax-wswebservice注解详解[整理].pdf

    jax-wswebservice注解详解[整理].pdf

    NET平台下Web Service与SQL Server2000的交互通信.pdf

    总结,以上是根据给定文件内容整理出的关于.NET平台下Web Service与SQL Server2000交互通信的知识点。这些知识点涉及到Web Service的工作原理、关键技术和应用实践,以及.NET平台对Web Service的支持。同时,还介绍...

    Web_Service与SAP_ECC系统服务发布与调用[整理].pdf

    Web Service是一种基于互联网的、平台无关的通信协议,它允许不同系统之间进行数据交换和功能调用。在SAP ECC(Enterprise Central Component)系统中,Web Service被广泛用于集成和交互,尤其在跨系统的业务流程...

    JAVA高级开发:使用Axis开发Web Service

    为了更多喜爱开发的程序员也能迅速了解Web Service的开发,我这里整理了一些通过Axis开发Web Service的一些要点,希望能让不熟悉Web Service的开发人员能够迅速掌握Web Service。

    OGC WMS(Web Map Service)网络地图服务 (吐血整理)

    OGC WMS(Web Map Service)是一种基于网络的地图服务规范,由 Open Geospatial Consortium(OGC)提出。它允许用户通过网络访问和共享地理空间数据,提供了一个统一的接口来访问和处理地理空间数据。 GeoServer 是...

    039_《Delphi6.Kylix2.SOAP.Web Service程序设计篇》(附书源码)

    Delphi 教程 系列书籍 (039) 《Delphi6.Kylix2.SOAP.Web Service程序设计篇》 网友(邦)整理 EMail: shuaihj@163.com 【Delphi系列书籍下载】(辛苦整理,大家珍惜!!!) ...

    Xml Web Service开发--网上银行的客户端软件

    ### Xml Web Service 开发 -- 网上银行的客户端软件 #### 项目背景与目标 本项目旨在为某银行开发一款网上银行客户端软件,使银行客户能够通过此软件查看个人账户信息、执行账户间的转账业务以及获取最新存款利率、...

    完整的web service及soa教程的ppt檔

    完整的web service 及 SOA 架構的ppt說明檔,共112頁,有完整的技術範例及細部說明....保證個人整理..深入了解SOA架構的首選

    An algorithm for Web service discovery through their composition.pdf

    通过以上知识点的归纳整理,我们可以看到《一种基于服务组合的Web服务发现算法》这篇论文的核心贡献在于提出了一个新颖的服务发现方法,并详细阐述了其实现原理和潜在优势。这对于推动Web服务领域的发展具有重要意义...

    SSM框架下基本的mapper,dao,service,controller等相关文件的整理

    "SSM框架下基本的mapper,dao,service,controller等相关文件的整理" 在SSM框架中,mapper、dao、service、controller等相关文件是非常重要的组件,它们之间的关系和调用顺序非常关键。下面,我们将对这些组件进行...

    java web 笔记整理

    这份"java web 笔记整理"涵盖了该领域的关键概念和技术,包括Servlet、JSP、MVC模式、JNDI、JTA以及EJB等核心内容。以下是根据笔记内容整理出的知识点详解: 1. **Servlet**:Servlet是Java平台上的服务器端组件,...

    JavaWEB基础知识整理.rar_Java WEB 开发基础知识整理

    - Java EE(Enterprise Edition)是Java Web开发的框架,它包含一系列的API和服务,如EJB(Enterprise JavaBeans),JMS(Java Message Service)和JPA(Java Persistence API)。 2. **Servlet** - Servlet是...

    基于Web Service的分布式视频教学服务.pdf

    Web Service的使用,降低了各个院校开发独立教学平台的需求,减少了重复性工作,同时也提高了资源利用效率。 在系统体系结构方面,B/S模型的多层架构设计,将应用系统分为表示层、中间层和数据层,每层都具有其独立...

    1+X Web前端中级样题加知识点整理.zip

    "1+X Web前端中级样题加知识点整理.zip" 是一个针对Web前端中级水平考试的备考资料包,它包含了样题和相关知识点的详细整理,旨在帮助考生深入理解和掌握Web开发的核心技能。 在Web前端开发中,HTML(HyperText ...

    java_web开发笔记整理.pdf

    Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框...

Global site tag (gtag.js) - Google Analytics