整个项目的功能是对外发布一个服务,数据库使用的是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进行测试,测试通过,结果正确。