webservic怎么用eclipse创建不了web

1486人阅读
WebService(3)
上一篇介绍了如何用Eclipse生成JAX-WS WebService服务端,现在介绍如何生成客户端
1、 创建一个web工程,Dynamic Web Project (File-&New-&Dynamic Web Project),取名叫“ws-client”
2、 创建WebService客户端(选中创建的客户端右击New-&Other-&Web Services-&Web Service Client),在Service definition中输入wsdl文件的地址,并在Configuration中选择运行环境,我的环境是Tomcat7.0和CXF,然后一直点击Next,最后Finish。
Eclipse后台开始生成文件并打印日志
Loading FrontEnd jaxws ...
Loading DataBinding jaxb ...
wsdl2java -client -d E:\workspace\ws-client\.cxftmp/src -classdir E:\workspace\ws-client\build\classes -p http://impl.service.demo.ws/=ws.demo.service.impl -impl -validate -exsh false -dns true -dex true -wsdlLocation http://localhost:8081/ws-server/services/AddServiceImplPort?wsdl -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1 http://localhost:8081/ws-server/services/AddServiceImplPort?wsdl
wsdl2java - Apache CXF 3.1.6
生成文件后项目结构:
3、 写main函数
import ws.demo.service.AddS
import ws.demo.service.impl.AddServiceImplS
public class Main {
public static void main(String[] args) {
AddServiceImplService service = new AddServiceImplService();
AddService port = service.getAddServiceImplPort();
int result = port.add(3, 4);
System.out.println(result);
运行程序,输出:
六月 14, :15 下午 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
信息: Creating Service {http://impl.service.demo.ws/}AddServiceImplService from WSDL: http://localhost:8081/ws-server/services/AddServiceImplPort?wsdl
其中7就是最后通过WebService调用服务端运行的结果。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:23781次
排名:千里之外
原创:42篇
(1)(3)(5)(3)(7)(11)(13)axis2+eclipse 开发webservice - zeromike - ITeye技术网站
博客分类:
我在这篇博文的基础上实践了一把。
下载页面:
Apache Axis2 Binary Distribution(1.6.2):
WAR Distribution:(这个可以管理我们的webservice的服务)
Eclipse 插件:
Service Archive Wizard - Eclipse Plug-in(用来将服务代码打包成后缀名为.aar文件的插件):
Code Generator Wizard - Eclipse Plug-in(用来将服务代码生成wsdl文件以及解析将wsdl文件生成客户端代码的插件):
安装插件:
我这里用的是eclipse3.7 indigo,以我的环境为例:将两个插件解压后放到eclipse安装目录下的dropins目录下面,启动Eclipse
File - New - Other 可以找到:
二、部署axis2 war
解压下载的axis2-1.6.2-war.zip 得到一个axis2.war文件,将这个文件丢到tomcat\webapps目录,启动tomcat
访问http://localhost:8080/axis2
看到如下界面,部署成功。
三、编写服务代码
public class Axis2WB {
* 提供了一个说Hello的服务
public String sayHello(String name){
return "Hello "+
* 提供了一个做加法的服务
* @param a
* @param b
public int add(int a,int b){
return a +
四、将服务代码打包成arr文件:
Eclipse菜单- New - File - Other -Axis2 Service Archiver
class file location:为刚刚写的Axis2WB类所在工程的bin目录
选择skip wsdl
如果你的Axis2WB有引用jar包,则在这里选择。我写的没有,所以next
由于我们没有编写service.xml,所以勾选让它自动生成,next
输入服务名称(自定义)、类全名、点击load将方法名查出来、选择Search declared methods only,就会看到我们定义的方法,勾选上
设置aar文件名以及存放目录(我是放在桌面)--Finish:
完成后,可以看到桌面上多了一个test_service.aar文件,我们用winrar打开:
有没有感觉很眼熟?很像一个jar包、我们点击META-INF目录进去,可以看到插件给我们生成的一个service.xml,打开看看(是不是明白插件做了些啥了):
将test_service.aar文件丢到之前部署的axis2应用的WEB-INF\services\目录下面,重启tomcat
点击Service
六、生成客户端代码
通过axis2 的Eclipse插件生成客户端代码:
Eclipse菜单-File-New-Other-Axis2 Code Generator
Generate Java source code from a WSDL file:根据WSDL生成webservice客户端的java代码。(在这里,我们选择这个)
默认就行:
选择客户端项目:
点击Finish生成代码,将下载的axis2中的lib包加载到项目中,就不报错了
客户端代码:
import java.rmi.RemoteE
import test.A
import test.AddR
import test.SayH
import test.SayHelloR
import test.TestServiceS
public class Test {
public static void main(String[] args) throws RemoteException {
//创建客户端对象
TestServiceStub axis2wb = new TestServiceStub();
//new一个调用sayHello方法需要的参数SayHello,并且设置name
SayHello sayHello = new SayHello();
sayHello.setName("zeromike");
//调用web服务
SayHelloResponse sayHelloResponse = axis2wb.sayHello(sayHello);
//拿到返回结果
System.out.println(sayHelloResponse.get_return());
Add add = new Add();
add.setA(10);
add.setB(3);
AddResponse addResponse = axis2wb.add(add);
System.out.println(addResponse.get_return());
zhangzhaoaaa
浏览: 693530 次
来自: 北京
2楼理解很透呀,我用程序测了,是正确的。
另外一个方法实现eclipse tomcat 热部署:http ...
this.mockMvc = webAppContextSet ...1147人阅读
webservice
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web
Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
也就是说,通过webservice我们就可以衔接C#、java等之间的通信。
下面,我通过eclipse来建立一个简单的Webservice服务:
首先,我们在eclipse中像建立一个web项目一样,new-&Dynamic Web Project,这里我取名为helloService
接着,我们先建一个需要暴露给外部的方法,
public class HelloService {
public String say(String name) throws InterruptedException{
return &hello &+
然后呢,右击这个项目,new -& other-&web services-&webservice
选择需要暴露的实现,service.HelloService,然后选择发布
我们是通过tomcat发布的,直接start即可。常用的框架有,cxf、 axis、&axis2等,这里选择了axis
发布之后,我们打开网页输入地址即可打开它的wsdl:http://localhost:8280/helloService/services/HelloService?wsdl
前面的地址,在helloService\WebContent\wsdl\HelloService.wsdl下可以看到,
现在服务端已经建立。
接下来,我们就需要使用client去连这个Webservice服务了,
新建一个java工程(都可以)
然后新建一个Webservice client就可以,
输入wsdl地址,finish即可
然后可以看到目录下的Webservice java类,
我们新建一个test,去测试以下
import java.rmi.RemoteE
import service.HelloS
import service.HelloServiceP
public class Test {
public static void main(String[] args) throws RemoteException {
HelloServiceProxy helloPxy = new HelloServiceProxy();
HelloService service = helloPxy.getHelloService();
String res = service.say(&yyf&);
System.out.println(res);
Webservice的入门结束。
客户端超时断开连接设置:
HelloServiceSoapBindingStub-&
protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
_call.setTimeout(1000);//设置超时时间
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16810次
排名:千里之外
原创:43篇
评论:16条
(1)(5)(1)(12)(2)(2)(24)(1)Eclipse 生成webservice Client与JAX-WS不兼容问题解决 - 上善若水 - ITeye技术网站
博客分类:
我平时开发WebService的客户端,总是直接使用Eclipse生成,这样来的快,也很方便。
头一阵子其它组的人用,JAX-WS制作了一个WS,我们使用Ecllipse生成后。发现调用后,无法返回结果,等待数分钟没有返回,不知道为什么。而对方那边已经将方法内容全都注掉。导致当时非常郁闷。心想如果这样,开发方式,以及过去的代码都要改。
无奈,硬着头皮去找为什么,查了两边的堆栈都没有问题,程序本身也没有问题。最后将问题归结到Eclipse使用AXIS1生成的代码问题,准确的说是两边的通许有问题,版本不对。
抓了下包,看了下。对比JAX-WS生成的客户端和Eclipse AXIS生成的客户端,最后发现是AXIS的客户端使用的是HTTP1.0的协议,而JAX-WS使用的是HTTP1.1的协议。
上网又翻了一下,找到了修改AXIS的方法,将AXIS底层换成Apache Client的调用类。只需修改一下axis.jar内部的一个配置文件,位置在/axis/client/client-config.wsdd,修改方法如下:
将下面的文件内容
&?xml version="1.0" encoding="UTF-8"?&
&deployment name="defaultClientConfig" xmlns=http://xml.apache.org/axis/wsdd/ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&
&globalConfiguration&
&parameter name="disablePrettyXML" value="true"/&
&parameter name="enableNamespacePrefixOptimization" value="false"/&
&/globalConfiguration&
&transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/&
&transport name="local" pivot="java:org.apache.axis.transport.local.LocalSender"/&
&transport name="java" pivot="java:org.apache.axis.transport.java.JavaSender"/&
&/deployment&
&?xml version="1.0" encoding="UTF-8"?&
&deployment name="ApacheCommonsHTTPConfig" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&
&globalConfiguration&
&parameter name="disablePrettyXML" value="true"/&
&parameter name="enableNamespacePrefixOptimization" value="false"/&
&/globalConfiguration&
&transport name="http" pivot="java:org.apache.axis.monsHTTPSender" /&
&transport name="local" pivot="java:org.apache.axis.transport.local.LocalSender" /&
&transport name="java" pivot="java:org.apache.axis.transport.java.JavaSender" /&
&/deployment&
就可以了。完事后重新打包,替换旧的axis.jar。
之后需要补几个apache httpclient (commons-httpclient jar)相关的jar包就可以了。
AXIS 1已经很久不更新了,所以跟新WS有些不兼容,但修改后,AXIS client就可以正常的与其它WS通信了。
下载次数: 71
浏览: 187650 次
来自: 北京
grefr 写道关于JVM内部运行线程的介绍,可以看看这个文章 ...
如何在java Web项目中开发WebService接口,地址 ...
好,解决了我的问题
jactive 写道不错
至少知道了 jconsole ,谢 ...
stack over 那个 挺好使的 看来要看官方文档啊}

我要回帖

更多关于 用eclipse创建web项目 的文章

更多推荐

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

点击添加站长微信