[size=large][color=red]本Blog所有内容不得随意转载,版权属于作者所有。如需转载请注明出处。[/color][/size]
[size=medium]第一次亲手写博客,希望大家多踩,多拍砖。[/size]
最近要做一个WebService的项目,在网上查了查资料,决定使用xfire框架,看了几天书,打算在这里写出一个例子,内容包括基础类型和对象类型。(算是一个总结,同时也算给那些还不太懂的新手一个例子)
[color=red]
注:本人只是菜鸟,该博客内容也是写给那些需要他们的新手看。[/color]
今天打算写最基础的应用,主要是基本类型,包括int,String 等基本类型。
1. 下载xfire-all.jar和其依赖包,放到classpath下。
2. 新建一个工程HelloWebService(我用的是MyEclipse6.0+Tomcat5.5,注意尽量不要用MyEclipse自带的“创建WebService工程”功能)。
3. 创建一个Interface ,名称是IHelloService,其内容如下:
package com.lawrenst.service;
public interface IHelloService{
public String sayHello(String name);
}
并创建其实现类,HelloServiceImpl,内容如下,
package com.lawrenst.service;
public class HelloServiceImplimplements IHelloService{
public String sayHello(String name) {
return "Hello "+name;
}
}
由于代码比较简单,就不写注释了。
4. 在src下建立一个文件夹,META-INF(注意大小写),在META-INF下建立一个xfire文件夹,在xfire中建立services.xml文件。(真啰嗦),其内容如下:
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloService</name>
<!--
<namespace>
http://oe-way.com/BookService
</namespace>
-->
<!-- 接口-->
<serviceClass>com.lawrenst.service.IHelloService</serviceClass>
<!-- 接口的实现类-->
<implementationClass>
test.risesoft.BookServiceImpl
</implementationClass>
<properties>
<property key="mtom-enabled">true</property>
</properties>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>
5. 在web.xml中配置上xfire
<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>/services/*</url-pattern>
</servlet-mapping>
6. 访问 http://localhost:8080/HelloWebService/services/HelloService?wsdl
好了页面出现了,至此,你的第一个WebService发布成功了。
7. 编写客户端程序
在这里,我介绍两种方式,第一种是纯POJO方式,第二种是动态方式
第一种:纯POJO方式
package com.lawrenst.test;
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.lawrenst.service.IHelloService;
public class TestClient {
public static void main(String args[])
{
Service serviceModel=new ObjectServiceFactory().create(IHelloService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url="http://localhost:8080/HelloWebService/services/HelloService";
try {
IHelloService service=(IHelloService) factory.create(serviceModel, url);
//测试sayHello方法
System.out.println(service.sayHello("lawrenst"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
ok,看看你的控制台,是不是出现了预期的东西。
第二种:动态方式(动态模式不需要服务端的class,不过性能和复杂对象映射等估计做得不会太好。)
Client client = new Client(new URL
("http://localhost;8080/HelloWebService/services/HelloService?WSDL"));
Object[] results = client.invoke("sayHello", new Object[] {"lawrenst"});
System.out.println(results[0]);
ok,到此,一切正常,结束。
[size=medium]第一次亲手写博客,希望大家多踩,多拍砖。[/size]
最近要做一个WebService的项目,在网上查了查资料,决定使用xfire框架,看了几天书,打算在这里写出一个例子,内容包括基础类型和对象类型。(算是一个总结,同时也算给那些还不太懂的新手一个例子)
[color=red]
注:本人只是菜鸟,该博客内容也是写给那些需要他们的新手看。[/color]
今天打算写最基础的应用,主要是基本类型,包括int,String 等基本类型。
1. 下载xfire-all.jar和其依赖包,放到classpath下。
2. 新建一个工程HelloWebService(我用的是MyEclipse6.0+Tomcat5.5,注意尽量不要用MyEclipse自带的“创建WebService工程”功能)。
3. 创建一个Interface ,名称是IHelloService,其内容如下:
package com.lawrenst.service;
public interface IHelloService{
public String sayHello(String name);
}
并创建其实现类,HelloServiceImpl,内容如下,
package com.lawrenst.service;
public class HelloServiceImplimplements IHelloService{
public String sayHello(String name) {
return "Hello "+name;
}
}
由于代码比较简单,就不写注释了。
4. 在src下建立一个文件夹,META-INF(注意大小写),在META-INF下建立一个xfire文件夹,在xfire中建立services.xml文件。(真啰嗦),其内容如下:
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloService</name>
<!--
<namespace>
http://oe-way.com/BookService
</namespace>
-->
<!-- 接口-->
<serviceClass>com.lawrenst.service.IHelloService</serviceClass>
<!-- 接口的实现类-->
<implementationClass>
test.risesoft.BookServiceImpl
</implementationClass>
<properties>
<property key="mtom-enabled">true</property>
</properties>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>
5. 在web.xml中配置上xfire
<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>/services/*</url-pattern>
</servlet-mapping>
6. 访问 http://localhost:8080/HelloWebService/services/HelloService?wsdl
好了页面出现了,至此,你的第一个WebService发布成功了。
7. 编写客户端程序
在这里,我介绍两种方式,第一种是纯POJO方式,第二种是动态方式
第一种:纯POJO方式
package com.lawrenst.test;
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.lawrenst.service.IHelloService;
public class TestClient {
public static void main(String args[])
{
Service serviceModel=new ObjectServiceFactory().create(IHelloService.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url="http://localhost:8080/HelloWebService/services/HelloService";
try {
IHelloService service=(IHelloService) factory.create(serviceModel, url);
//测试sayHello方法
System.out.println(service.sayHello("lawrenst"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
ok,看看你的控制台,是不是出现了预期的东西。
第二种:动态方式(动态模式不需要服务端的class,不过性能和复杂对象映射等估计做得不会太好。)
Client client = new Client(new URL
("http://localhost;8080/HelloWebService/services/HelloService?WSDL"));
Object[] results = client.invoke("sayHello", new Object[] {"lawrenst"});
System.out.println(results[0]);
ok,到此,一切正常,结束。