myeclipse axis2发布webservicee程序怎样发布

在myeclipse中建立webservice,发布webservice并且调用webservice接口 - 残留 - 推酷
在myeclipse中建立webservice,发布webservice并且调用webservice接口 - 残留
我们在做系统集成时,经常会需要调用webservice接口,本文将讲解在myeclipse中建立一个webservice项目,编写接口和实现类,并且发布webservice,最后在myeclipse中建立客户端调用发布的webservice接口,并且对接口进行测试。本文在结束时提供了测试中使用到的所有源代码。
友情提示,本文使用的工具为myeclipse 8.5。
1、第一步,在myeclipse中建立一个webservice项目。
输入项目名为WebService,选择XFire,如下图所示。
最后点击Finish,就建立好了一个WebService项目。
2、编写接口HelloService和接口实现类HelloServiceImpl,代码如下
package com.
public interface HelloService {
public String hello();
package com.service.
import com.service.HelloS
public class HelloServiceImpl implements HelloService {
public String hello() {
return &Hello World...&;
3、在WebService项目下的services.xml中配置发布的接口,配置如下:
&?xml version=&1.0& encoding=&UTF-8&?&
&beans xmlns=&http://xfire.codehaus.org/config/1.0&&
&name&MyService&/name&
&serviceClass&com.service.HelloService&/serviceClass&
&implementationClass&com.service.impl.HelloServiceImpl&/implementationClass&
&/service&
4、将此WebService项目发布到Tomcat中,本人测试使用的是Tomcat 6.0,首先需要将Tomcat 6.0配置到myeclipse,然后通过myeclipse将项目发布到Tomcat中,并且启动Tomcat,这里省略,启动后,在IE中输入访问地址
,进行访问,其中127.0.0.1为本机IP,9999为Tomcat配置的端口号,WebService为项目发布的名称,services为web.xml文件中配置的Servlet访问地址,访问后如下图所示。
&点击MyService 右边的
,可以看到我们发布的WSDL地址为
,至此我们已经实现了建立WebService项目,并且发布一个简单的WebService接口。
5、在Myeclipse中建立客户端调用WebService发布的接口,并且进行测试。
5-1、首先在Myeclipse中再建立一个WebService项目,项目名为WebServiceClient,建立过程同上。之后在WebServiceClient中建立客户端连接我们发布的WebService接口。
5-2、在WebServiceClient中建立客户端。选中WebServiceClient项目,选择New下的Other,如下图所示。
选择Web Service Client,点击[Next],如下图。
输入信息如上图后,点击[Next],如下图。
输入数据如上图,WSDL URL为我们发布的WSDL地址,这里我们选择了包com.client作为测试代码的存放位置,点击【Next】,如下图。
在上图中对WSDL进行校验,上图显示校验未发现错误,点击【Next】,如下图。
点击【Finish】就完成了建立客户端,并且从我们发布的WebService接口中下载代码到客户端上,如下图
在上图中,我们可以看到从我们发布的WebService接口中下载的代码,下面我们将使用MyServiceClient类调用我们发布的WebService接口,对接口进行测试。
5-3、在WebServiceClient项目中打开MyServiceClient类,我们在main方法中添加一行控制台输出代码,如下
public static void main(String[] args) {
MyServiceClient client = new MyServiceClient();
//create a default service endpoint
MyServicePortType service = client.getMyServiceHttpPort();
System.out.println(service.hello());//新添加的测试代码
//TODO: Add custom client code here
//service.yourServiceOperationHere();
System.out.println(&test client completed&);
System.exit(0);
点击鼠标右键,选择Run as - Java Application,执行main方法,如下图。
由上图可以看到,我们成功通过客户端调用了发布的WebService接口中的方法。
service.hello(); hello方法为我们编写的HelloServiceImpl类中的hello方法。
测试的代码地址为:
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&开发人员应当知道的webservice知识 - Web前端当前位置:& &&&开发人员应当知道的webservice知识开发人员应当知道的webservice知识&&网友分享于:&&浏览:18次开发人员应该知道的webservice知识为什么说说webservice呢?
如今soa炒得火热,各大公司招聘都在要求懂soa技术,虽然大的概念是面向架构服务,说白了就是服务整合,把以前的老应用跟新应用通信,实现应用集成。具体实现技术为webservice。
webservice是什么?
webservice 提供的接口传递数据&#26684;式借助xml数据包传递的,基于soap对象访问协议,并且请求都遵行http协议,由于每中语言,对xml 数据包都遵行这一规则,这就提供了,不同开发平台下、不同系统的接口调用与访问。
规则与协议:
& & & &1.XML:描述数据的标准方法.
  2.SOAP:简单对象访问协议.
  3.WSDL:Web服务描述语言.
  4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。
webservice实现方式(转自:/yexuan_1/blog/static//):&
一、利用jdk web服务api实现,这里使用基于&SOAP
message&的&Web&服务
&&&& 1.首先建立一个Web services EndPoint:
package&H&&&
import&javax.jws.WebS&&&
import&javax.jws.WebM&&&
import&javax.xml.ws.E&&&
@WebService&&
public&class&Hello&{&&
@WebMethod&&
public&String&hello(String&name)&{&&&
return&&Hello,&&&&#43;&name&&#43;&&\n&;&&&
&public&static&void&main(String[]&args)&{&&&
&&&//&create&and&publish&an&endpoint&&&
&&&&&&&Hello&hello&=&new&Hello();&&&
&&&&&&&Endpoint&endpoint&=&Endpoint.publish(&http://localhost:8080/hello&,&hello);&&&&
&&&&&&&&}&&&
&&&&&& & 2.使用&apt&编译&Hello.java(例:apt
-d&[存放编译后的文件目录] Hello.java&)&,会生成 jaws目录
&&&&3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示
&& 4.使用wsimport 生成客户端&&
&&&& 使用如下:wsimport&-p&.&-keep&http://localhost:8080/hello?wsdl
&&& 这时,会在当前目录中生成如下文件:
&&&&&&&&&&
&&&&&& 5.客户端程序:
1class&HelloClient{&&&
2public&static&void&main(String&args[])&{&&&
3&&HelloService&service&=&new&HelloService();&&&
4&&Hello&helloProxy&=&service.getHelloPort();&&&
5&&String&hello&=&helloProxy.hello(&你好&);&&&&&&&&&&
6&&System.out.println(hello);&&&
&&&& 以上方法还稍显繁琐,还有更加简单的方法
二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的
&&& 利用xfire开发WebService,可以有三种方法:
&&&&& 1一种是从javabean 中生成;
&&&&& 2 一种是从wsdl文件中生成;
&&&&&&3 还有一种是自己建立webservice
&&& 步骤如下:
&&&&用myeclipse建立webservice工程,目录结构如下:
&&& 首先建立webservice接口,
&&&&&代码如下:
1package&com.myeclipse.wsE
2//Generated&by&MyEclipse
4public&interface&IHelloWorldService&{
6&&&&public&String&example(String&message);
&&&&& 接着实现这个借口:
&1package&com.myeclipse.wsE
&2//Generated&by&MyEclipse
&4public&class&HelloWorldServiceImpl&implements&IHelloWorldService&{
&6&&&&public&String&example(String&message)&{
&7&&&&&&&&return&
&&&修改service.xml&文件,加入以下代码:
&1&service&
&2&&&&&&&&&name&HelloWorldService&/name&
&3&&&&&&&&&serviceClass&
&4&&&&&&&&&&&&com.myeclipse.wsExample.IHelloWorldService
&5&&&&&&&&&/serviceClass&
&6&&&&&&&&&implementationClass&
&7&&&&&&&&&&&&com.myeclipse.wsExample.HelloWorldServiceImpl
&8&&&&&&&&&/implementationClass&
&9&&&&&&&&&style&wrapped&/style&
10&&&&&&&&&use&literal&/use&
11&&&&&&&&&scope&application&/scope&
12&&&&&/service&
&把整个项目部署到tomcat服务器中&,打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下:&
&然后再展开HelloWorldService后面的wsdl可以看到:
客户端实现如下:
&1package&com.myeclipse.wsExample.
&3import&java.net.MalformedURLE
&4import&java.net.URL;
&6import&org.codehaus.xfire.XFireF
&7import&org.codehaus.xfire.client.C
&8import&org.codehaus.xfire.client.XFireProxyF
&9import&org.codehaus.xfire.service.S
10import&org.codehaus.xfire.service.binding.ObjectServiceF
12import&com.myeclipse.wsExample.IHelloWorldS
14public&class&HelloWorldClient&{
15public&static&void&main(String[]&args)&throws&MalformedURLException,&Exception&{
16//&TODO&Auto-generated&method&stub
17Service&s=new&ObjectServiceFactory().create(IHelloWorldService.class);
18XFireProxyFactory&xf=new&XFireProxyFactory(XFireFactory.newInstance().getXFire());
19String&url=&http://localhost:8989/HelloWorld/services/HelloWorldService&;
21&&&&&&&&try
22&&&&&&&&{&&&&&&&&&&&&
23&&&&&&&&&&&&
24&&&&&&&&&&&&IHelloWorldService&hs=(IHelloWorldService)&xf.create(s,url);
25&&&&&&&&&&&&String&st=hs.example(&zhangjin&);
26&&&&&&&&&&&&System.out.print(st);
27&&&&&&&&}
28&&&&&&&&catch(Exception&e)
29&&&&&&&&{
30&&&&&&&&&&&&e.printStackTrace();
31&&&&&&&&}
&&&&&& 这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net&做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:
&1public&static&void&main(String[]&args)&throws&MalformedURLException,&Exception&{
&2&&&&&&&&//&TODO&Auto-generated&method&stub
&3&&&&&&&&Service&s=new&ObjectServiceFactory().create(IHelloWorldService.class);
&4&&&&&&&&XFireProxyFactory&xf=new&XFireProxyFactory(XFireFactory.newInstance().getXFire());
&5&&&&&&&&
&6&&&&&&&&
&7//远程调用.net开发的webservice
&8Client&c=new&Client(new&URL(&.cn/webservices/qqOnlineWebService.asmx?wsdl&));
&9&&&&&&&&Object[]&o=c.invoke(&qqCheckOnline&,&new&String[]{&&,&&});
10&&&&&&&&
11//调用.net本机开发的webservice
12Client&c1=new&Client(new&URL(&http://localhost/zj/Service.asmx?wsdl&));
13Object[]&o1=c1.invoke(&HelloWorld&,new&String[]{});
14&&&&&&&&
三、使用axis1.4调用webservice方法
&&&前提条件:下载axis1.4包和tomcat服务器&&&,并将axis文件夹复制到tomcat服务器的webapp文件夹中
&& 这里我就说一下最简单的方法:
&&&&&&&& 首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入http://localhost:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下:
&1import&javax.xml.rpc.S
&2import&javax.xml.rpc.ServiceE
&3import&javax.xml.rpc.ServiceF
&5import&java.net.MalformedURLE
&6import&java.net.URL;
&7import&java.rmi.RemoteE
&9import&javax.xml.namespace.QN
11public&class&TestHelloWorld&{
14&&&&public&static&void&main(String[]&args)&throws&MalformedURLException,&ServiceException,&RemoteException&{
15&&&&&&&&//&TODO&Auto-generated&method&stub
16&&&&&&&&
17&&&&&&&&String&wsdlUrl&=&http://localhost:8989/axis/HelloWorld.jws?wsdl&;
18&&&&&&&&String&nameSpaceUri&=&http://localhost:8989/axis/HelloWorld.jws&;
19&&&&&&&&String&serviceName&=&&HelloWorldService&;
20&&&&&&&&String&portName&=&&HelloWorld&;
21&&&&&&&&
22&&&&&&&&ServiceFactory&serviceFactory&=&ServiceFactory.newInstance();
23&&&&&&&&Service&afService&=serviceFactory.createService(new&URL(wsdlUrl),new&QName(nameSpaceUri,&serviceName));
24&&&&&&&&HelloWorldInterface&proxy&=&(HelloWorldInterface)afService.getPort(new&QName(nameSpaceUri,&portName),HelloWorldInterface.class);
25&&&&&&&&System.out.println(&return&value&is&&&#43;proxy.getName(&john&)&)&;
26&&&&&&&&
四、使用axis2开发webservice(这里首先感谢李宁老师)&&&&
& 使用axis2 需要先下载&
&& axis2-1.4.1-bin.zip
&& axis2-1.4.1-war.zip
&&http://ws.apache.org/axis2/&&&
& 同理,也需要将axis2复制到webapp目录中
在axis2中部署webservice有两种方法,
&&& 第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名
&&& 第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明
&&& 下面分别说明使用方法:
&&& 1.pojo方式:在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。其中POJO中所有的public方法将被发布成WebService方法。先实现一个pojo类:
&1public&class&HelloWorld{
&2&&&&public&String&getName(String&name)
&4&&&&&&&&return&&你好&&&&#43;&
&5&&&&}&&&&
&6&&&&public&int&add(int&a,int&b)
&8&&&&&&&&return&a&#43;b;
&9&&&&}&&&&
&&&由于这两个方法都是public类型,所以都会发布成webservice。编译HelloWorld类后,将HelloWorld.class文件放到%tomcat%\webapps\axis2\WEB-INF\pojo目录中(如果没有pojo目录,则建立该目录),然后打开浏览器进行测试:
输入一下url:&
http://localhost:8080/axis2/services/listServices
会列出所有webservice
这是其中的两个webservice列表,接着,在客户端进行测试:
首先可以写一个封装类,减少编码,代码如下:
&1package&MZ.GetWebS
&2import&javax.xml.namespace.QN
&4import&org.apache.axis2.AxisF
&5import&org.apache.axis2.addressing.EndpointR
&6import&org.apache.axis2.client.O
&7import&org.apache.axis2.rpc.client.RPCServiceC
10public&class&GetWSByAxis2&{
11&&&&&&private&static&String&EndPointU
12&&&&&&private&static&String&QUrl=&http://ws.apache.org/axis2&;
13&&&&&&private&QName&opAddE&
14&&&&&&public&String&WSU
15&&&&&&public&RPCServiceClient&setOption()&throws&AxisFault
17&&&&&&&&&&RPCServiceClient&serviceClient&=&new&RPCServiceClient();
18&&&&&&&&&&Options&options&=&serviceClient.getOptions();
19&&&&&&&&&&EndpointReference&targetEPR&=&new&EndpointReference(WSUrl);
20&&&&&&&&&&options.setTo(targetEPR);
21&&&&&&&&&&return&serviceC
24&&&&&&public&QName&getQname(String&Option){
25&&&&&&&&&&
26&&&&&&&&&&return&new&QName&(QUrl,Option);
28&//返回String
29&&&&&&public&String&getStr(String&Option)&throws&AxisFault
31&&&&&&&&&&RPCServiceClient&serviceClient&=this.setOption();&
33&&&&&&&&&&opAddEntry&=this.getQname(Option);
35&&&&&&&&&String&str&=&(String)&serviceClient.invokeBlocking(opAddEntry,&
36&&&&&&&&&&&&&&&&&&&&&&&&&&new&Object[]{},&new&Class[]{String.class&})[0];
37&&&&&&&&&return&
39//&返回一维String数组
40&&&&&&public&String[]&getArray(String&Option)&throws&AxisFault
42&&&&&&&&&&RPCServiceClient&serviceClient&=this.setOption();&
44&&&&&&&&&&opAddEntry&=this.getQname(Option);
46&&&&&&&&&String[]&strArray&=&(String[])&serviceClient.invokeBlocking(opAddEntry,&
47&&&&&&&&&&&&&&&&&&&&&&&&&&new&Object[]{},&new&Class[]{String[].class&})[0];
48&&&&&&&&&return&strA
50&&&&&&//从WebService中返回一个对象的实例
51&&&&&public&Object&getObject(String&Option,Object&o)&throws&AxisFault
53&&&&&&&&RPCServiceClient&serviceClient&=this.setOption();&
54&&&&&&&&&QName&qname=this.getQname(Option);
55&&&&&&&&&Object&object&=&serviceClient.invokeBlocking(qname,&new&Object[]{},new&Class[]{o.getClass()})[0];
56&&&&&&&&&return&
59/////////////////////////////////////////&&&&&&&读者可以自己封装数据类型,如int,byte,float等数据类型
客户端调用方法:
MZ.GetWebService.GetWSByAxis2&ws=new&MZ.GetWebService.GetWSByAxis2();
ws.WSUrl=&http://localhost:8989/axis2/services/HelloWorld&;
HelloWorld&hello=&(HelloWorld)ws.getObject(&getName&,&HelloWorld.class);
&&&&&&&&&&&&
&&&&&&&&&&&
&System.out.println(hello.getName(&zhangjin&));
&&&& 2.使用service.xml发布webservice,这种方式和直接放在pojo目录中的POJO类不同。要想将MyService类发布成Web
Service,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:
&service&name=&HelloWorld&&
&&&&&description&
&&&&&&&&HelloWorld&webservice
&&&&&/description&
&&&&&parameter&name=&ServiceClass&&
&&&&&&&&service.HelloWorld&&
&&&&&/parameter&
&&&&&messageReceivers&
&&&&&&&&&messageReceiver&mep=&http://www.w3.org/2004/08/wsdl/in-out&
&&&&&&&&&&&&class=&org.apache.axis2.rpc.receivers.RPCMessageReceiver&&/&
&&&&&&&&&messageReceiver&mep=&http://www.w3.org/2004/08/wsdl/in-only&
&&&&&&&&&&&&class=&org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver&&/&
&&&&&/messageReceivers&
&/service&
其中&service&元素用于发布Web Service,一个&service&元素只能发布一个WebService类,name属性表示WebService名,如下面的URL可以获得这个WebService的WSDL内容:
http://localhost:8080/axis2/services/myService?wsdl
& 除此之外,还有直接可以在其中制定webservice操作方法:可以这样些service.xml文件
&1&service&name=&HelloWorld&&
&2&&&&&description&
&3&&&&&&&HelloWorld&service
&4&&&&&/description&
&5&&&&&parameter&name=&ServiceClass&&
&6&&&&&&&&service.HelloWorld&&
&7&&&&&/parameter&
&8&&&&&operation&name=&getName&&
&9&&&&&&&&&messageReceiver&class=&org.apache.axis2.rpc.receivers.RPCMessageReceiver&&/&
10&&&&&/operation&
11&&&&&operation&name=&add&&
12&&&&&&&&&messageReceiver
13&&&&&&&&&&&&class=&org.apache.axis2.rpc.receivers.RPCMessageReceiver&&/&
14&&&&&/operation&
15&/service&
如果要发布多个webservice,可以在文件两段加上&serviceGroup&&service&&/service&...&service&&/service&&/serviceGroup&发布
以上纯属个人理解,如有疑义,欢迎大家拍砖啊!
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有java通过Myeclipse发布的WebService怎么使用HTTP的GET访问_百度知道
java通过Myeclipse发布的WebService怎么使用HTTP的GET访问
  WebService的HTTP GET请求,有两种方式,一种就是通过java代码使用阿帕奇的Httpclient类,使用get请求调用WebService;另外一种就更简单了,直接浏览器打开,地址栏输入webservice的url就能返回数据了,webservice返回的数据格式一般都是JSon格式。  Web services要使用两种技术:  XML(标准通用标记语言下的一个子集):XML是在web上传送结构化数据的伟大方式,Web services要以一种可靠的自动的方式操作数据,HTML(标准通用标记语言下的一个应用)不会满足要求,而XML可以使web services十分方便的处理数据,它的内容与表示的分离十分理想;  SOAP:SOAP使用XML消息调用远程方法,这样web services可以通过HTTP协议的post和get方法与远程机器交互,而且,SOAP更加健壮和灵活易用;
其他类似问题
为您推荐:
提问者采纳
soap方式不能直接在浏览器中调用,如果不支持,就不能GET,你发布的webservice是否支持rest访问形式,是的,可以在浏览器中直接用url调用,是。另外的问题webservice分为soap和rest两种,rest是它的一种变种形式,查看天气的webservice,通常所说的webservice是soap方式.net写的没错。也就是说
提问者评价
谢了,受教
来自团队:
其他1条回答
用Myeclipse工具也可以通过直接新建一个wsdl文件或者是URL直接生成客户端代码,具体操作教程太多了,你可以到百度文库里面找找webService这东东不用关心服务端是用什么实现的,你只要清楚你是用什么语言来调用,一般都是通过axis或axis2来根据服务端提供的URL或者是wsdl文件生成客户端代码调用
但是请问,直接在浏览器中输入webservice的url并且在url上传参数调用呢!我的配置是:MyEclipse8.6+JAX-WS+Tomcat6+JDK6补充:我已经知道怎么使用wsdl生成客户端并且知道使用什么代码调用!
只是不知道怎么如何实现上面说的浏览器中的URL调用!
谢谢,希望帮忙,可以的话QQ:
webservice的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁webservice
WebService发布与调用
(Myeclipse工具版JAX-WS)
此方法发布的Web&Service服务为服务器启动时即完成服务的发布。然后通过WSDL访问即可。
一:服务的发布
首先创建一个Web&Service&Project。此处命名为WSTest.
注意:还需要导入JAX-WS的jar包。
下面就可以写发布服务的业务类代码了。这里为新建一个java类为SayHello。代码如下:
然后将上面这个类中的sayHello方法发布,新建一个web&service.如下图:
然后在下一步的java&class中输入上面我们建的要发布的类com.sux.ws.SayHello
点击finish,自动生成SayHelloDelegate类
最后将项目部署至tomcat中,服务发布成功;
在浏览器输入我的项目地址:http://192.168.16.103:8080/WSTest/SayHelloPort?wsdl。
红色部分http://192.168.16.103:8080/为tomcat的地址,WSTest为项目名称,SayHelloPort为SayHelloDelegate类中的portName.
然后看到wsdl就证明发布成功了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1928次
排名:千里之外
原创:14篇
转载:18篇
(4)(11)(3)(9)(5)

我要回帖

更多关于 axis2发布webservice 的文章

 

随机推荐