服务分为三中:实体服务,功能服务和流程服务。
实体服务:从功能介绍就是对实体的CRUD操作。
需求介绍:在企业中使用不同的设备向平台某实体CRUD操作。
废话不说开始干活
导入包:spring包
mybatis包
commons-beanutils包http://commons.apache.org/beanutils/download_beanutils.cgi把下载的包全导入
导入c3p0.jar和ojdbc14
cxf包http://cxf.apache.org/download.html需要的话包中的都加入
dozer包http://sourceforge.net/projects/dozer/files/下载dozer.jar
配置操作实体的CRUD之applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 扫描包下的类 -->
<context:component-scan base-package="rfid">
<context:include-filter type="regex" expression="rfid.dao.*"/>
<context:include-filter type="regex" expression="rfid.service.*"/>
<context:include-filter type="regex" expression="rfid.test.*"/>
</context:component-scan>
<context:annotation-config />
<tx:annotation-driven />
<!-- 配置JDBC文件 -->
<context:property-placeholder location="classpath:resources/jdbc.properties"/>
<!-- 配置数据库连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 配置mybatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:resources/sqlMapConfig.xml"/>
</bean>
<!-- 配置mybatis模版 -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
<!-- 自动扫描接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="rfid.mapper" />
</bean>
<!-- 配置事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>mybatis主文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<typeAliases>
<typeAlias alias="ddf" type="rfid.domain.DDF" />
</typeAliases>
<mappers>
<mapper resource="rfid/mapper/DDFMapper.xml"/>
</mappers>
</configuration>创建mapper接口,和实体类
等到一切CRUD操作测试通过开始CXF创建服务
配置WEB.xml
<!-- CXF 配置 -->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>下面创建dto层隔离和业务的耦合其中的属性和实体的一样。
创建服务接口
@WebService(name = "DDFService", targetNamespace = WsConstants.NS)
public interface DDFWebService {
String createDDF(@WebParam(name = "xmlString")String xmlString);
String updateDDF(@WebParam(name = "xmlString")String xmlString);
String findDDF(@WebParam(name = "id")long id);
String sayHello(@WebParam(name = "name")String name);
}public class WsConstants {
/**项目内统一的NameSpace定义.*/
public static final String NS = "http://webservice.rfid";
}创建实现类
@WebService(serviceName = "DDFService", portName = "DDFServicePort", endpointInterface = "rfid.webservice.DDFWebService", targetNamespace = WsConstants.NS)
public class DDFWebServiceImpl implements DDFWebService {
@Resource
private DDFManage ddfManage;
private Mapper mapper = new DozerBeanMapper();
private static JaxbBinder binder = new JaxbBinder(DDFDTO.class);
public String createDDF(String xmlString) {
DDFDTO ddfDTO = binder.fromXml(xmlString);
DDF ddf = mapper.map(ddfDTO, DDF.class);
int i = ddfManage.create(ddf);
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ddf><stateCode>"+
i+"</stateCode></ddf>";
}
public String findDDF(long id) {
DDF ddf = ddfManage.find(id);
DDFDTO ddfDTO = mapper.map(ddf, DDFDTO.class);
return binder.toXml(ddfDTO, "UTF-8");
}
public String updateDDF(String xmlString) {
DDFDTO ddfDTO = binder.fromXml(xmlString);
DDF ddf = mapper.map(ddfDTO, DDF.class);
int i = ddfManage.update(ddf);
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ddf><stateCode>"+
i+"</stateCode></ddf>";
}
public String sayHello(String name) {
return "Hello World "+name+" !";
}
}
测试客户端
public class Client {
/**
* @param args
* @throws MalformedURLException
*/
public static void main(String[] args) throws MalformedURLException {
URL url = new URL("http://localhost:8080/ws/DDFService?wsdl");
QName qname = new QName("http://webservice.rfid","DDFService");
Service service = Service.create(url, qname);
DDFWebService hw = service.getPort(DDFWebService.class);
System.out.println(hw.sayHello("张三那"));
System.out.println(hw.findDDF(60000L));
String createXMLString = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"+
"<ddf>"+
"<id>111111</id>"+
"<serialNumber>室内测试111111</serialNumber>"+
"<ddfNumber>SN111111</ddfNumber>"+
"<detailAddress>文三路555号中小企业大厦</detailAddress>"+
"</ddf>";
String updateXMLString = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"+
"<ddf>"+
"<id>111111</id>"+
"<serialNumber>室内测试222222</serialNumber>"+
"<ddfNumber>SN222222</ddfNumber>"+
"<detailAddress>文三路555号中小企业大厦</detailAddress>"+
"</ddf>";
//System.out.println(hw.createDDF(createXMLString));
System.out.println(hw.updateDDF(updateXMLString));
}