`
shihuan830619
  • 浏览: 583005 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Axis2整合Spring连接Jdbc数据源发布

    博客分类:
  • J2EE
阅读更多
依赖spring.jar、commons-dbcp-1.4.jar、commons-pool-1.5.6.jar、
cglib-nodep-2.2.jar

jdbc.properties代码:
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.1.10:1521:oraid
jdbc.username=shihuan
jdbc.password=zznode


web.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	
	
	<servlet> 
        <servlet-name>AxisServlet</servlet-name> 
        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> 
        <load-on-startup>1</load-on-startup> 
	</servlet> 
	<servlet-mapping> 
	        <servlet-name>AxisServlet</servlet-name> 
	        <url-pattern>/services/*</url-pattern> 
	</servlet-mapping>
	
	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


applicationContext.xml代码:
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans 
	   						http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	   						http://www.springframework.org/schema/context 
	   						http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	   
	     
	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  		<property name="locations">
  			<list>
  				<value>classpath:jdbc.properties</value>
  			</list>
  		</property>
 	</bean>   
	
	<!-- <context:property-placeholder location="classpath:jdbc.properties" /> -->
	<!-- <util:properties id="jdbcProperties" location="classpath:jdbc.properties"/> -->
	<!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"></bean> --> 
	<!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"></bean> -->
	<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"></bean> -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		
		<property name="driverClassName" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		<!-- 
	   	<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@192.168.1.10:1521:oraid" />
		<property name="username" value="shihuan" />
		<property name="password" value="zznode" />
		-->
		<property name="initialSize" value="10" />
		<property name="maxActive" value="100" />
		<property name="maxIdle" value="50" />
		<property name="minIdle" value="5" />
	</bean>
	
	
    <bean id="applicationContext" class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder" />

    <bean id="springAwareService" class="axis2.service.server.SpringAwareService">
    	<property name="springJdbcBean" ref="springJdbcBean"/>
  	</bean>

  	<bean id="springJdbcBean" class="axis2.service.springjdbc.SpringJdbcBeanImpl">
  		<property name="dataSource" ref="dataSource" />
  	</bean>
    
</beans>


SpringJdbcBean.java代码:
package axis2.service.springjdbc;

public interface SpringJdbcBean {

	public String[] getArray(String paramName);
	
	public String[] getMDArray(String paramName);
	
	public String getXmlData(String paramName);
}


SpringJdbcBeanImpl.java代码:
package axis2.service.springjdbc;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class SpringJdbcBeanImpl extends JdbcDaoSupport implements SpringJdbcBean {

	
	public String[] getArray(String paramName) {
		String sql = "SELECT T.MODULE_NAME, T.PARAM_NAME, T.SHOW_NAME, T.REL_SYMBOLS, T.GREEN_VALUE, T.YELLOW_VALUE, T.RED_VALUE, T.UNIT, T.SCPOE FROM TB_THRESHOLD_SETTING T WHERE T.PARAM_NAME = ?";
		Map map = getJdbcTemplate().queryForMap(sql, new Object[]{paramName});
		String[] strArray = null;
		if(map.size() > 0){
			strArray = new String[9];
			strArray[0] = (String) map.get("MODULE_NAME");
			strArray[1] = (String) map.get("PARAM_NAME");
			strArray[2] = (String) map.get("SHOW_NAME");
			strArray[3] = (String) map.get("REL_SYMBOLS");
			strArray[4] = String.valueOf((BigDecimal) map.get("GREEN_VALUE"));
			strArray[5] = String.valueOf((BigDecimal) map.get("YELLOW_VALUE"));
			strArray[6] = String.valueOf((BigDecimal) map.get("RED_VALUE"));
			strArray[7] = (String) map.get("UNIT");
			strArray[8] = String.valueOf((BigDecimal) map.get("SCPOE"));
		}else{
			strArray = new String[]{"nodata"};
		}
		
        return strArray;
	}

	public String[] getMDArray(String paramName) {
		String sql = "SELECT T.MODULE_NAME, T.PARAM_NAME, T.SHOW_NAME, T.REL_SYMBOLS, T.GREEN_VALUE, T.YELLOW_VALUE, T.RED_VALUE, T.UNIT, T.SCPOE FROM TB_THRESHOLD_SETTING T WHERE T.PARAM_NAME LIKE '%" + paramName + "%'";
		List list = getJdbcTemplate().queryForList(sql);
		int listLen = list.size();
        String[] strArray = null;
        if(listLen > 0){
        	strArray = new String[listLen];
        	for(int i=0; i<listLen; i++){
        		Map map = (Map)list.get(i);
            	StringBuffer sb = new StringBuffer();
    			sb.append((String)map.get("MODULE_NAME"))
    			  .append(",")
    			  .append((String)map.get("PARAM_NAME"))
    			  .append(",")
    			  .append((String)map.get("SHOW_NAME"))
    			  .append(",")
    			  .append((String)map.get("REL_SYMBOLS"))
    			  .append(",")
    			  .append(String.valueOf((BigDecimal) map.get("GREEN_VALUE")))
    			  .append(",")
    			  .append(String.valueOf((BigDecimal) map.get("YELLOW_VALUE")))
    			  .append(",")
    			  .append(String.valueOf((BigDecimal) map.get("RED_VALUE")))
    			  .append(",")
    			  .append((String) map.get("UNIT"))
    			  .append(",")
    			  .append(String.valueOf((BigDecimal) map.get("SCPOE")));
    			
    			strArray[i] = sb.toString();
            }
        }else{
        	strArray = new String[]{"nodata"};
        }
        
        
        return strArray;
	}

	public String getXmlData(String paramName) {
		String sql = "SELECT T.MODULE_NAME, T.PARAM_NAME, T.SHOW_NAME, T.REL_SYMBOLS, T.GREEN_VALUE, T.YELLOW_VALUE, T.RED_VALUE, T.UNIT, T.SCPOE FROM TB_THRESHOLD_SETTING T WHERE T.PARAM_NAME LIKE '%" + paramName + "%'";
		List list = getJdbcTemplate().queryForList(sql);
		
		String xmlStr = "";
		Document document = DocumentHelper.createDocument();
		if(list.size() > 0){
			if(list.size() == 1){
				Map map = (Map)list.get(0);
				Element root = document.addElement("datas");
				Element modulename = root.addElement("modulename").addText((String) map.get("MODULE_NAME"));
				Element paramName1 = root.addElement("paramName").addText((String)map.get("PARAM_NAME"));
				Element showName = root.addElement("showName").addText((String)map.get("SHOW_NAME"));
//				Element relSymbols = root.addElement("relSymbols").addText((String)map.get("REL_SYMBOLS"));
				Element relSymbols = root.addElement("relSymbols").addCDATA((String)map.get("REL_SYMBOLS"));
				Element greenValue = root.addElement("greenValue").addText(String.valueOf((BigDecimal) map.get("GREEN_VALUE")));
				Element yellowValue = root.addElement("yellowValue").addText(String.valueOf((BigDecimal) map.get("YELLOW_VALUE")));
				Element redValue = root.addElement("redValue").addText(String.valueOf((BigDecimal) map.get("RED_VALUE")));
				Element unit = root.addElement("unit").addText((String) map.get("UNIT"));
				Element scpoe = root.addElement("scpoe").addText(String.valueOf((BigDecimal) map.get("SCPOE")));
			}else{
				Element root = document.addElement("datas");
				for(int i=0; i<list.size(); i++){
					Map map = (Map)list.get(i);
					Element leaf = root.addElement("data");
					Element modulename = leaf.addElement("modulename").addText((String) map.get("MODULE_NAME"));
					Element paramName1 = leaf.addElement("paramName").addText((String)map.get("PARAM_NAME"));
					Element showName = leaf.addElement("showName").addText((String)map.get("SHOW_NAME"));
//					Element relSymbols = leaf.addElement("relSymbols").addText((String)map.get("REL_SYMBOLS"));
					Element relSymbols = leaf.addElement("relSymbols").addCDATA((String)map.get("REL_SYMBOLS"));
					Element greenValue = leaf.addElement("greenValue").addText(String.valueOf((BigDecimal) map.get("GREEN_VALUE")));
					Element yellowValue = leaf.addElement("yellowValue").addText(String.valueOf((BigDecimal) map.get("YELLOW_VALUE")));
					Element redValue = leaf.addElement("redValue").addText(String.valueOf((BigDecimal) map.get("RED_VALUE")));
					Element unit = leaf.addElement("unit").addText((String) map.get("UNIT"));
					Element scpoe = leaf.addElement("scpoe").addText(String.valueOf((BigDecimal) map.get("SCPOE")));
				}
			}
		}else{
	        Element root = document.addElement("nodata");
		}
		
		xmlStr = document.asXML();
		
    	return xmlStr;
	}

}


SpringAwareService.java代码:
package axis2.service.server;

import axis2.service.springjdbc.SpringJdbcBean;

public class SpringAwareService {

	private SpringJdbcBean springJdbcBean = null;

    public void setSpringJdbcBean(SpringJdbcBean springJdbcBean) {
    	this.springJdbcBean = springJdbcBean;
    }
    
    
	public String[] getArray(String paramName) {
		return this.springJdbcBean.getArray(paramName);
	}

	public String[] getMDArray(String paramName) {
		return this.springJdbcBean.getMDArray(paramName);
	}
	
	public String getXmlData(String paramName) {
		return this.springJdbcBean.getXmlData(paramName);
	}
}


services.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
	<service name="ComplexTypeService">

        <description>Multy Method Invoke</description>

        <parameter name="ServiceClass">axis2.service.server.ComplexTypeService</parameter>

        <operation name="uploadImageWithByte">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>

        <operation name="getArray">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        
        <operation name="getMDArray">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        
        <operation name="getDataForm">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        
        <operation name="getDataFormBytes">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>

	</service>
	
	<service name="TbThresholdSettingJdbcService">

        <description>Multy Method Invoke With Parameters</description>

        <parameter name="ServiceClass">axis2.service.server.TbThresholdSettingJdbcService</parameter>

        <operation name="getArray">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        
        <operation name="getMDArray">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        
        <operation name="getXmlData">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>

	</service>
	
	<service name="SpringJdbcService">

        <description>Multy Method Invoke With Parameters For Spring</description>

		<!-- <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter> -->
		<parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter>
		
		<parameter name="SpringBeanName">springAwareService</parameter>

        <!-- 
        <parameter name="ServiceClass">axis2.service.springjdbc.SpringJdbcService</parameter>

		<parameter name="useOriginalwsdl">false</parameter>
		
  		<parameter name="modifyUserWSDLPortAddress">true</parameter>
  		
  		<operation name="getArray">
        	<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
    	</operation>
  		
         -->

        <operation name="getArray">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        
        <operation name="getMDArray">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>
        
        <operation name="getXmlData">
           <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        </operation>


	</service>
</serviceGroup>


【说明】:把工程发布到Tomcat下,启动Tomcat并在IE地址栏输入如下访问地址:
      http://localhost:8081/TestAxis2Ws/services/SpringJdbcService?wsdl

然后运行如下客户端代码即可。
SpringJdbcClient.java代码:
package axis2.service.domain;

import java.util.Iterator;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class SpringJdbcClient {

	static Logger logger = Logger.getLogger(SpringJdbcClient.class);
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		RPCServiceClient serviceClient = null;
		try {
			serviceClient = new RPCServiceClient();
			Options options = serviceClient.getOptions();
	        EndpointReference targetEPR = new EndpointReference("http://localhost:8081/TestAxis2Ws/services/SpringJdbcService");
	        options.setTo(targetEPR);
	        
	        System.out.println("调用第一个方法...");
	        
	        //下面的代码调用了getArray方法,并返回一维String数组
	        String cszjfx = "CSZJFX";
	        Object[] opAddEntryArgs = new Object[]{cszjfx};
	        Class[] classes = new Class[]{String[].class};
	        QName opAddEntry = new QName("http://server.service.axis2", "getArray");
	        String[] strArray = (String[]) serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0];
	        for (String s : strArray)
	            System.out.print(s + "  ");
	        System.out.println();
	        
	        System.out.println("调用第二个方法...");
	        
	        //下面的代码调用了getMDArray方法,并返回一维String数组 
	        opAddEntryArgs = new Object[]{"DEVICE"};
	        opAddEntry = new QName("http://server.service.axis2", "getMDArray");
	        strArray = (String[]) serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, new Class[]{String[].class})[0];
	        
	        for (String s : strArray){
	            String[] array = StringUtils.split(s, ",");
	            for(String ss: array)
	                System.out.print("<" + ss + "> ");
	            System.out.println();
	        }
	        System.out.println();
	        
	        System.out.println("调用第三个方法...");
	        
	        //下面的代码调用了getXmlData方法,并返回一个XML格式的字符串
	        opAddEntryArgs = new Object[]{"CSZJFX"};
	        opAddEntry = new QName("http://server.service.axis2", "getXmlData");
	        String strXml = (String) serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, new Class[]{String.class})[0];
	        System.out.println(strXml);
	        Document document = DocumentHelper.parseText(strXml);
	        Element rootElm = document.getRootElement();
	        StringBuffer sb = new StringBuffer();
	        for(Iterator iter = rootElm.elementIterator(); iter.hasNext();){
                Element element = (Element) iter.next();
                System.out.println(element.getText());
            }
		} catch (AxisFault e) {
			logger.error(e.getMessage());
			System.out.println(e.getMessage());
			e.printStackTrace();
		} catch (DocumentException e) {
			logger.error(e.getMessage());
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}

}


大功告成,
分享到:
评论
1 楼 331875787 2012-12-24  
楼主,可以把源代码共享成附件吗?

相关推荐

    axis2+Spring提供WebService服务

    Axis2的核心概念是消息处理器和服务档案(Service Archive,SAR),后者包含了Web服务的所有元数据和实现代码。 Spring框架则是一个广泛使用的Java企业级应用开发框架,其核心特性包括依赖注入(Dependency ...

    WebService(Axis+spring+jpa)

    2. 配置JPA:设置persistence.xml文件,指定数据源、实体类和其他JPA属性。 3. 创建DAO(数据访问对象):利用Spring和JPA提供的接口,编写用于CRUD(创建、读取、更新、删除)操作的DAO方法。 4. 定义服务接口:...

    axis1.4+mybatis3+spring实现webservice

    在项目文件“webserviceDemo”中,可能包含了以下内容:配置文件(如 axis-config.xml、spring-context.xml、log4j.properties 或 log4j.xml),Java 源代码(包含服务接口和服务实现,MyBatis 的映射文件和 DAO 类...

    axis2 sping

    压缩包文件名称"ws-sample"暗示了这可能包含了一个Web服务示例项目,可能包含了配置文件、源代码、部署描述文件等,用于演示如何在实际项目中实现Axis2和Spring的集成。 在深入学习这个主题时,开发者应理解Spring...

    java spring项目所需jar

    在处理旧的基于DBF的数据源时,这个驱动可以帮助Java应用与这些文件进行交互。 6. **aspectjweaver.jar**:AspectJ是一个开源的面向切面编程(AOP)框架,允许开发者在不修改原有代码的情况下,插入额外的功能...

    整合SSM框架所需要用到的所有JAR

    这些JAR文件的整合,可以通过Spring的配置文件(如applicationContext.xml)进行,配置bean的定义、数据源、事务管理器、MyBatis的SqlSessionFactory以及SpringMVC的相关设置。同时,使用注解可以使配置更加简洁。...

    ssh2 lib包1

    7. **c3p0-0.9.1.2.jar**:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一套完整的数据库连接管理功能,包括连接池、空闲检测、异常处理等,提高了数据库操作的性能和稳定性。 8. **commons-...

    常用jar包说明

    - **c3p0.jar**:C3P0是一个开放源代码的JDBC连接池,被许多框架如Hibernate用作数据源管理,优化数据库连接复用。 - **commons-pool.jar**, **commons-dbcp.jar**:Apache Commons下的连接池组件,主要用于管理...

    ssm+maven+webService

    例如,通过Apache CXF或 Axis2 等库来实现。服务端提供WSDL(Web Service Description Language)文档,客户端通过这个文档来调用服务。 6. **定时器(Quartz/ScheduledExecutorService)**:在项目中,有时需要定期...

    JAVA上百实例源码以及开源项目源代码

    [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,...

    java变态面试题.pdf

    * Hibernate sessionfactory 和 session 的区别:sessionfactory 是一个数据源对应着一个sessionfactory,属于二级缓存,而 session 是一次回话,也就是说是一级缓存,并且是由 sessionfactory 创建的。 * Hibernate...

    TongWeb5.0用户使用手册.pdf

    - **JDBC数据源概述**:JDBC是Java访问数据库的标准API,TongWeb5.0提供了对JDBC数据源的支持。 - **TongWeb5.0中的JDBC数据源概述**:支持多种数据库驱动,如MySQL、Oracle等。 - **连接池管理功能描述**:通过连接...

    MULE IN ACTION

    Mule支持多种连接器,使得它能够与不同类型的源和目标进行交互,包括JMS、JDBC、TCP、UDP、Multicast、HTTP、Servlet、SMTP、POP3、文件、XMPP等。这种可插入性意味着Mule能够轻松地集成现有的系统和应用程序。 3. ...

    java开源包2

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包4

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    company_lib

    - **数据库连接**:如JDBC驱动,如MySQL Connector/J,Oracle JDBC驱动等,用于与各种数据库系统进行通信。 - **Web服务**:如Apache Axis、JAX-WS等,用于创建和消费SOAP或RESTful Web服务。 - **框架**:Spring...

    ESB产品说明

    Mule支持超过20种的传输协议,包括但不限于文件系统访问、FTP、UDP、SMTP、POP、HTTP、SOAP、JMS等,这使得Mule能够无缝连接各种不同的数据源,如Spring框架、ActiveMQ、CXF、Axis、Drools等。 值得注意的是,Mule...

    各种jar包

    一个JAR文件实质上是一个ZIP压缩文件,包含.class文件(编译后的Java源代码)、资源文件(如图片、音频或配置文件)以及相关的元数据(如MANIFEST.MF文件)。MANIFEST.MF文件包含了关于JAR的重要信息,比如它的主类...

    java开源包1

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包11

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

Global site tag (gtag.js) - Google Analytics