xfire1.2.6支持jdk1.4以上的版本,但是有些比如JSR181注解需要jdk的更高版本,我的例子是一个简单的读取文件程序,服务器是Apache Tomcat6.0.18。
假定你已经了解如何使用Java编写Web应用程序,并知道应该如何把它部署到Apache Tomcat服务器上。话不多说,开始webservice的开发步骤吧!
1.从xfire的官方网站http://xfire.codehaus.org/Download上下载xfire-distribution-1.2.6.zip最新版的包,压缩包的lib中有它所需的依赖包,将它放入web-info的lib路径下,包有以下这些:
2.在web.xml文件中加入
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/resource/services.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
init-param节点不是必须的,如果不配置的话,需要在src的路径中加入META-INFO文件夹,里面加入services.xml文件。配置的话可以指定services.xml文件的路径。
3. 业务代码实现就没有什么好说的啦,如下一个接口(IReadService)和一个实现类(ReadService)
package com.tjn.impl;
public interface IReadService {
public String readFiles();
}
package com.tjn.impl;
import java.io.File;
public class ReadService implements IReadService {
//Default constructor.
public ReadService(){
}
public String readFiles() {
// TODO Auto-generated method stub
String result="";
File file=new File("d:/test");
String[] files=file.list();
for (int i = 0; i < files.length; i++) {
result+=files[i]+"\n";
}
return result;
}
}
默认的构造函数类型必须是public。否则,XFire不能够初始化这个类。
4.services.xml文件中的配置
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>WebserviceTest</name>
<namespace>mywebserviceTest</namespace>
<serviceClass>com.tjn.impl.IReadService</serviceClass>
<implementationClass>com.tjn.impl.ReadService</implementationClass>
/service>
</beans>
第一个子元素是,它可以是你提供任何的合法名字。这将会被客户端程序和其它需要定位你的服务的组件用到。
例如,在服务准备好以后,你将在浏览器上使用这个名字来查看WSDL。
下一个子元素是<namespace>。任何合法的XML名字都是可以的。
<namespace>用来唯一标识你的服务的各个参数。
<serviceClass>元素包含了Java类的名字,它指定了方法签名。
在本例中,它是接口IReadService。
如果Java类没有实现任何接口,你就需要把类的名字放在这里。
在你的Java类或者接口中可能有几个方法。只需要一个入口把它们全部发布为Web Services。
<implementationClass>保存了实现方法的Java类名。这是一个可选元素。
如果上一个元素<serviceClass>包含了一个接口,那么相应的实现类必须在这里指定。
这样Web Services就配置完成了。
测试服务器端的webservice是否发布成功,测试如下:
启动tomcat,在地址栏中输入http://localhost:8080/WebST/services/WebserviceTest?wsdl,如果能看到类似xml的页面文件就差不多了,
但是这个测试是不够的。可能会发生这种情况,可以看到WSDL,但是从客户端程序可能会访问不到服务。
因此为了核实服务是否可以访问了,我们必须使用一个客户端进行服务的实际调用来进行一个真正的测试。
下面是客户端的代码:
package com.tjn.clienttest;
import java.net.MalformedURLException;
import org.codehaus.xfire.XFire;
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.tjn.common.Global;
import com.tjn.impl.IReadService;
public class ClientTest {
public static void main(String[] args) {
Service serviceModel = new ObjectServiceFactory().create(IReadService.class);
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
String serviceUrl ="http://localhost:8080/WebST/service/WebserviceTest?wsdl";
IReadService client = null;
try {
client = (IReadService) factory.create(serviceModel, serviceUrl);
System.out.println(client.readFiles());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这个代码是如何工作的呢?
首先,我们创建一个服务模型,它包含服务的说明——换句话说,就是服务的元数据。
我们使用XFire的ObjectServiceFactory从IBReadService.class接口创建这个模型。
接着,为XFire获得一个代理工厂对象,它包含了常规的代码,也相当地简单和易懂。
这一步中没有任何特定应用的东西。从这个proxyFactory,
使用服务模型和服务端点URL(用来获得WSDL),我们可以得到一个服务的本地代理(实际的客户端)。
现在,我们可以调用它的readFiles()方法来得到我们需要的Web Service。
同时客户端只需的jar比较少,基本的就是有以下这些包就可以了
如果客户端能接收服务器端返回的信息就成功啦!
在实际项目中,有服务器端发布的接口,在客户端只需要有一个和服务器端相同的接口就可以了,不需要实现类,调用接口中的方法时会调用服务器端的实现类中的方法。
- 大小: 25.4 KB
- 大小: 13 KB
分享到:
相关推荐
解决内部问题, 搭建J2EE开发环境 myEclipse6.5+Tomcat7 搭建环境 eclipse
本教程介绍了"jdk1.6+MyEclipse6.5+Tomcat 6.0" 的开发环境的搭建设和配置,针对关键的每一步都进行了说明,另附截图,对新人来说比较容易理解和上手. 让新人少走弯路,对老鸟和大虾来说,就不用看了.
myeclipse6.5(里面已经配置好flex3插件) + tomcat6.0 + ds-console.war(lcds)。手把手教您(有图片指导)
Myeclipse6.5+flex3+Blazeds+spring+hibernate完美整合,写的非常详细
Myeclipse6.5的vss插件 Myeclipse6.5的vss插件 Myeclipse6.5的vss插件
Myeclipse6.5+flex3+Blazeds+spring+hibernate完美整合源代码,已经调试成功,可以运行。配有相应的word文档
计算机毕业论文计算机毕业论文 选课系统(Myeclipse7.0+服务器Tomcat+MysqL5.0)计算机毕业论文 选课系统(Myeclipse7.0+服务器Tomcat+MysqL5.0)计算机毕业论文 选课系统(Myeclipse7.0+服务器Tomcat+MysqL5.0)...
MyEclipse6.5虽然很少用了,但是对于低配机器来说是个不错的选择,这篇文档讲述对tomcat7的支持。
myeclipse 6.5 + struts2 +ajax 实现表单注册验证源码
JAVA环境软件(jdk1.8+myeclipse2015+tomcat7.0)下载地址,放置在百度云上,提供下载地址。
Myeclipse7.0+tomcat6.0.14+JDK jdk1.6.0_05+mysql配置全过程,图文说明,步骤详细,自己经过多次重复工作总结的成果,和大家分享。
MyEclipse+Tomcat+MySQL的环境搭建.txt
MyEclipse自带的JDK和tomcat最好不要用,因为如果出了问题你很难查找,使用自己安装的JDK和tomcat较好……
JDK+MyEclipse+Tomcat的配置
Flex4.5 + Tomcat6.0 + MyEclipse 9.0+ Java+Blazeds环境配置和使用
struts2+spring2+hibernate3集成示例 (开发环境:myeclipse5.5+tomcat6+jdk1.6) 描述:一个集成的登录小例子,供大家参考...
还是没更新好,速度奇慢,我实在是想砸掉电脑,可是我的电脑配置不低呀(cpu T5750 +内存2G),实在是让人无法忍受这个了,所以才做了这个汉化包,应该有很多网友和开发人员都在找MyEclipse 6.5的汉化包,本着方便...
这个是MyEclipse 6.5 的汉化包。 上面有安装说明的。很简单。就是复制粘贴。 用过了。的
JSP网页开发平台搭建 myeclipse8.5+sqlserver2008+jdk+tomcat 以及VS2008 +SP1的安装过程
安装文档(JDK1.6,MyEclipse6.5,MySql,Tomcat6.0,JDK1.6环境变量)