我这个人向来比较懒,没有动手写点东西的习惯,呵呵
最近几天由于需要,在学习webservice,用惯了eclipse,也想搭建个eclipse下开发web service的平台,上网搜索了下,文章还不少,非常详细,但是配置总是出错误,最大的问题是不能生成wsdl.无奈之下,自己动手。参考官方的文档,下面开始。
请尊重他人打字的辛劳,转载必须注明出处,并使用链接方式引用
1、tools
工欲善其事,当然是先找工具了
eclipse3.3
http://download.actuatechina.com/eclipse/eclipse/downloads/drops/R-3.3-200706251500/eclipse-SDK-3.3-win32.zip
STP all_in_one(以下简称stp)
这里推荐安装all_in_one(此安装文件已经包含必要的插件)
http://download.eclipse.org/stp/downloads/
相关的Pre-requisites SOA runtime
Apache CXF (一定要是2.1版本的) (必要)
http://people.apache.org/repo/m2-snapshot-repository/org/apache/cxf/apache-cxf/
如果在生成WSDL时,出现找不到main的情况,是由于没有下载到正确的cxf运行环境
Apache Tuscany SCA Java (下载最新的apache-tuscany-sca-1.0-incubating.zip )
http://archive.apache.org/dist/incubator/tuscany/java/sca/1.0-incubating/
需要的tool就齐了
2、开始安装
eclipse 3.3安装非常简单,指定目录 解压缩就可以
STP all in one 是eclipse的插件,推荐采用link方式安装,具体请搜索网络,一大堆
简单说明下安装:
1)解压缩stp all in one,注意插件内文件名较长,如果解压缩的目录过长,如D:\My Documents\第四版本资料\使用links方式安装Eclipse插件\Struts2+Spring+Hibernate In Action(这样的目录是不行的),那么部分插件不能被解压缩,目录层次要少。将 stp解压缩到e:\stp
2)加入eclipse在e:\eclipse安装,在e:\eclipse下建立目录links,在links目录下建立文件AllInOne.link。用记事本打开,输入内容:path=e:\\stp
这里的e:\\stp 就是stp all in one的安装目录
3)用命令行方式运行eclipse(直接打开eclipse也可以,某些情况下,可能出现看不到新安装的插件)
cmd
e:\eclipse\eclipse -clean
启动eclipse
4) 打开eclipse后,在菜单栏,windows-->preference-->soa tools 如下图,说明插件安装成功
3、配置
1)把CXF2.1 sca1.0解压缩,目录分别为
d:\cxf2.1,d:\sca1.0
2) 选择上图中 Installed Runtimes
如下图
环境配置成功
4、开始测试环境是否能够开发webservice并简单演示自动生成wsdl的过程
1)新建立java project
project name: demo
/**
* 创建接口,将业务方法暴露给远程调用者
* @author 赵永亮
*
*/
package org.zhaoyl.webservice;
public interface Hello
{
public String sayHello();
}
2) 右键项目名称(demo),选择JAX-WX Tools -->enable JAX-WX-->java first programing mode
如下图
选择运行cxf环境(在配置里面已经安装了)
下一步
如图
选择Hello接口
完成
此时Hello.java内容如下:
package org.zhaoyl.webservice;
import javax.jws.WebService;
/**
* 创建接口,将业务方法暴露给远程调用者
* @author 赵永亮
*
*/
@WebService(name="Hello", targetNamespace="http://webservice.zhaoyl.org/")
public interface Hello {
public String sayHello();
}
3)在eclipse中调出 Annotation properties视图,增加并设置@WebService注释
在Hello.java文件中选择@webservice部分(鼠标定位在该部分就可以了)->在下面的Annotation Properties中选中javax.jws.soap.SOAPBinding,将缺省的false修改成true;将SOAPBinding展开,将其中的Style属性从RPC修改成DOCUMENT(注意是大写)。
此时Hello.java内容如下:
package org.zhaoyl.webservice;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
/**
* 创建接口,将业务方法暴露给远程调用者
* @author 赵永亮
*
*/
@SOAPBinding(use=SOAPBinding.Use.LITERAL, style=SOAPBinding.Style.DOCUMENT)
@WebService(name="Hello", targetNamespace="http://webservice.zhaoyl.org/")
public interface Hello {
public String sayHello();
}
4)在outline视图,选择sayHello(),右键,JAX-WX tools--〉create web method
此时,Hello.java内容如下:
package org.zhaoyl.webservice;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import javax.jws.WebMethod;
/**
* 创建接口,将业务方法暴露给远程调用者
* @author 赵永亮
*
*/
@SOAPBinding(use=SOAPBinding.Use.LITERAL, style=SOAPBinding.Style.DOCUMENT)
@WebService(name="Hello", targetNamespace="http://webservice.zhaoyl.org/")
public interface Hello {
@WebMethod(operationName="sayHello", exclude=false)
@ResponseWrapper(className="org.zhaoyl.webservice.SayHelloResponse", localName="sayHelloResponse", targetNamespace="http://webservice.zhaoyl.org/")
@RequestWrapper(className="org.zhaoyl.webservice.SayHello", localName="sayHello", targetNamespace="http://webservice.zhaoyl.org/")
public String sayHello();
}
5)右键项目名称(demo),JAX-WX Tools -->Generate wsdl
呵呵,自动生成了wsdl
目录结构图如下:
总结:此时,能够正确自动生成WSDL文件了,至于如何调用等等问题,还有待于学习
个人平时很少写作,以至于文字错误较多,语句不通顺之处,请多体谅
太郁闷了 ,怎么不能贴图,只好把QQ仍到上面了:252574345