`
e3002
  • 浏览: 79180 次
社区版块
存档分类
最新评论

和一个网友关于webservice的聊天

阅读更多

项目要用到ws,找了些资料,也在群里向大家请教,这是我跟一个朋友的聊天记录,给自己留个方便,以后看看什么的,也希望能给别人一个基本的概念!

 
星星 14:53:06
刚接触,有些不明白
星星 14:52:44
你需要什么?
星星 14:53:51
我用http://
星星 14:54:03
....hello.jws
星星 14:54:33
可以 看到那个 wsdl文件 
星星 14:54:50
那个 server-config.wsdd
星星 14:54:08
你是做java开发的吧?那就不要用jws了,比较难用
星星 14:54:57
是 干什么 的 
星星 14:55:00
对 
星星 14:55:34
jdk1.4,有个xfire不支持 啊
星星 14:54:53
wsdl web service define language
星星 14:55:52
开发-佘 14:54:08
你是做java开发的吧?那就不要用jws了,比较难用
 
星星 14:56:01
那用什么?请赐教 
星星 14:55:45
就是用wsdd
星星 14:57:02
就是server-config.wsdd 这个吗?
星星 14:56:54
其实对于你所有方式的请求,不论使用jws还是直接的wsdl那个url都是在web.xml里面转为org.apache.axis.transport.http.AxisServlet解析
星星 14:57:54
按照网上的例子作了一个不知道为什么不行?
星星 14:57:19
然后通过server-config.wsdd中的配置生成wsdl

 
星星 14:58:36
这应该是服务器端应该生成的吧 ?
星星 14:58:04
需要修改web.xml中的映射,增加一个servlet和若干个到servlet的映射
星星 14:58:51
是,是根据server-config.wsdd和结合wsdd中的指定类名,然后反射出来的方法列表,就是你看到的wsdl文件
星星 14:59:03
然后也是能够被直接使用的
星星 14:59:52

明白 
星星 14:59:56
==
星星 14:59:49
<service name="WSDemo" type="" provider="java:RPC" style="rpc" use="encoded">
        <parameter name="scope" value="Request"/>
        <parameter name="className" value="com.lingtu.gps.ws.demo.WSDemo"/>
        <parameter name="allowedMethods" value="*"/>
        <namespace>http://DBBroker.lingtu.com</namespace>
星星 14:59:56
 </service>
星星 15:00:31
是最重要的部分,也是你可以约定你所提供服务的部分,使用"*"匹配所有的public方法,生成wsdl文件
星星 15:01:24
我是按照这篇文章作的
星星 15:01:26

http://www.ibm.com/developerworks/cn/webservices/ws-startaxis/index.html(初级版)
http://www.ibm.com/developerworks/cn/webservices/ws-deepaxis/index.html (高级版)
星星 15:01:50
明白 
星星 15:03:13
只要通过ie能访问哪个wsdl文件就说明服务器端的ws部署好了?
星星 15:03:01
呵呵,ibm的这个有点太复杂了,我还没接触那么多,不过,如果你用不到session管理和完全的方法级权限约束的话,应该不需要那么复杂,只要一个你提供的类和server-config.wsdd就可以开始工作了
星星 15:04:34
主要是这段“使用定制发布编写Web服务”

 
星星 15:04:40
应该就能满足了 
星星 15:05:00
可是我按照他说的怎么不行啊
星星 15:05:03
郁闷
 
星星 15:04:29
因为axis的webservice使通过wsdl获得的,所以能获得在webservice中意味着能使用,只要你的类是正确的就ok
星星 15:05:13
呵呵,以前也看过,太长了,没看明白,现在用的axis就是只用了一个类,和server-config.wsdd搞定的  

 
星星 15:05:47
如果要约束你的类里面暴露的方法,可以使用完整的名字来代替,而不是用*号通配
星星 15:06:32
call
星星 15:06:07
你是说调用么?
星星 15:06:58
对啊 
星星 15:07:05
先说这个 
星星 15:06:33
那要看是什么语言开发调用了
星星 15:07:21
我写完例子程序后
星星 15:07:22
http://localhost:8080/axis/services/city?wsdl 
星星 15:07:37
这样访问 没效果 
星星 15:07:55
你那有好的资料吗或现成的例子 ?
星星 15:07:58
+好友传给你
星星 15:08:56
好的 
星星 15:10:44
哈哈 
 
星星 15:10:51
你好 
 
星星 15:11:23
如果方便的话,把他哪个小例子帮忙调一下 
 
任我飞 15:11:13
没有时间,不好意思,呵呵,项目有点急
星星 15:12:06
好的
 
星星 15:12:13
十分感谢 啊
 
任我飞 15:12:02
http://localhost/axis/servlet/AxisServlet
这样就可以看到了
星星 15:12:57
好的 
 
星星 15:14:06
以后还得象你多请教啊!
 
任我飞 15:13:34
不客气,你先看看
星星 15:14:22
好的 
 
任我飞 15:16:08
接收文件保存于 C:\Documents and Settings\paul\桌面\WSDemo_rar
星星 15:16:30
axis里的这个方法是干什么的,api没看明白 
 
星星 15:16:32
addParameter
 
任我飞 15:16:46
有这个方法么?写服务的时候没有啊
星星 15:18:07
客户端调用 的 方法 
 
任我飞 15:17:59
你不是用的存根方式调用么?
星星 15:19:11
不是  啊 ?
 
星星 15:19:34
看了一下存根模式 有点麻烦 啊 
 
任我飞 15:19:40
呵呵,存根模式用程序可以生成,生成后直接就可以使用一个对象来调用方法了,你说的麻烦是什么意思?
任我飞 15:19:42
那个
星星 15:20:47
知道的太少 了 
 
星星 15:20:53
任我飞 15:19:40
呵呵,存根模式用程序可以生成,生成后直接就可以使用一个对象来调用方法了,你说的麻烦是什么意思?
 
 
星星 15:20:57
怎么生成 
 
星星 15:21:04
永命令吗 ?
 
星星 15:21:18
我用命令生成了 
 
任我飞 15:20:46
org.apache.axis.client.Call.addParameter(javax.xml.namespace.QName, javax.xml.namespace.QName, CLass, javax.xml.rpc.ParameterMode)
任我飞 15:21:19
是用wsdl2java的一个class程序生成,然后活的对象就可以直接使用了

 
任我飞 15:22:09
那个addParameter是指添加一个什么样的参数值,其中需要指定名称,名字空间,类型,入还是出值
星星 15:22:56
得在命令行 敲命令把 
 
星星 15:23:08
入还是出值 ?
 
 
任我飞 15:22:27
是一个java程序
星星 15:23:15
这个不明白 
 
任我飞 15:22:43
IN标识入参,OUT标识返回值
星星 15:23:47
入 和出 是相对客户还是服务器 啊 ?
 
任我飞 15:24:05
相对服务器,IN标识进入服务器的参数,一般java中的参数都是IN的,返回值会在invoke后给出,在com中使用这个比较多
星星 15:25:59
把你的程序直接放在 tomcat/webapp/下 运行 出错了 
 
星星 15:26:24
org.apache.axis.InternalException: org.apache.axis.ConfigurationException: java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
 
 
星星 15:26:28
错误片断
 
星星 15:26:38
还需要改什么配置马 ?
 
任我飞 15:26:15
你是放axis文件夹么?
星星 15:27:20
这个 WSDemo
 
任我飞 15:26:54
是不是用editplus修改server-config.wsdd
任我飞 15:27:06
只放axis目录就可以了
星星 15:27:51
什么都没动过 
 
星星 15:29:02
试一下 再  
 
星星 15:29:53
还是不行 啊 
 
任我飞 15:29:16
异常

 
星星 15:30:13
org.apache.axis.InternalException: org.apache.axis.ConfigurationException: java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
 
 
任我飞 15:30:20
你就看看结构把,可能是编码问题,jdk14的,注意axis,tomcat,jdk版本
星星 15:31:21
好的自己跳一下 
 
星星 15:31:24
谢啦 
 
星星 15:31:28
忙吧 
 
任我飞 15:30:52
 
星星 15:31:45
 
 
星星 15:54:20
晕我原来例子也抱哪个错了哈 
 
星星 16:15:49
搞定
 
任我飞 16:15:14
原因?
星星 16:16:34
wsdd中 编码是utf-8
 
星星 16:16:47
改成iso-8859-1
 
任我飞 16:16:27
哦,现在支持中文么?
星星 16:17:33
还不清楚那
 
星星 16:17:44
一会试一下 
 
任我飞 16:17:10
呵呵,再试试吧,祝成功
星星 16:18:03
好的
 
星星 16:28:36
网上那个例子我也搞定了,
 
星星 16:29:00
声成的wsdl文件的编码怎么决定啊?
 
任我飞 16:28:54
不清楚,没有用过

 
星星 16:29:49
看到的wsd
 
星星 16:29:50
l
 
星星 16:30:03
文件编码是utf-8
 
星星 16:30:08
忙把
 
星星 16:39:12
ws的开发流程是个什么样子的?
 
星星 16:39:29
服务器端需要给客户端提供什么
 
星星 16:39:34
一个url吗?
 
任我飞 16:39:48

星星 16:41:28
客户端根据url选择自己感兴趣的方法进行调用 ?
 
任我飞 16:41:34
先写一个接口,约定能提供的方法列表及参数信息,提供wsdd,然后向外公布一个url,然后进一步实现这个接口以提供服务,客户端可以根据wsdl来进行服务使用
星星 16:43:52
先写一个接口 ,这个接口是服务器端要用到的吧!
 
任我飞 16:43:40
这个接口是进行服务约定的,服务器需要实现这个接口以提供服务
星星 16:45:59
那就是说客户端也应知道这个接口 ,或者说这个接口是双方协商的 ,然后服务器端实现这些 接口 ,再通过 wsdd提供给 客户供起调用 
 
任我飞 16:45:56
恩,只不过客户端对这个接口的了解只限于从wsdl获取的信息
星星 16:47:07
明白了 
 
星星 16:47:19
看来你对ws的开发应该很熟了  
 
任我飞 16:47:22
呵呵,只是使用,开发的那些东西到不是很清晰。
星星 16:48:56
今天跟你的聊天,受益非浅啊 !
 
星星 16:48:59
谢谢 !
 
星星 16:49:23
我可以把今天的内容放到我得博客上了 哈哈哈 
 
任我飞 16:48:42
有个建议,这个接口要宽,提供的方法中的参数尽量使用原始类型,如String,Map,List之类,尽量不使用太复杂的类
任我飞 16:48:54
恩,有个总结的习惯挺好的
任我飞 16:49:08
在保定上学么?
星星 16:50:19
你怎么知道 ?
 
任我飞 16:50:02
0312,我女朋友以前在农大上学,0312拨熟了
星星 16:51:00
俺已经毕业快一年了 
 
星星 16:51:03
出差那河北 
 
星星 16:51:34
这涉及到能否传对象的问题了 
 
任我飞 16:50:52
呵呵,也是06届的,呵呵
星星 16:51:47
如果传入的参数是个 对象 那就好了 
 
星星 16:52:30
ibm那篇文章有时间得研究一下 啦 
 
星星 16:52:41
很有缘啊 
 
星星 16:52:42
^_^ 
 
任我飞 16:52:49
是,因为使用webservice的基础是soap,所以要传对象也可以,但是比较复杂,而且接口也不推荐将内部对象提供给客户端,这样客户端解析就需要服务器的对象包了,反而不利于webservice的推广,所以使用基础类型和简单集合类如果能解决就尽量不要使用复杂对象
星星 16:54:54
不过对象还是有用的 ,一个对象带n各属性 ,不然你得传n各参数 
 
任我飞 16:56:29
呵呵,那就看你怎么设计接口了,如果n个属性是具有关联的,那可以使用对象,或者使用Map来传递,对于简单对象,需要进行soap序列化,性能问题会比较明显
星星 16:58:05
现说道这吧!有问题了再向你请教 啊  
 
任我飞 16:57:44
其实没有绝对,只要是当前需求的,而且以后可能会这样持续下去的,就是合理的,只不过我遇到的项目恰好都没有太多的参数,而且客户端包括vb,c#,java各种,所以也没办法使用复杂对象
星星 16:59:39
看项目需要吧 !
 
任我飞 16:59:14
恩 

 

 

注:server-config.wsdd放在WEB-IN下,ws服务器将根据它来定位被调用类和方法

分享到:
评论

相关推荐

    一个简单的WEBSERVICE 例子

    根据提供的文件信息,本文将详细解释一个简单的 WebService 示例,并深入探讨其中的关键概念和技术细节。 ### 一、WebService 概念 #### 1.1 WebService 定义 WebService 是一种支持通过网络进行调用的服务形式,...

    java搭建一个简单的WebService

    Java 搭建一个简单的WebService 需要了解WebService 的概念、关键的技术和规则、XML、SOAP、WSDL、UDDI 等技术的作用和使用方法。同时,需要了解如何创建并发布自己的 WS,使用 JAX-WS 方式创建 Web Service Project...

    HTTP接口和WebService接口

    文件"n_dongshifang-smsWebForm"可能是一个与短信服务相关的Web表单,可能是通过HTTP接口或者WebService接口来发送和接收短信的示例。在这样的应用场景中,开发者可能需要理解HTTP请求和响应的结构,以及如何构造和...

    以webservice为后台通过局域网实现微信聊天功能

    【标题】"以webservice为后台通过局域网实现微信聊天功能"的项目...综上所述,这个项目涵盖了Web服务开发、局域网通信技术、API模拟、UI设计以及数据库管理等多个方面的技能,是实现类似微信聊天功能的一个综合实践。

    WebService教程+实例+代码提示功能WebService实例.rar

    开发一个WebService,你需要选择一个编程语言和框架,如Java的JAX-WS或.NET的ASMX。服务端需要定义接口(对应WSDL),实现业务逻辑,并暴露这些服务供外部调用。在处理请求时,服务端会将接收到的SOAP消息解码,执行...

    微软公司提供的关于WebService的经典课件

    2524C_09.ppt可能是一个综合性的部分,涵盖了WebService的高级主题,比如WS-*系列规范(如WS-Security、WS-ReliableMessaging等),这些规范进一步增强了WebService的功能和安全性。 至于www.pudn.com.txt,这很...

    WebService和Ajax总结

    3. **UDDI(统一描述、发现和集成)**:是一个目录服务,用于发布和查找WebService,帮助服务消费者找到所需的服务。 在.NET中,使用C#或VB.NET创建WebService非常简单,只需要继承`System.Web.Services.WebService...

    webservice 第一个小项目

    在这个"webservice 第一个小项目"中,我们将使用Java语言来创建和消费WebService。Java提供了多种库和框架来支持WebService的开发,如JAX-WS(Java API for XML Web Services)和Apache CXF。本项目可能侧重于JAX-WS...

    使用WebService上传一个附件或者多个附件的实现方式

    在本文中,我们将深入探讨如何使用WebService来上传一个或多个附件,特别是处理大附件的情况。这一主题对于构建分布式系统、实现跨平台文件共享以及在不同应用间传递数据至关重要。 首先,让我们理解什么是...

    webservice

    下面是一个简单的WebService示例,该示例展示如何创建一个名为`HelloService`的服务,并将其发布到特定的URL上。 ```java package com.itcast.ws; import javax.jws.WebService; import javax.xml.ws.Endpoint; /...

    webservice获取List案例

    6. **文件08_01_webservice**:这个名字可能表示这是一个关于第八章第一节的WebService示例。这个文件可能是一个包含源代码、配置文件和其他相关资源的项目文件夹。要学习这个案例,你需要解压文件并查看其中的代码...

    WebServiceStudio webservice测试工具

    当你拥有一个Web服务的WSDL地址时,可以输入该地址,软件会自动解析WSDL文件,展示服务提供的所有操作。用户可以选择一个操作,填入必要的参数,然后发送SOAP请求。返回的结果将以XML格式显示,方便分析和调试。 ...

    自己做的一个WebService练习

    这个“自己做的一个WebService练习”项目可能是为了帮助初学者理解并实践WebService的基本概念和技术。在这个项目中,你可能会遇到以下几个关键知识点: 1. **SOAP (Simple Object Access Protocol)**:SOAP是用于...

    WebService服务端和客户端

    在服务端,开发人员通常会创建一个SOAP服务,这通常涉及到以下步骤: 1. 定义服务接口:使用WSDL文件定义服务的输入、输出参数以及服务操作。WSDL是XML格式的,描述了服务的位置、使用的消息格式以及如何调用服务。 ...

    WebService的优势与劣势

    总的来说,WebService作为一种重要的分布式计算模型,在实现系统间的数据交换和服务集成方面发挥着重要作用。尽管它在性能和复杂性等方面存在一定的局限性,但其强大的跨平台能力和灵活性使其成为构建现代企业级应用...

    c++调用webservice(包括静态和动态以及webservice源码)

    例如,可以使用gsoap库,这是一个广泛使用的C和C++的SOAP绑定工具。gsoap生成C++类和函数,这些类和函数可以直接在C++代码中调用来访问WebService。开发者需要先从WSDL文件生成gsoap的输入文件,然后使用gsoap工具...

    控制台客户端和Winfrom客户端跨应用WebService

    对于初学者或开发者来说,这是一个了解和实践WebService交互的好例子。 1. **浏览器调用**:通常,WebService可以通过发送HTTP请求并在返回的XML响应中解析结果来直接通过浏览器访问。这种方式便于快速测试和验证...

    webService

    它可能是一个服务器软件,用于托管和管理WebService,或者是一个特定的服务器配置文件,包含了关于WebService的配置信息。 总之,"webService接口app"涉及到的是移动应用通过WebService与服务器进行数据交换的技术...

    基于webservice实现的一个CXF例子

    总结来说,这个基于CXF的Webservice示例是学习和理解Web服务开发的一个好起点。通过分析和运行其中的代码,开发者可以深入理解CXF如何处理服务的发布、调用以及如何在实际项目中应用。同时,这也是了解和掌握Java ...

    webservice的动态调用和静态调用

    例如,使用System.ServiceModel.Channels.Binding和System.ServiceModel.ChannelFactory可以创建一个到WebService的通道,并进行调用: ```csharp var binding = new BasicHttpBinding(); var endpointAddress = ...

Global site tag (gtag.js) - Google Analytics