标签:
(一) 通过 xfire 发布 webservice 服务
1.添加 xfire相关jar包(以maven为例):
<dependency>
<groupId>org.codehaus.xfire</groupId>
<artifactId>xfire-all</artifactId>
<version>1.2.6</version>
</dependency>
2.配置 web.xml
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern> //服务的发布匹配地址
</servlet-mapping>
3. 创建 服务接口
package demo;
public interface ServerTest {
void say(String str);
}
4. 创建实现类实现 ServerTest
package demo;
public class ServerTestImpl implements ServerTest {
public void say(String str) {
System.out.println(str);
}
}
5. 定义 services.xml --> [ WEB-INF\classes\META-INF\xfire ] 发布webservice的配置
没有此文件需要创建
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>Test</name> //定义webservice的发布名称
<namespace>haople</namespace> //定义webservice的命名空间
<serviceClass>demo.ServerTest</serviceClass> //接口类
<implementationClass>demo.ServerTestImpl</implementationClass> //实现类
</service>
</beans>
启动服务后:访问 http://127.0.0.1:8080/demo/services/Test?wsdl
(二) 通过 xfire 客户端 调用 webservice 服务
方法一:
package demo;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
public class ClientTest {
public static void main(String[] args) {
try {
Service service=new ObjectServiceFactory().create(ServerTest.class); // 创建服务
ServerTest test=(ServerTest) new XFireProxyFactory().create(service, "http://127.0.0.1:8080/demo/services/Test"); //代理服务(此处不是wsdl地址)
test.say("hello word!"); //执行方法
} catch (Exception e) {
e.printStackTrace();
}
}
}
方法二:
package demo;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class ClientTest {
public static void main(String[] args) {
try {
Client client=new Client(new URL("http://127.0.0.1:8080/demo/services/Test?wsdl")); //此处访问的是wsdl地址
client.invoke("say", new Object[]{"hello world!"}); //第一个参数为 执行的方法名,第二个参数是执行的参数,返回的是Object[]
} catch (Exception e) {
e.printStackTrace();
}
}
}
标签:
原文地址:http://my.oschina.net/haopeng/blog/396133