这几天工作需要用到webService,正好项目是基于spring框架的,在网上搜了搜相关的文章,感觉比较乱,所以自己参考完成了利用Spring和xfire开发webService服务端和客户端的小例子,服务端主要利用spring和xfire,客户端直接用xfire,调用远程webService的wsdl地址,提供方法名和参数,直接获取返回值即可。这种动态的调用比较方便灵活,利于学习和掌握。

我的第一步工作就是确定jar包,由于spring和xfire的相关jar包比较多,所以确定哪个jar包有用,哪个没用就十分重要了。

关于spring的jar包获取,可以参考我的前一篇文章  如何从Spring官方网站下载Spring的jar包

关于xfire的jar包获取,可以访问网站 http://xfire.codehaus.org/Download 下载xfire-distribution-1.2.6.zip

上面spring和xfire的jar包都是分开的,如果要是不想找到到底哪个jar包有用,哪个jar包没用的话,直接使用一个完整的spring.jar和xfire.jar 即可,我这里主要是想看看到底哪些有用 哪些没用。

经过确认,整理的jar包如下,对于开发服务端来说,需要的jar包如图:

对于开发客户端来说,需要的jar包如下:

整理完需要的jar包之后,可以开始开发我们的webService服务端和客户端了。

首先开始开发服务端:

服务端开发其实很简单,编写一个用于提供webService服务的接口以及实现类,

在配置文件中配置上,然后在web.xml文件中进行整合即可。

整体项目代码目录结构如下:

下面贴出主要部分代码

接口IHello的代码为:

package test;
public interface IHello {
public String sayHello(String name);
}

实现类HelloImpl的代码为:

package test;public class HelloImpl implements IHello {

@Override
public String sayHello(String name) {
return “hello “+name;
}

}

配置文件applicationContext.xml里面基本是空的,代码为:

<?xml version=”1.0″ encoding=”UTF-8″?>
<beans
xmlns=”http://www.springframework.org/schema/beans”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:p=”http://www.springframework.org/schema/p”
xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd”>
</beans>

配置文件xfire-servlet.xml的代码为

<beans xmlns=”http://www.springframework.org/schema/beans”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:p=”http://www.springframework.org/schema/p”
xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd”>
<import resource=”classpath:org/codehaus/xfire/spring/xfire.xml”/><bean class=”org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”>
<property name=”urlMap”>
<map>
<entry key=”/TestService” value-ref=”testService”/>
</map>
</property>
</bean>
<bean id=”testService” class=”org.codehaus.xfire.spring.remoting.XFireExporter”
p:serviceFactory-ref=”xfire.serviceFactory”
p:xfire-ref=”xfire”
p:serviceBean-ref=”HelloImpl”
p:serviceClass=”test.IHello” /><bean id=”HelloImpl” class=”test.HelloImpl”></bean>
</beans>

剩下就是主要的web.xml的配置了

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”3.0″ 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_3_0.xsd”>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/config/*.xml</param-value>
</context-param><listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>xfire</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/xfire-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>xfire</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

启动项目后,访问 http://192.168.15.114:8080/webServiceServerTest/webservice/TestService?wsdl 就能访问到wsdl文档了,其中的IP地址和端口号请换成自己实际的ip和端口号。

至于如何访问这个webService服务呢,开发它的客户端其实很简单

对应的代码目录结构如下:

其中主要的代码WebServiceClientTest.java的代码为

package test;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class WebServiceClientTest {
public static void main(String[] args) {
String wsURL = “http://192.168.15.114:8080/webServiceServerTest/webservice/TestService?wsdl”;
try {
System.out.println(” —-&gt; 初始客户端 &lt;—- “);
Client client = new Client(new URL(wsURL));
Object[] results = client.invoke(“sayHello”,
new Object[] { “Michael” });
System.out.println(results[0]);
System.out.println(” —-&gt; 客户端调用结束 &lt;—- “);
} catch (Exception e) {
e.printStackTrace();
}
}
}

先启动服务端,然后运行客户端这个java文件,就可以看到运行结果,显示

具体的工程项目代码,请参考我的github

https://github.com/ma37060605/webServiceServerTest

https://github.com/ma37060605/webServiceClientTest

tomcat参数详解与性能优化

其实,前面有些文章已经涉及到相关的内容了,比如: 快速学会Linux安装jdk和tomcat tomcat部署应用的三种方法 本文会详细介绍一下在tomcat安装完成之后一般...

阅读全文

tomcat部署应用的三种方法

在JavaWeb的开发中,tomcat是最常用的web容器,使用tomcat部署web应用,常见的有三种方式,下面以我们在前面开发过的一个WebService的服务端为例(具体服务开...

阅读全文

JavaWeb开发(四)CXF webService 客户端开发(动态调用与wsdl2java生成)

前面三章分别介绍了: JavaWeb开发(一)框架搭建(使用Maven搭建JavaWeb工程) JavaWeb开发(二)框架搭建(给工程添加spring支持) JavaWeb开发(三)CXF ...

阅读全文

欢迎留言