xfire 创建服务器端 HelloService服务

开始编写第一个webservice程序。

1、在web.xml文件中添加如下代码:

<servlet>
         <servlet-name>XFireServlet</servlet-name>
         <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
      </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>

 

在web中定义了一个XFireServlet 的servlet,它负责提供webservice,并且提供每个web service的WSDL。如果你发布一个了web service 例如:HelloService,就可以通过网址 http://localhost:8080/hfa/services/ 来访问,结果如下:

Available Services:

•HelloService [wsdl]





Generated by XFire ( http://xfire.codehaus.org ) 
--------------------------------------------------------------------------------

 

访问HelloService的WSDL就用地址:http://localhost:8080/hfa/services/HelloService?wsdl   运行结果如下:

  <?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions targetNamespace="http://localhost:8080/hfa/services/HelloService" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://localhost:8080/hfa/services/HelloService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
- <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://localhost:8080/hfa/services/HelloService">
- <xsd:element name="getClients">
  <xsd:complexType /> 
  </xsd:element>
- <xsd:complexType name="anyType2anyTypeMap">
- <xsd:sequence>
- <xsd:element maxOccurs="unbounded" minOccurs="0" name="entry">
- <xsd:complexType>
- <xsd:sequence>
  <xsd:element maxOccurs="1" minOccurs="0" name="key" type="xsd:anyType" /> 
  <xsd:element maxOccurs="1" minOccurs="0" name="value" type="xsd:anyType" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  </xsd:sequence>
  </xsd:complexType>
- <xsd:element name="getClientsResponse">
- <xsd:complexType>
- <xsd:sequence>
  <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="tns:anyType2anyTypeMap" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
- <xsd:element name="sayHello">
- <xsd:complexType>
- <xsd:sequence>
  <xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
- <xsd:element name="sayHelloResponse">
- <xsd:complexType>
- <xsd:sequence>
  <xsd:element maxOccurs="1" minOccurs="1" name="out" nillable="true" type="xsd:string" /> 
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  </xsd:schema>
  </wsdl:types>
- <wsdl:message name="getClientsRequest">
  <wsdl:part name="parameters" element="tns:getClients" /> 
  </wsdl:message>
- <wsdl:message name="sayHelloResponse">
  <wsdl:part name="parameters" element="tns:sayHelloResponse" /> 
  </wsdl:message>
- <wsdl:message name="getClientsResponse">
  <wsdl:part name="parameters" element="tns:getClientsResponse" /> 
  </wsdl:message>
- <wsdl:message name="sayHelloRequest">
  <wsdl:part name="parameters" element="tns:sayHello" /> 
  </wsdl:message>
- <wsdl:portType name="HelloServicePortType">
- <wsdl:operation name="getClients">
  <wsdl:input name="getClientsRequest" message="tns:getClientsRequest" /> 
  <wsdl:output name="getClientsResponse" message="tns:getClientsResponse" /> 
  </wsdl:operation>
- <wsdl:operation name="sayHello">
  <wsdl:input name="sayHelloRequest" message="tns:sayHelloRequest" /> 
  <wsdl:output name="sayHelloResponse" message="tns:sayHelloResponse" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="HelloServiceHttpBinding" type="tns:HelloServicePortType">
  <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="getClients">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="getClientsRequest">
  <wsdlsoap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output name="getClientsResponse">
  <wsdlsoap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="sayHello">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="sayHelloRequest">
  <wsdlsoap:body use="literal" /> 
  </wsdl:input>
- <wsdl:output name="sayHelloResponse">
  <wsdlsoap:body use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="HelloService">
- <wsdl:port name="HelloServiceHttpPort" binding="tns:HelloServiceHttpBinding">
  <wsdlsoap:address location="http://localhost:8080/hfa/services/HelloService" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>

 2、在项目src的包中新建接口HelloService 代码如下:

package com.zhongrui.pms.business.service.webservice;

import java.util.List;
import java.util.Map;

/**
 *fileName: HelloService.java
 *author:forrest li
 *time: 2012-7-31  上午10:12:44
 **/
public interface HelloService {

	public String sayHello(String name);
	
	public Map getClients();
}

 

 实现类如下HelloServiceImp.java 代码如下:

package com.zhongrui.pms.business.service.webservice;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.zhongrun.frame.dao.JdbcTemplateDaoUtil;

/**
 *fileName: HelloServiceImp.java
 *author:forrest li
 *time: 2012-7-31  上午10:14:35
 **/
public class HelloServiceImp implements HelloService {
	
	private static final Log logger = LogFactory.getLog(HelloServiceImp.class);
	private static final JdbcTemplateDaoUtil dao = new JdbcTemplateDaoUtil();
 
	public String sayHello(String name) {
		// TODO Auto-generated method stub
		logger.info("---name------"+name);
		return "from service say hello!"+name;
	}
	
	public Map<String, Object> getClients() {
		// TODO Auto-generated method stub
		Map map = new HashMap();
		map.put("ID", "351");
		String sql = "SELECT * FROM CLIENT_INFO t where t.CLIENT_ID=:ID";
		List<Map<String, Object>> list = dao.getAllEntity(sql, map);
		
		logger.info("  list  =================:"+list);
		for(int i= 0;i<list.size();i++){
			logger.info("map-----------------"+list.get(i));
		}
		
		return list.get(0);
	}

}

 

 

3、在资源目录src/java/sources/src下新建文件夹如下图:

 

4、编辑services.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans>                                                                   
    <service xmlns="http://xfire.codehaus.org/config/1.0">                                                     
        <name>HelloService</name>                                       
        <namespace>http://localhost:8080/hfa/services/HelloService</namespace>                 
        <serviceClass>com.zhongrui.pms.business.service.webservice.HelloService</serviceClass>
        <implementationClass>com.zhongrui.pms.business.service.webservice.HelloServiceImp</implementationClass>
    </service>                                                          
</beans>

 

5、启动tomcat服务,加载hfa工程。

6、输入地址:http://localhost:8080/hfa/services/ 或者 http://localhost:8080/hfa/services/HelloService?wsdl 。运行结果见 1、。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值