WebService的HelloWorld
首先,在MyEclipse中创建一个WebService项目,默认即可
也可以手动创建一个Web项目,然后导入WebService的XFire核心包
创建一个与WebRoot同级的目录WebServices,并在其中新建一个services.xml,这是WebService的配置文件
在web.xml中配置WebService的URL MAP
<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>
创建一个普通接口和一个实现类(无需继承其他类)
额..感觉与RMI很类似。。但是WebService是基于HTTP和XML的,所以任何语言都可以调用
public interface ITestInterface {
String test();
}
实现类
public class TestImpl implements ITestInterface {
public String test() {
System.out.println("I am running...");
return "zhougege...";
}
}
配置WebService,在services.xml中配置此接口
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>TestWebService</name> <namespace>www.test.com/test</namespace> <serviceClass>webservice.biz.ITestInterface</serviceClass> <implementationClass>webservice.impl.TestImpl</implementationClass> </service> </beans>
如此,服务器就写好了,部署到Tomcat,运行,测试
http://localhost:8050/WebServiceTest/services/TestWebService?wsdl
可以显示XML文件,则OK了
编写客户端程序:java版
1.导入XFire核心包和Client包
2.编写测试接口,可以采取与服务器完全相同的接口,也可以编写接口名不相同的接口,但是方法一定要相同
public interface ITestInterface {
String test();
}
3.编写测试代码。。硬编码
Service service = new ObjectServiceFactory().create(IClientInterface.class);
//创建Web服务的代理
XFire xFire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xFire);
//获取Web服务的地址
String url = "http://localhost:8050/WebServiceTest/services/TestWebService";
//生成天气预报Web服务调用对象
try {
IClientInterface ig = (IClientInterface) factory.create(service, url);
System.out.println(ig.test());
} catch (MalformedURLException e) {
e.printStackTrace();
}
4.运行,OK