以下开发流程均在eclipse下进行。
一.XFIRE
准备工作,下载Xfire1.2.6完整包,我的下载地址是:http://download.csdn.net/detail/chenfu_2002/4514978,
另外再给出一个使用maven开发的Xfire1.2.6下载地址:http://download.csdn.net/download/gao_zhuang/4342482。
1.首先创建一个Dynamic Web Project,此时应该是一个空的工程;
2.解压之前下载的文件,并将其中的lib库导入过来,全部导过来即可;
3. 然后修改web-info下面的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>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
4.编写service代码,简单举例如下:
Hello.java
package com.xfire.hello;
public interface Hello {
public String sayHello(String username) throws Exception;
}
HelloImpl.java
package com.xfire.hello.impl;
import com.xfire.hello.Hello;
public class HelloImpl implements Hello {
public String sayHello(String username) throws Exception{
// TODO Auto-generated method stub
System.out.println("service----------"+username);
return "Hello" + username;
}
}
5.配置services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service><name>Hello</name>
<namespace>http://www.sgcc.com.cn/sggis/service/gisservice</namespace>
<serviceClass>com.xfire.hello.Hello</serviceClass>
<implementationClass>com.xfire.hello.impl.HelloImpl</implementationClass></service>
</beans>
此文件中可以配置多个service服务,name是我们对外公布的服务名,所以在配置多个服务时要做唯一标识。
6.发布webservice服务端
将项目发布到tomcat上,然后启动服务,输入地址http://localhost:8080/个人的项目名称/services/Hello?wsdl,能够看到wsdl的描述语言即证明发布成功。
7.导出服务端jar包
右键Export即可,命名为Hello.jar。
8.客户端创建
新建一个javaProject工程,引入所需要的jar包,这里需要导入的包为:Hello.jar,Junit,xfire1.2.6核心包,common-httpclient-3.1.jar
9.建立一个Junit测试用例
public void testSayHello() throws Exception {
Service service = newObjectServiceFactory().create(Hello.class);
// 创建web服务器代理
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
// 获取wsdl调用的地址
String url = "http://localhost:8080/个人的项目名称/services/Hello";
// 生成服务调用对象
Hello hello = (Hello) factory.create(service, url);
String rs = hello.sayHello("gary");
System.out.println("client==========" + rs);