XFire1.2使用例子

想往架构师方向发展,他们说soa必须学会WEB SERVICE。以下简称ws.

鄙人用myeclipse 6.5

1、服务端:

创建web项目。

右键myeclipse add web service ......

增加了一些jar包进来,主要是xfire和其他的东西

会让我们自己设置web service配置文件的路径,还有web.xml里面配置ws的url。

web.xml生成了这个摸样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" 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>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/testyqf/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

自己定义一个接口:

package com.yuan.ws;

import com.yuan.pojo.User;

public interface WebService {
	public User login(User user);
}	

弄一个简单的实现类:

package com.yuan.ws.impl;

import com.yuan.pojo.User;
import com.yuan.ws.WebService;

public class WebServiceImpl implements WebService {

	public User login(User user) {
		if(user.getUserName().equals("yqf")){
			return new User("1","yqfright","1234");
		}else {
			return new User("1","yqfww","12344");
		}
	}

}

我的pojo类:

package com.yuan.pojo;

public class User {
	private String userId;
	private String userName;
	private String userPwd;
	
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(String userId, String userName, String userPwd) {
		super();
		this.userId = userId;
		this.userName = userName;
		this.userPwd = userPwd;
	}
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPwd() {
		return userPwd;
	}
	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}
	
}

 这个时候,你必须自己配置ws了,接口以及实现类:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
	<service>
		<name>login</name>
		<serviceClass>com.yuan.ws.WebService</serviceClass>
		<implementationClass>com.yuan.ws.impl.WebServiceImpl</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service>
</beans>

发布tomcat启动 哈哈

浏览器访问地址:http://127.0.0.1:8090/TestServer/testyqf/

会显示可用的ws类型,选择一个就是ws的wsdl。什么是wsdl?就是描述我们提供对外功能的一个xml文档,一般高手可用看文档然后在客户端编写,我现在还不会,看那个玩意受罪。

2、客户端:

随便写一个类:

import java.net.MalformedURLException;

import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import com.yuan.pojo.User;
import com.yuan.ws.WebService;


public class Test {
	/*public static void main(String[] args) {
		Service srvcModel =  new ObjectServiceFactory().create(IHelloWorldService.class); 
		XFireProxyFactory factory =  new XFireProxyFactory(XFireFactory.newInstance().getXFire());
		String helloWorldURL ="http://127.0.0.1:8090/WebService/services/HelloWorldService"; 
		try{   
			IHelloWorldService srvc = (IHelloWorldService)factory.create(srvcModel, helloWorldURL);
			String result = srvc.example("hello world");
			System.out.print(result);
		} catch (MalformedURLException e){
			e.printStackTrace(); 
		} 
	} */
	public static void main(String[] args) {
		Service srvcModel =  new ObjectServiceFactory().create(WebService.class); 
		XFireProxyFactory factory =  new XFireProxyFactory(XFireFactory.newInstance().getXFire());
		String helloWorldURL ="http://127.0.0.1:8090/TestServer/testyqf/login"; 
		try{   
			WebService srvc = (WebService)factory.create(srvcModel, helloWorldURL);
			User retUser = srvc.login(new User("1","yqf","123"));
			System.out.print(retUser.getUserName());
		} catch (MalformedURLException e){
			e.printStackTrace(); 
		} 
	} 
}

 这里需要把服务器的接口拷贝过来,补考呗也可用,build path把服务器的project 引入进来。

运行,就出来结果啦。

猜你喜欢

转载自smallbee.iteye.com/blog/1048468
今日推荐