xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.lonely.webservice
ws_parent
0.0.1-SNAPSHOT
pom
4.1.7.RELEASE
3.4.1
1.3.0
4.0.0
5.1.32
1.0.9
1.2
2.5
2.0
1.7.10
1.1.7
1.4
org.springframework
spring-core
${spring-version}
org.springframework
spring-beans
${spring-version}
org.springframework
spring-tx
${spring-version}
org.springframework
spring-context
${spring-version}
org.springframework
spring-context-support
${spring-version}
org.springframework
spring-web
${spring-version}
org.springframework
spring-webmvc
${spring-version}
org.springframework
spring-aop
${spring-version}
org.springframework
spring-aspects
${spring-version}
org.springframework
spring-jdbc
${spring-version}
org.apache.cxf
cxf-core
3.1.6
org.apache.cxf
cxf-rt-frontend-jaxws
3.1.6
org.apache.cxf
cxf-rt-transports-http-jetty
3.1.6
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
${mybatis.spring.version}
com.github.pagehelper
pagehelper
${pagehelper.version}
mysql
mysql-connector-java
${mysql.version}
com.alibaba
druid
${druid.version}
commons-dbcp
commons-dbcp
${dbcp.version}
jstl
jstl
${jstl.version}
javax.servlet
servlet-api
${servlet-api.version}
provided
javax.servlet
jsp-api
${jsp-api.version}
provided
org.slf4j
slf4j-api
${slf4j.api.version}
ch.qos.logback
logback-classic
${logback.version}
ch.qos.logback
logback-core
${logback.version}
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
UTF-8
ws_server
ws_client
ws_ssm_server
2. 新建一个maven子工程 ws_ssm_server
2.1 新建一个子工程,打包方式为 war格式,因为spring的很多依赖有重复,经整理后 其pom文件如下:
4.0.0
com.lonely.webservice
ws_parent
0.0.1-SNAPSHOT
ws_ssm_server
war
org.springframework
spring-context-support
org.springframework
spring-webmvc
org.springframework
spring-aspects
org.springframework
spring-jdbc
org.apache.cxf
cxf-core
org.apache.cxf
cxf-rt-frontend-jaxws
org.apache.cxf
cxf-rt-transports-http-jetty
org.mybatis
mybatis
org.mybatis
mybatis-spring
mysql
mysql-connector-java
commons-dbcp
commons-dbcp
org.slf4j
slf4j-api
ch.qos.logback
logback-classic
ch.qos.logback
logback-core
2.2 spring整合cxf
2.2.1 在web.xml中添加 cxf 拦截器处理器配置,以及 spring容器启动创建配置
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">
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
forceEncoding
true
encoding
UTF-8
characterEncoding
UTF-8
encodingFilter
/*
contextConfigLocation
classpath:spring/application.xml
org.springframework.web.context.ContextLoaderListener
cxfServlet
org.apache.cxf.transport.servlet.CXFServlet
cxfServlet
/cxf/*
/index.jsp
2.2.2 在resource目录下 创建文件夹 spring,在里面创建spring与cxf集成的配置文件 : spring-cxf.xml这里注意要添加一个 jaxws的命名空间,以及引入两个 cxf中的 xml配置
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
2.2.3 jaxws:endpoint 中的 implementor:对应的服务接口的实现类,而 address :对应发布的接口路径,注意在实际的接口实现类上 使用注解 @Component让spring 扫描发现管理,给个别名用于在了 implementor属性上UserService
package com.lonely.service;
import java.util.List;
import java.util.Map;
import javax.jws.WebService;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import com.lonely.adapter.MapConvertAdapter;
import com.lonely.model.Clazz;
import com.lonely.model.User;
@WebService
public interface UserService {
/**
* 根据班级信息返回该班级的学生列表
*
* @param clazz
* @return
*/
List findUsersByClass(Clazz clazz);
/**
* 查看所有班级信息以及班级下的所有学生
*
* @return
*/
@XmlJavaTypeAdapter(value = MapConvertAdapter.class)
Map> findAll();
}UserServiceImpl
package com.lonely.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.jws.WebService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.lonely.dao.UserDao;
import com.lonely.model.Clazz;
import com.lonely.model.User;
import com.lonely.service.UserService;
@Component("userService")
@WebService
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List findUsersByClass(Clazz clazz) {
return this.userDao.findUsersByClass(clazz);
}
@Override
public Map> findAll() {
List clazzList = this.userDao.findAll();
if (clazzList != null && clazzList.size() != 0) {
Map> map = new HashMap<>();
for (Clazz clazz : clazzList) {
map.put(clazz.getClassName(), clazz.getUsers());
}
return map;
}
return null;
}
}
2.3 spring整合mybatis
2.3.1 在spring目录下,添加 spring与mybatis集成的配置 : spring-datasource.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
dialect=mysql
2.3.2 在 basePackage 对应的路径下 编写 dao层的接口package com.lonely.dao;
import java.util.List;
import com.lonely.model.Clazz;
import com.lonely.model.User;
public interface UserDao {
List findUsersByClass(Clazz clazz);
List findAll();
}2.3.3 在 mapperLocations 对应的路径下 编写 mybatis的sql操作的xml文件,这里比如如下:
SELECT * from user u where u.classId = #{classId}
SELECT
*
FROM
clazz c
JOIN USER u ON c.classId = u.classId
2.3.4 在这里 使用了 mybatis的一对多,所以在 Clazz实体类上 多加了一个属性 List users;
2.3.5 忘了 前面还需要一个 jdbc.properties
## jdbc环境配置
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.jdbcUrl = jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&allowMultiQueries=true
jdbc.jdbcUsername = root
jdbc.jdbcPassword = xxx
#jdbc.logAbandoned = false
#jdbc.initialSize = 20
#jdbc.maxActive =1000
#jdbc.maxIdle=100
#jdbc.maxWait = 1000
#jdbc.minEvictableIdleTimeMillis = 300000
#jdbc.minIdle = 10
#jdbc.removeAbandoned = true
#jdbc.removeAbandonedTimeout = 3000
#jdbc.timeBetweenEvictionRunsMillis = 10000
#jdbc.testOnBorrow = false
#jdbc.testWhileIdle = true
#jdbc.validSql = select now()
2.4 spring+cxf+mybatis
2.4.1 在spring目录下 创建一个spring的核心文件 application.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
2.4.2 至此,spring+cxf+mybatis整合完毕,整个项目结构如下3. 使用wsdl2java工具生成客户端代码,跟原来的ws_client类似,直接测试即可