WebService实例一

一.首先创建用eclipse创建一个web工程,我命名为store.

二.导入我下载好的xfire文件夹下的lib文件夹的所有包还有一个xfire-all-1.2.6.jar包

 xfire的下载地址:http://xfire.codehaus.org/Download

三.环境搭好了.开始写代码了。

在web.xml文件下输入

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns
="http://java.sun.com/xml/ns/javaee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>

  其中主要就是引入了XFireServlet,用以处理Web Service请求,并且负责提供Web Service的WSDL,如果你发布了一个名为BookService的WebService,则可以通过网址:
http://<服务器>[:端口]/<webapp名>/services/BookService
来访问这个WebService,并且通过地址:
http://<服务器>[:端口]/<webapp名>/services/BookService?WSDL  来得到这个WebService的WSDL信息。

四.写我们需要提供的service接口类和实现类。

先写一个接口,这个接口是告诉服务器你的WebService哪些方法可以被用户调用的。

public interface SayHiService {
      public String sayHi(String name);
}

然后写该接口的实现类

/**   
* @Title: SayHiServiceImpl.java
* @Package com.chaowen.study
* @Description: TODO(用一句话描述该文件做什么)
*
@author chaowen
* @date 2011-9-8 下午11:41:04
*
@version V1.0
*/
package com.chaowen.study;

/**
* @ClassName: SayHiServiceImpl
* @Description: 接口实现类
*
@author chaowen
* @date 2011-9-8 下午11:41:04
*
*/
public class SayHiServiceImpl implements SayHiService {

/**
* 该方法是可以通过WebService调用访问到的
*/
@Override
public String sayHi(String name) {
if(name == null){
return "连名字也不肯告诉我吗";
}
return name+", 你吃了吗?没吃回家吃去吧。";
}

/**
* 该方法因为没有在接口SayHiService中定义,所以不能被WebService调用到
*/
public String 不告诉你(){
return "我的名字不告诉你!";
}

}

 五.把工程发布为WebService

  直接在eclipse里 部署工程运行。 

  

或者直接在tomcat安装目录底下找到conf文件夹,打开server.xml,在</host>标签之前加上这句话

docBase是工程所在的路径,根据你的工程而修改吧。

然后启动tomcat,打开浏览器,输入:http://localhost:8080/store/services

会看到

说明你成功了。

六.最后一步了。写客户端.

/**   
* @Title: SayHiClient.java
* @Package com.chaowen.study
* @Description: TODO(用一句话描述该文件做什么)
*
@author chaowen
* @date 2011-9-9 上午12:20:25
*
@version V1.0
*/
package com.chaowen.study;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;



/**
* @ClassName: SayHiClient
* @Description: 客户端调用webService
*
@author chaowen
* @date 2011-9-9 上午12:20:25
*
*/
public class SayHiClient {


public static void main(String[] args) {
String serviceURL
= "http://localhost:8080/store/services/SayHiService";
//两种方法创建service
// Service serviceModel = new ObjectServiceFactory().create(SayHiService.class,null,"http://cn.com.pansky/SayHiService",null);
Service serviceModel = new ObjectServiceFactory().create(SayHiService.class);

XFireProxyFactory serviceFactory
= new XFireProxyFactory();

try{
SayHiService service
= (SayHiService) serviceFactory.create(serviceModel, serviceURL);
Client client
= Client.getInstance(service);
//client.addOutHandler(new OutHeaderHandler());

// disable timeout
// client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "1");

String hello
= service.sayHi("张山疯");
System.out.println(
"服务器对[张山疯] 的回答是:" + hello );

hello
= service.sayHi(null);
System.out.println(
"服务器胡言乱语说:" + hello );

}
catch (MalformedURLException e) {
e.printStackTrace();

}
}
}

  运行结果是

原文地址:https://www.cnblogs.com/andgoo/p/2172007.html