spring3.2+ibatis2.3+cxf2.2+access整合开发

整个项目的功能是对外发布一个服务,数据库使用的是access。

对外发布服务

Cxf对外发布服务,是建立在service层,所以,要发布服务,只需在service层进行设置,具体见代码:

首先在service层建立了一个接口。

@WebService
public interface IAccFundService {
   public abstract String[] getAccFun(@WebParam(name="acc") String acc,@WebParam(name="id") Stringid);
}


         @WebService表明它是作为一个服务对外发布,这点很重要,必不可少,@WebParam保证xml文件中参数名称的正确性

接下来写实现

@WebService(endpointInterface[d1] ="com.appserv.service.IAccFundService")
@SOAPBinding(style = Style.RPC)[d2] 
public class AccFundServiceImpl implements IAccFundService{
   private IQueryDaoFund query;
   //加入WebParam以保证xml文件中参数名称的正确性
   @Override
   public String[] getAccFun(String acc, String id){
      // TODO Auto-generatedmethod stub
              ……
   }
   public IQueryDaoFund getQuery() {
      return query;
   }
   public void setQuery(IQueryDaoFund query) {
      this.query = query;
   } 
}


在实现类中,同样要标示@WebService,并指定了所使用的接口

@SOAPBinding

Tomcat

<?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">
<!-- 监听器,用于初始化spring框架 -->
   <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:beans.xml</param-value>
   </context-param>
<!—将请求转化为cxf -->
   <servlet>
      <servlet-name>CXFService</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
   </servlet>
   <servlet-mapping>
      <servlet-name>CXFService</servlet-name>
      <url-pattern>/cxf/*</url-pattern>
   </servlet-mapping>
</web-app>


整合spring

<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:jaxws="http://cxf.apache.org/jaxws" 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-3.2.xsd   
      http://www.springframework.org/schema/context   
       http://www.springframework.org/schema/context/spring-context-3.2.xsd   
       http://cxf.apache.org/jaxws    
      http://cxf.apache.org/schemas/jaxws.xsd">
   <!-- 引入cxf配置文件 -->
   <import resource="classpath:META-INF/cxf/cxf.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
   <!-- 对外发布服务 -->
   <jaxws:endpoint id="userService" implementor="#accFund"
      address="/appserver" />
   <!-- 读取jdbc配置文件 -->
   <bean
   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
        <value>classpath:jdbc.properties</value>
      </property>
   </bean>
   <!-- 配置数据源 -->
   <bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
      <property name="driverClassName"value="${jdbc.driverClassName}" />
      <property name="url"value="${jdbc.url}" />
   </bean>
   <!-- 读取ibatis配置文件 -->
   <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
      <property name="dataSource"ref="dataSource1"></property>
      <property name="configLocation">
        <value>classpath:SqlMapConfig.xml</value>
      </property>
   </bean>
   <!-- 实现层的注入 -->
   <bean id="queryfundDao" class="com.appserv.DaoImpl.QueryFundDaoImpl">
      <property name="client">
        <ref local="sqlMapClient"/>
      </property>
   </bean>
   <!-- 业务层的注入 -->
   <bean id="accFund" class="com.appserv.service.AccFundServiceImpl">
      <property name="query"ref="queryfundDao"></property>
   </bean>
</beans>


整合ibatis

<?xml version="1.0"encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig     
    PUBLIC "-//ibatis.apache.org//DTDSQL Map Config 2.0//EN"     
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!—-指定加载文件地址 -->
  <sqlMap resource="com/appserv/bean/Account.xml"/>
</sqlMapConfig>

使用rmijdbc

虽然现在Access数据库已经用的很少了,但是政府的一些项目还是搭建在了Access上,至于为什么不使用其它的数据库,为什么?你问我为什么?额,这我哪知道。总之,要求的数据库是access数据库。

使用access数据库存在一个问题,access数据库没有网络版的,它自身不支持远程访问,不能像其它数据库那样,直接配置一个ip地址就可以访问,这就出现了一个问题,如果应用程序和数据库服务器部署在一台机器上,显然是不合适的。解决的办法就是引入rmijdbc。

  数据库配置信息如下:

jdbc.driverClassName=org.objectweb.rmijdbc.Driver

jdbc.url=jdbc:rmi://192.168.6.236:1099/jdbc:odbc:ceshi

  在数据库所在机上

         1配置Access数据源

             配置数据源,在ODBC数据源管理器中选择“系统DSN”进行配置,并给数据源命名;

         2  运行rmijdbc服务

          进入cmd界面,运行java -**.jar org.objectweb.rmijdbc.Driver,其中**为rmijdbc.jar所在的位置;

启动应用程序,使用soapui进行测试,测试通过,结果正确。


      

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值