一刻千金黑户可以做吗可以在电脑登陆吗

WebService教程详解(一)
字体:[ ] 类型:转载 时间:
WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求,接下来通过本文给大家介绍WebService教程详解(一),对webservice教程感兴趣的朋友一起学习吧
Web Services 可以将应用程序转换为网络应用程序。
通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能。
Web Services 可以被其他应用程序使用。
通过 Web Services,您的会计部门的 Win 2k 服务器可以与 IT 供应商的 UNIX 服务器相连接。
基本的 Web Services 平台是 XML+HTTP。
Web services 使用 XML 来编解码数据,并使用 SOAP 来传输数据。
什么是webService
WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用.
1:从WebService的工作模式上理解的话,它跟普通的Web程序(比如ASP、JSP等)并没有本质的区别,都是基于HTTP传输协议的程序。
2:WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。SOAP协议实际上就是一种基于XML编码规范的文本协议。
webService的技术支持
Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议有:
  可扩展的标记语言XML 是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD 定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
  Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB. NET或C# 来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP。
  SOAP即简单对象访问协议(Simple Object Access Protocal),它是用于交换XML编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。
  Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。
  Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
  UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。 调用RPC与消息传递
  Web Service本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法:RPC远程过程调用 和消息传递。使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。
如何发布一个WebService?
1、用Jdk1.6.0_21以后的版本发布一个WebService服务.并通过地址栏查看它的wsdl文档.
2、通过wsimport生成客户端代码,调用并查看运行的结果.(学会如何调用是我们的重点).
需要注意的是,jdk1.6._07以后jdk版本发布WebService时必须要完整的对代码进行注解,如果使用的是jdk1.6.0_21以后版本,因为它已经内含了ws2.1所以,可以只对类添加@WebService的注解.
以下是两段不同的代码:
在jdk1.6.0_13的版本上发布的ws:
package com.
import javax.jws.WebM
import javax.jws.WebS
import javax.jws.soap.SOAPB
import javax.jws.soap.SOAPBinding.S
import javax.xml.ws.E
@WebService(targetNamespace="http://loalhost:9999/helloworld")
@SOAPBinding(style=Style.RPC)//只支持RPC的消息风格
public class HelloWorld {
//以下通过@WebMethod注解,对外公开方法
@WebMethod
public String sayHello(){
return "HelloWorld";
public static void main(String[] args) {
Endpoint.publish("http://localhost:9999/helloworld",new HelloWorld());
2:以下是在jdk1.6.0_24上发布的WebService代码:
package com.
import javax.jws.WebS
import javax.xml.ws.E
@WebService//注意只有此一个注解,此注解也是必须的,默认的SOAP消息风格为:DOCUMENT
public class HelloWorld {
public String sayHello(){
return "HelloWorld";
public static void main(String[] args) {
Endpoint.publish("http://localhost:9999/helloworld",new HelloWorld());
第一个WebService服务
package com.
import javax.jws.WebS
import javax.xml.ws.E
* 第一个WebService服务应用
//通过注解,标明此类发布为一个WebService
@WebService
public class HelloWorld {
public String sayHello(){
return "Hello World";
//在main方法中,使用javax.xml.ws.Endpoint端点发布一个应用
public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:9999/helloworld",
new HelloWorld());
代码说明:HelloWorld类的所有非静态公开方法将对外部暴露.
Wsimport工具说明:
 wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具.当然,无论服务器端的WebService是用什么语言写的,都将在客户端生成Java代码.服务器端用什么写的并不重要.
 wsimport.exe位于JAVA_HOME\bin目录下.
 常用参数为:
• -d&目录& - 将生成.class文件。默认参数。
• -s&目录& - 将生成.java文件。
• -p&生成的新包名& -将生成的类,放于指定的包下。
(wsdlurl) - http://server:port/service?wsdl,必须的参数
1:可以通过java –version检查你当前的版本号.如果版本太低可以安装高版本的jdk.
或直接将别人已安装好的jdk目录拷贝到你的机器如D:\jdk1.6.0_24目录下.
因为以前的环境变量已经设置成以前老版本的jdk目录,即JAVA_HOME和PATH两个环境变量.
可以再重新设置一下环境变量为:JAVA_HOME=D:\jdk1.6.0_24,path=%JAVA_HOME%\bin,
重新设置了环境变量后,要重新打开一个doc(命令行)窗口.才生效.
如果不想修改原来已经配置好的环境变量,可以命令行窗口输入以下命令,使jdk1.6.0_24生效:
set path = D:\jdk1.6.0_24\%PATH%(回车即可)
再通过java –version查看jdk的版本号是否已经发生变化.
2:转到一个相对干净的目录下,我在d盘上新建立一个目录名为:ws,并转到此目录下.
3:开启你的webService.
4:输入以下命令:
wsimport –s . http://127.0.0.1:9999/helloworld?wsdl
参数说明:-s是指编译出源代码文件,后面的.(点)指將代碼放到當前目錄下.
最后面的http….是指获取wsdl说明书的地址.
5:此时,将生成.java文件和.class文件.(都包含原始包名).将代码Copy到你的项目中.(只拷贝java文件)
6:在新的项目中,新一个类,(可位于任意包下),对上面生成的代码进行调用,见下一页ppt.
7:wsimport其他参数说明,我们经常使用的参数为-d,-s,-p
-d&目录&将会生成.class文件.
示例:wsimport –d . http://127.0.0.1:9999/helloworld?wsdl
-s&目录&将会生成.java文件.
示例:wsimport –s . http://127.0.0.1:9999/helloworld?wsdl
-p&包名&将生成的文件(.java或是.class修改成指定的包名)
示例:wsimport -s . -p com.beijing.itcast http://127.0.0.1:9999/helloworld?wsdl
对于-p参数,注意包名的修改,它将所生成类,全部置于通过-p指定的包下.(演示)
需要说明的是,当仅使用-p参数时,它也将同时使用-d即编译成.class文件. –d参数写或不写,它都在那里,不离不弃.
RunMain.java的源代码如下:
package com.
import com.itcast.HelloW
import com.itcast.HelloWorldS
* 通过调用生成的类,来调用远程代码
public class RunMain {
public static void main(String[] args) {
//从HelloWorldSerice的getHelloWorldPort方法中返回调用接口
HelloWorld helloWorld =
new HelloWorldService().getHelloWorldPort();
String str = helloWorld.sayHello(); //执行调用
System.err.println(str);//返回HelloWorld字符串
WebService与普通Web程序的区别
1、 WebService只采用HTTP POST方式传输数据,不使用GET方式;
1) Tttp post的contentType为
(1)application/x-www-form-urlencoded
2) WebService的contentType为
(2) Text/xml soap1.1
(3) application/soap+xml –soap1.2
2、WebService从数据传输格式上作了限定。
WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。SOAP协议实际上就是一种基于XML编码规范的文本协议。
WebService和web服务器的区别:
我们可以把WebService看作是Web服务器上应用;反过来说,Web服务器是WebService运行时所必需的容器。这就是它们的区别和联系。
WebService的特点:
1、 WebService通过HTTP POST方式接受客户的请求
2、 WebService与客户端之间一般使用SOAP协议传输XML数据.
3、它本身就是为了跨平台或跨语言而设计的。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具【求助】我想让一个WebService的WSDl文件不暴露出来,能实现吗?_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:558,158贴子:
【求助】我想让一个WebService的WSDl文件不暴露出来,能实现吗?收藏
RT,需要开发一个WebService但仅有我们系统自己调用,我该怎么做才能让wsdl文件不暴露出来,求破
[SALOON索龙]服装整烫及配套设备的一次革命!!!
你就沉了吧
这么好的帖子尽然就沉了,可惜了啊!!!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或如何手工发布一个WebService - java - ITeye技术网站
博客分类:
注意:Web服务器是运行在JDK之上,而Axis站点(也就是一个应用)是运行在Web服务器之上的,所以他是web容器的子容器(因为里面可以管理些东西,只是概念上的吧...)
所以需要先下载Axis包,然后在他的Webapps下面找到一个axis,然后放到Tomcat的Webapps下面。
发布服务的两种方法:
1.即时发布:
写一个java类,然后改成jws后缀,然后放到axis下面就可以了,注意的是即时发布的话不能在站点的List中看见,只能直接敲类名哦,如:http://localhost:8080/axis/helloWebService.jws
但是不能写包名,不用用class文件等等限制
注意啦:在 myeclipse上有个现成的客户端。。。哈哈。。。先点击Web service explore这个小图标,然后点击右上角切换到wsdl page,wsdl的地址给他,然后就可以使用了
2.定制服务
写一个javaBean,然后生成class文件,连同包一起拷贝到axis /web-inf/classes下面,然后再粘贴一个deloy.wsdd放到classes目录下面,并修改deloy.wsdd文件的内容。
&service name="MyFirstWebService" provider="java:RPC" style="document" use="literal"&
&parameter name="className" value="com.test.CaclSOA"/&
&parameter name="allowedMethods" value="*"/&这里service的名字可以随便写,为什么呢,因为里面的参数会进行类名的映射的,不过一般把服务名和类名取的一样
&/service&
切换到命令航下,执行
java org.apache.axis.client.AdminClient deploy.wsdd
//注意:用命令执行deploy.wsdd并生成server-config.wsdd的过程美其名曰发布
wsdd是一个发布文件。。。wsdl是一个描述文件
我们执行AdminClient deploy.wsdd这个命令是为了什么? 他干了什么事情?
答:他的作用是把自己里面的内容添加到server-config.wsdd中,所以。。。我们不用这个命令,直接修改server-config.wsdd也是可以的。。。
下面是配置环境变量然后根据命令执行deploy.wsdd 生成server-config.wsdd 的过程
配置axis环境变量
set JAVA_HOME=D:\j2sdk1.4.1_01
set CATALINA_HOME=D:\Tomcat 5.0
set classpath=.;%JAVA_HOME%\lib\dt.%JAVA_HOME%\lib\tools.
set Path=%Path%;%JAVA_HOME%\%CATALINA_HOME%\bin
set AXIS_HOME=E:\Tomcat\webapps\axis
set AXIS_LIB=%AXIS_HOME%\WEB-INF\lib
set AXISCLASSPATH=%AXIS_LIB%\axis.%AXIS_LIB%\commons-discovery.%AXIS_LIB%\commons-logging.%AXIS_LIB%\jaxrpc.%AXIS_LIB%\saaj.%AXIS_LIB%\log4j-1.2.8.%AXIS_LIB%\activation.%AXIS_LIB%\mail.%AXIS_LIB%\wsdl4j-1.5.1.%AXIS_LIB%\axis-ant.%AXIS_LIB%\xmlsec.jar
set classpath=.;%JAVA_HOME%\lib\dt.%JAVA_HOME%\lib\tools.%CATALINA_HOME%\common\lib\servlet.
启动tomcat ,运行-cmd
到deploy.wsdd文件所在目录下使用命令
E:\Java\Tomcat 5.5\webapps\Axis1.4_samples2\WEB-INF&java -Djava.ext.dirs="e:\Jav
a\Tomcat 5.5\webapps\axis\WEB-INF\lib" org.apache.axis.client.AdminClient deploy
我的Tomca 5.5之间有个空格,所以需要将整个路径使用“”包含,运行这个命令后会在E:\Java\Tomcat 5.5\webapps\axis\WEB-INF 下生成一个 server-config.wsdd 这个就是我们需要的
//---------------------下面是反向工程,通过wsdl生成server,再发布的过程------------------------------------------
1.生成原代码
//这个里面是wsdl2javaserver.bat -----通过wsdl生成java代码和deploy.wsdd
AXISCLASSPATH_TEMP=.\axis_lib\axis..\axis_lib\log4j-1.2.8..\axis_lib\commons-logging-1.0.4..\axis_lib\commons-discovery-0.2..\axis_lib\jaxrpc..\axis_lib\saaj..\axis_lib\wsdl4j-1.5.1..\axis_lib\xercesImpl..\axis_lib\xml-apis.jar
D:\program\openEAP3.18\jdk\bin\java -cp
%AXISCLASSPATH_TEMP%
org.apache.axis.wsdl.WSDL2Java ./CTDDataSynService_1_0.wsdl -o .\源代码\src -p com.suntek.ctdmanager.ws.server.data -s
2。发布服务。。。也就是执行一个命令把deploy.wsdd里面的内容写入到service-config.wsdd中去
//wsdd.bat里面的内容
AXISCLASSPATH_TEMP=.\axis_lib\axis..\axis_lib\log4j-1.2.8..\axis_lib\commons-logging-1.0.4..\axis_lib\commons-discovery-0.2..\axis_lib\jaxrpc..\axis_lib\saaj..\axis_lib\wsdl4j-1.5.1..\axis_lib\xercesImpl..\axis_lib\xml-apis.jar
D:\program\openEAP3.18\jdk\bin\java -cp
%AXISCLASSPATH_TEMP% org.apache.axis.client.AdminClient -l http://localhost:9080/ctdmanager/servlet/AxisServlet -P
./deploy.wsdd
浏览: 492275 次
来自: 深圳
/articl ...
------------------------- ...
大神,请问 string 类型 定义为 oracle的 cha ...
Line:103
f.doFilter(msg);
是否需要 ...webservice到底是怎么一回事啊 - 开源中国社区
当前访客身份:游客 [
当前位置:
webservice到底是怎么回事啊,我在网上找了很多都是实际开发的实例,我自己写的
try { & & & & & & String endpoint = &http://pcos-0/newmm/MyServicePort?wsdl&; & & & & & & //直接引用远程的wsdl文件 & & & & & &//以下都是套路& & & & & & & org.apache.axis.client.Service service = new org.apache.axis.client.Service(); & & & & & & Call call = (Call) service.createCall(); & & & & & && & & & & & & & & & & & & call.setTargetEndpointAddress(endpoint); & & & & & &&
& & & & & & QName qName=new QName(&/&,&test&); & & & & & & call.setOperationName(qName);//WSDL里面描述的接口名称 & & & & & && & & & & & & call.addParameter(&parametersdddd&, XMLType.SOAP_STRING,ParameterMode.IN);& & & & & & & call.setReturnType(XMLType.SOAP_STRING); & & & & & && & & & & & & System.out.println(call.invoke( new Object[]{&nihaoma&}));
& & & & & & System.out.println( call.getResponseMessage().getSOAPPartAsString());
始终返回null,哪位高手指点指点
共有11个答案
<span class="a_vote_num" id="a_vote_num_
要执行这个
--- 共有 1 条评论 ---
其实只要adminclient.main执行以下就可以了
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
tomcat启动以后要执行一个命令的,执行没有?
不然发布不成功的
--- 共有 1 条评论 ---
发布的了啊,可以正常显示WSDL文档
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
客户端没发现问题
实在不行下我空间的myaxis包改一下
--- 共有 4 条评论 ---
: 那个网页打不开啊
(3年前)&nbsp&
: 在哪儿啊,没有看到啊
(3年前)&nbsp&
: 那用我的client该下
那个肯定能用的
(3年前)&nbsp&
我觉得就是客户端的问题啊,我访问其他的webservice也不成功
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
http://sourceforge.net/projects/wangframe/files/myaxis.zip
--- 共有 1 条评论 ---
你这个也不能正常运行啊,一直提示 there is no SOAP service at this location
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
大姐,我这个是百试不爽
你哪里的环境
看看防火墙之类
--- 共有 1 条评论 ---
tomcat,就本地测试,没有任何防火墙
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
AXIS error
Could not generate WSDL!
There is no SOAP service at this location
是不是这样,那说明你发布wsdd失败。wsdd配置服务有问题的
--- 共有 1 条评论 ---
是啊,服务有问题啊
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
wsdd贴出来
--- 共有 1 条评论 ---
都是用的你的,没有改动任何文件
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
引用来自“王瑞平”的答案wsdd贴出来 我都是用的你的,没有改动任何文件
&?xml version=&1.0& encoding=&UTF-8&?&
&deployment xmlns=&http://xml.apache.org/axis/wsdd/&
xmlns:java=&http://xml.apache.org/axis/wsdd/providers/java&
&service name=&test& provider=&java:RPC&&
&parameter name=&className& value=&test&/&
&parameter name=&allowedMethods& value=&*&/&
&parameter name=&scope& value=&Request&/&
&/service&
&/deployment&
<span class="a_vote_num" id="a_vote_num_
命令行执行文本文件里的命令返回什么?
--- 共有 1 条评论 ---
命令?文本文件?没有这些啊
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
我的暴力有一个TXT文件--
--- 共有 1 条评论 ---
只有一个1.txt
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://127.0.0.1:8080/myaxis/servlet/AxisServlet deploy.wsdd
(3年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
安西都护...的其它问题
类似的话题}

我要回帖

更多关于 一刻千金不发货 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信