xfire demo 实例

(一) 通过 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();
        }
    }
}



你可能感兴趣的:(配置,xfire,demo,实例,教程)