由MyEclipse搭建一个Web Service Project实例是非常容易的,在于知道和不知道而已,完全没有技术可言。
一个Web Service Project的主要任务,就是让几个不同的组件之间能够互相操作,而这一技术的实现,又依赖于HTTP 和 SOAP协议。SOAP,Simple Object Access Protocol,简单对象访问协议。
下面介绍一种比较流行的框架--XFire,在MyEclipse的搭建。
一、环境配置 MyEclipse8.5 && JDK1.6
二、new ==>Web Service Project
1)FrameWork选择XFire
2)Next,默认;
3)Library选择,XFire 1.2 Core Libraries;
4)Finish,文件结构如下:
5)从web.xml对比普通的web项目,我们可以看到很熟悉的东西,url-pattern,看到这几个配置,心理淡定了不少。
三、用MyEclipse为Web Service Project生成对外的接口:new ==> other ==>myelcipse ==> Web Services ==> Web service
1)Strategy是java class
2)Web Service Name:
3)finish
4)修改HelloServiceImpl.java以供测试
- public class HelloServiceImpl implements IHelloService {
- public String example(String message) {
- return sayHello(message);
- }
- private String sayHello(String name){
- return "Hello," +name;
- }
- }
四、部署WebService
1)像部署普通web一样,部署到tomcat上去。
2)测试WebService,
3)打开Web Service Explorer之后,点击右上角一个WSDL Page的图标,Navigator里面的内容会变成WSDL Main,点击它,在右边的WSDL URL里面敲入:
http://localhost:8080/MyWebService/services/HelloService?WSDL
端口是对应的tomcat的端口,和你的webService的名称。开发过j2EE的朋友应该很容易理解,为什么要这样写地址,看一下生成的services.xml就知道了。
可以看到,现在对外的接口只有example一个。
通过浏览器访问URL,可以看到更加直观的wsdl:
五、写个Client尝试调用一下:
1)创建一个普通的java Project: new ==> java project
2)为新的project添加library。点击项目,鼠标右键,选择properties,选择左边的java build path,再点击右边的add library按钮,选择MyEclipse libraries,找到这两个文件:
3)新建一个类,调用example:
- import java.net.MalformedURLException;
- import java.net.URL;
- import org.codehaus.xfire.client.Client;
- public class HelloInvoke {
- /**
- * @param args
- * @throws Exception
- * @throws MalformedURLException
- */
- public static void main(String[] args) throws Exception {
- Client client = new Client(
- new URL("http://localhost:8080/MyWebService/services/HelloService?WSDL")
- );
- //利用java的反射机制可以远程地得到已经在wsdl中声明的对象
- Object[] results = client.invoke("example", new Object[]{"jacob.Ye"});
- System.out.println("results[0] " + results[0]);
- }
- }
运行:
output:
/*
Hello,jacob.Ye
*/
一个简单的WebService就算是调用完毕。
附加webservice解释说明
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
service
>
<
name
>add</
name
>
<!-- 服务名称 -->
<
namespace
>org.demo.webservice/add</
namespace
>
<!-- 指定命名空间 -->
<
serviceClass
>org.demo.webservice.IAdd</
serviceClass
>
<!-- 指定服务的接口 -->
<
implementationClass
>org.demo.webservice.Add</
implementationClass
>
<!-- 指定接口的实现类 -->
</
service
>
</
beans
>