xfire源代码里,获取位置是

	private String getConfigPath() {
		if (configPath == null || configPath.length() == 0)
			return "META-INF/xfire/services.xml";
		else
			return configPath;
	}

但是提供指定配置位置,源代码里获取位置是

public XFire createXFire() throws ServletException {
		configPath = getInitParameter("config");
		XFire xfire;
		try {
			xfire = loadConfig(getConfigPath());
		} catch (XFireException e) {
			throw new ServletException(e);
		}
		if (xfire == null || xfire.getServiceRegistry() == null
				|| xfire.getServiceRegistry().getServices() == null
				|| xfire.getServiceRegistry().getServices().size() == 0)
			xfire = super.createXFire();
		return xfire;
	}

所以可以在web.xml里配置config参数进行配置路径

	<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>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>


上述操作之一 实现的功能是将 servcies.xml拷贝到src-config根目录下。


services.xml配置内容如下:


    

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://xfire.codehaus.org/config/1.0">

<service>

<name>verifyservice</name>

<namespace>http://itrus.com/verifyservice</namespace>

<serviceClass>com.yjm.webservice.VerifyInfo</serviceClass>

<implementationClass>com.yjm.webservice.VerifyInfoImp

</implementationClass>

</service>

</beans>


  1. 创建一个 标准的web项目,在web.xml里 配置xfire信息 如上配置

  2. 将services.xml拷入src-config下 配置好接口与实现类 如上配置

  3. 拷入xfire 需要的jar包 

    log4j-1.2.16.jar,xfire-all-1.2.6.jar,spring-1.2.6.jar xbean-spring-2.8.jar wsdl4j-1.6.1.jar jdom-1.0.jar


创建的接口类与服务类


package com.yjm.webservice;

public interface VerifyInfo {
	public String test(String test);
	public String verfySign(String origal,String signvalue);
}

 

package com.yjm.webservice;

public class VerifyInfoImp implements VerifyInfo {

	public String test(String test) {
		return test;
	}

	public String verfySign(String origal, String signvalue) {
		return origal;
	}

}


 启动服务,访问 http://192.168.101.243:8080/verifyinfo/services/verifyservice?wsdl 出现soap协议



客户端编写


创建标准的 java项目  使用wsimport生成客户端类。


wsimport -keep -p com.yjm -s d://aa http://192.168.101.243:8080/verifyinfo/services/verifyservice?wsdl




客户端访问 方式

package com.yjm;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;

public class ClientMain {

	public static void main(String[] args) {

		try {
			test1();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	private static void test1() throws Exception {
		URL url = new URL(
				"http://192.168.101.243:8080/verifyinfo/services/verifyservice?wsdl");
		QName qname = new QName("http://itrus.com/verifyservice",
				"verifyservice");
		Verifyservice vs = new Verifyservice(url, qname);
		VerifyservicePortType vpt = vs.getPort(VerifyservicePortType.class);
		String str=vpt.verfySign("test1","test2");
		System.out.println(str);

	}

}


测试结果:test1