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>
创建一个 标准的web项目,在web.xml里 配置xfire信息 如上配置
将services.xml拷入src-config下 配置好接口与实现类 如上配置
拷入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
转载于:https://blog.51cto.com/yjm199/1707314