web services DEMO

1、myeclips新建web项目xfireDemo,new-web service project(framework中选xfire)-next-next(勾选所有包)-finish。此时xfire环境已配置好,web.xml中生成了xfire服务:

<servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

2、右击项目,new-other搜索webservice,选中web service   ->next,选择以java bean的方式,并勾选create new java bean  –>填写服务名称(HelloWebService)、包名 –>finish

此时将生成一个接口类和一个实现类,并且在WebService文件夹下的service.xml将注册该服务:

<service>
		<name>HelloWebService</name>
		<serviceClass>com.hjs.xfire.IHelloWebService</serviceClass>
		<implementationClass>
			com.hjs.xfire.HelloWebServiceImpl
		</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service>
表示调用HelloWebService服务时,将会执行HelloWebServiceImpl类中的程序。
3,发布Web服务
启动tomcat 后,输入http://localhost:8080/xfireDemo/services将会出现如下:

Available Services:

  • HelloWebService [wsdl]
  • Generated by XFire ( http://xfire.codehaus.org )

列出调用的接口。点击wsdl链接,将会打开一个xml网页,最好将此网页另存一份。至此一个HelloWebService的web服务就发布成功了。这只是服务端,接下来使用客户端调用。

方式一:

myeclips中自带了web服务的客户端浏览器,打开此浏览器,右上角选择wsdl page,在框中输入web服务地址:http://localhost:8080/xfireDemo/services/HelloWebService?wsdl点击 go按钮,左侧将显示提供的服务列表,单击所要调用的服务,然后在右侧输入该服务需要的字符串参数,点击go按钮,将会在下方显示该服务执行后的返回值。

方式二:sdk方式的客户端

编写客户端类:

/**
 * sdk方式客户端
 * 执行此程序前,需要先启动web服务端
 *
 */
import java.net.MalformedURLException;

import org.codehaus.xfire.XFireFactory;
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;

public class HelloWebServiceClient {

	private static IHelloWebService iHelloWebService;		//Service对象
	private HelloWebServiceClient(){}			//私有的构造方法
	public static IHelloWebService getService(String serviceURL) throws MalformedURLException{
		if(iHelloWebService == null){
			//创建IHelloWebService的服务
			Service srvcModel = new ObjectServiceFactory().create(IHelloWebService.class);
			//创建xfire对象
			XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
			//调用wev服务
			iHelloWebService = (IHelloWebService)factory.create(srvcModel,serviceURL);
			//设置客户端调用的属性
			Client client = Client.getInstance(iHelloWebService);
			client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "300");
			client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true");
			client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "true");
		}
		return iHelloWebService;
	}

	public static void main(String[] args) {
		try {
			IHelloWebService service = HelloWebServiceClient.getService
			("http://localhost:8080/xfireDemo/services/HelloWebService");	//通过ObjectServiceFactory、XFireProxyFactory方式来动态生成时需要把访问路径的WSDL去掉
			System.out.println(service.example("你吃过中饭了吗?"));
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}

	}

}
执行程序,调用web服务端。
posted @ 2013-02-27 18:41  hejinsheng  阅读(202)  评论(0编辑  收藏  举报