public class HelloService {
public String sayHello(String name) {
return name + " ,你好! " ;
}
}
< beans xmlns ="http://xfire.codehaus.org/config/1.0" >
< service >
< name > HelloService </ name >
< serviceClass > demo.HelloService </ serviceClass >
</ service >
</ beans >
service 标签的子标签不止这两个,但其余的都是可选的。关于 services 的更多描述,请参阅 xfire 的官方网站。文件建好了,就是把它放到项目的哪个位置的问题了,这里我在项目的 WebContent/ META-INF 目录下面新建一个 xfire 文件夹,把 services.xml 文件放到这个新建文件夹里。最后再把 META-INF 文件夹整个移到 WebContent/ WEB-INF 目录下,这时 services.xml 文件的配置全部完成,如果我说的还不清楚,请直接看图一,图中左侧有文件结构,只要照那个结构调整项目中的文件及文件夹的位置就可以了。
Exception:
javax.servlet.ServletException: Error initializing XFireServlet.
root cause:
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [META-INF/xfire/services.xml]; nested exception is java.io.FileNotFoundException: class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist
然后是web.xml文件,在项目已有的web.xml文件基础上修改一下就可以。修改后的最终内容如下:
< web-app version ="2.4"
xmlns ="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< 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 > /servlet/XFireServlet/* </ url-pattern >
</ servlet-mapping >
< 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 >
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

选择"Search for new features to install",然后点击Next
选择"Create New Remote Site", 在name中输入"XFire",在eclipse update site中输入http://dist.codehaus.org/xfire/update/
选择OK
选择Finish。
此时,在调用服务之前,还有一个重要的步骤,从XFireProject项目的右键菜单里调出Properties配置窗口,选中左面一栏中的XFire项,右面会列出所有与XFire运行有关的类库,按图中所示的,选中一些类库,这些类库在调用本服务时是必须的。
import demo.HelloServiceClient;
import demo.HelloServicePortType;
public class Invoke {
/**
* 这个方法调用web服务并返回服务执行的结果
* @param yourName
* @return
*/
public static String invokeServiceNow(String yourName)
{
HelloServiceClient service = new HelloServiceClient();
HelloServicePortType port = service.getHelloServiceHttpPort();
return port.sayHello(yourName);
}
/** *//**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String MyName = " xfire " ;
System.out.println(Invoke.invokeServiceNow(MyName));
}
}
最后程序运行得到的输出结果是“xfire,你好!”。
注意:在运行调用程序时,Tomcat也必须是打开的。
本文介绍如何在Eclipse环境中利用XFire框架创建和配置WebService服务及客户端。在过程中遇到了BeanDefinitionStoreException异常,原因是无法找到[META-INF/xfire/services.xml]资源。解决方法是检查并确保web.xml配置正确,特别是针对Tomcat服务器的设置。
691





