Spring+Dubbo+MyBatis+Linner分布式Web开发环境搭建

     

        本文承接我之前的博客《Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建》,以下我在对相关的Maven配置和详细的Spring配置文件进行简单介绍。

整个开发框架大体结构如下:

1) 核心业务逻辑工程用于处理系统自身的核心业务逻辑;

2) 桥梁工程用于关联页面工程和后台处理逻辑;

3) 公共业务逻辑对公共的业务逻辑进行处理;

4) Maven父工程用于对整个开发环境进行配置,包括jar包的定义与管理,系统基本环境的配置(例:数据库连接的管理);

5) 客户端接口工程用于发布服务给桥梁工程或可信任的第三方调用;

6) 客户端接口实现工程用于具体实现服务接口;

7) 任务调度工程用于处理相关任务调度;

8) 总的框架工程用于对前面的后台工程进行统一的管理。

以下我将对各个工程进行逐一介绍:

1.核心业务逻辑mkhl-biz:

    mkhl-biz工程的具体结构如下图:
    

1)biz工程的pom文件:

<?xml version="1.0"?>
<projectxsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><parent><artifactId>mkhl-parent</artifactId><groupId>com.ouc.mkhl.supplier</groupId><version>1.0</version><relativePath>../mkhl-parent/pom.xml</relativePath></parent><artifactId>mkhl-biz</artifactId><name>mkhl-biz</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- oop开放平台核心业务(此jar包须具有相关开发权限) --><dependency><groupId>com.ouc</groupId><artifactId>oop-core</artifactId></dependency><dependency><groupId>weblogic</groupId><artifactId>wlfullclient</artifactId><scope>provided</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId></dependency><!-- <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> --><dependency><groupId>com.ouc.mkhl.supplier</groupId><artifactId>mkhl-service-client</artifactId><exclusions><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.ouc.mkhl.supplier</groupId><artifactId>mkhl-common</artifactId></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId></dependency><dependency><groupId>javax.jms</groupId><artifactId>jms-api</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId></dependency><dependency><groupId>com.oracle</groupId><artifactId>ojdbc14</artifactId></dependency><!-- mysql连接 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><!-- <version>5.1.34</version> --></dependency><dependency><groupId>commons-pool</groupId><artifactId>commons-pool</artifactId><!-- <version>1.6</version> --></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><!-- <version>1.4</version> --></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId></dependency><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId></dependency><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId></dependency><!-- XStream --><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId></dependency><dependency><groupId>xpp3</groupId><artifactId>xpp3_min</artifactId></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId></dependency><dependency><groupId>org.terracotta.quartz</groupId><artifactId>quartz-terracotta</artifactId></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId></dependency><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><type>pom</type></dependency><dependency><groupId>com.haier.openplatform.hfs</groupId><artifactId>hfs-service-client</artifactId></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></dependency><dependency><groupId>com.ouc.openplatform</groupId><artifactId>monitor-service-client</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>com.dangdang</groupId><artifactId>config-toolkit-easyzk</artifactId></dependency><dependency><groupId>mx4j</groupId><artifactId>mx4j</artifactId></dependency><dependency><groupId>mx4j</groupId><artifactId>mx4j-tools</artifactId></dependency><dependency><groupId>com.ouc</groupId><artifactId>openapi-auth</artifactId></dependency><dependency><groupId>com.ouc</groupId><artifactId>openapi-service-client</artifactId></dependency></dependencies>
</project>

注:当中与ouc相关的包不对外开发。

2)以安全模块为例,对单一模块的编写进行简单介绍。

   单一模块结构如下图:
   
     (1)advice实例:OperationLogAdvice
package com.ouc.mkhl.supplier.security.advice;import java.util.Date;import org.aspectj.lang.ProceedingJoinPoint;import com.ouc.openplatform.log.advice.DefaultOperationLogAdvice;
import com.ouc.openplatform.log.config.LogConfiguration;
import com.ouc.openplatform.log.domain.OperationLog;
import com.ouc.openplatform.security.LoginContext;
import com.ouc.openplatform.security.LoginContextHolder;
import com.ouc.openplatform.util.OOPConstant;
import com.ouc.mkhl.supplier.security.service.OperationLogService;/*** @author Tom*/
public class OperationLogAdvice extends DefaultOperationLogAdvice {private OperationLogService operationLogService;@Overrideprotected void saveLog(OperationLog operationLog) {operationLogService.save(operationLog);}public void setOperationLogService(OperationLogService operationLogService) {this.operationLogService = operationLogService;}protected OperationLog createOperationLog(ProceedingJoinPoint thisJoinPoint,LogConfiguration logConfiguration){LoginContext loginContext = LoginContextHolder.get();if(loginContext == null){loginContext = new LoginContext();loginContext.setUserId(-999L);loginContext.setUserName("-SYSTEM-");}OperationLog operationLog = new OperationLog();operationLog.setAppName(HOPConstant.getAppName());operationLog.setGmtCreate(new Date());operationLog.setGmtModified(new Date());operationLog.setUserId(loginContext.getUserId());operationLog.setUserName(loginContext.getUserName());operationLog.setOperationType(logConfiguration.getType());operationLog.setModule(logConfiguration.getModule());operationLog.setDescription(executeTemplate(getMessage(logConfiguration.getMessageMap()),thisJoinPoint));return operationLog;}
}

(2)dao实例:SupplyUserDAO

package com.ouc.mkhl.supplier.security.dao;import java.util.List;import com.ouc.mkhl.supplier.security.model.SupplyUser;public interface SupplyUserDAO {public int deleteByPrimaryKey(String supplycode);public int insert(SupplyUser record);public int insertSelective(SupplyUser record);public SupplyUser selectByPrimaryKey(String supplycode);public int updateByPrimaryKeySelective(SupplyUser record);public int updateByPrimaryKey(SupplyUser record);public List<SupplyUser> selectAllSupplyUser();public SupplyUser selectByVCode(String supplycode);}
     (3)domain实例:OrderNum
package com.ouc.mkhl.supplier.security.domain;public class OrderNum {private String itemName; // 项目名private int myOrderNum; // 我的订单private int proOrderNum; // 订单生产private int tstOrderNum; // 订单检测private int subOrderNum; // 订单交付private String percentage; // 完成率public String getItemName() {return itemName;}public void setItemName(String itemName) {this.itemName = itemName == null ? null : itemName.trim();}public int getMyOrderNum() {return myOrderNum;}public void setMyOrderNum(int myOrderNum) {this.myOrderNum = myOrderNum;}public int getProOrderNum() {return proOrderNum;}public void setProOrderNum(int proOrderNum) {this.proOrderNum = proOrderNum;}public int getTstOrderNum() {return tstOrderNum;}public void setTstOrderNum(int tstOrderNum) {this.tstOrderNum = tstOrderNum;}public int getSubOrderNum() {return subOrderNum;}public void setSubOrderNum(int subOrderNum) {this.subOrderNum = subOrderNum;}public String getPercentage() {return percentage;}public void setPercentage(String percentage) {this.percentage = percentage == null ? null : percentage.trim();}
}

(4)model实例:SupplyUser

package com.ouc.mkhl.supplier.security.model;import java.io.Serializable;public class SupplyUser implements Serializable{private static final long serialVersionUID = -123120032141L;private String supplycode;private String supplypass;private String supplyname;public String getSupplycode() {return supplycode;}public void setSupplycode(String supplycode) {this.supplycode = supplycode == null ? null : supplycode.trim();}public String getSupplypass() {return supplypass;}public void setSupplypass(String supplypass) {this.supplypass = supplypass == null ? null : supplypass.trim();}public String getSupplyname() {return supplyname;}public void setSupplyname(String supplyname) {this.supplyname = supplyname == null ? null : supplyname.trim();}
}

(5)内部Service接口实例:SupplyUserService

package com.ouc.mkhl.supplier.security.service;import java.util.List;import com.ouc.mkhl.supplier.security.model.SupplyUser;public interface SupplyUserService {public int saveSupplyUser(SupplyUser supplyUser);public List<SupplyUser> getAllSupplyUser();public SupplyUser getSupplyUserByVCode(String supplycode);}

(6)内部Service接口实现实例:SupplyUserServiceImpl

package com.ouc.mkhl.supplier.security.service.impl;import java.util.List;import org.springframework.stereotype.Service;import com.ouc.mkhl.supplier.security.dao.SupplyUserDAO;
import com.ouc.mkhl.supplier.security.model.SupplyUser;
import com.ouc.mkhl.supplier.security.service.SupplyUserService;@Service
public class SupplyUserServiceImpl implements SupplyUserService {private SupplyUserDAO supplyUserDAO;public SupplyUserDAO getSupplyUserDAO() {return supplyUserDAO;}public void setSupplyUserDAO(SupplyUserDAO supplyUserDAO) {this.supplyUserDAO = supplyUserDAO;}@Overridepublic int saveSupplyUser(SupplyUser supplyUser) {int a = supplyUserDAO.insert(supplyUser);return a;}@Overridepublic List<SupplyUser> getAllSupplyUser() {System.out.println("进入了biz层impl的getAllSupplyUser");List<SupplyUser> supplyUserList = null;try {supplyUserList = supplyUserDAO.selectAllSupplyUser();} catch (Exception e) {e.printStackTrace();}return supplyUserList;}@Overridepublic SupplyUser getSupplyUserByVCode(String supplycode) {SupplyUser supplyUser = null;try {supplyUser = supplyUserDAO.selectByVCode(supplycode);} catch (Exception e) {e.printStackTrace();}return supplyUser;}
}

3)MyBatis配置:

      (1)sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings><setting name="cacheEnabled" value="true" /><setting name="lazyLoadingEnabled" value="true" /><setting name="multipleResultSetsEnabled" value="true" /><setting name="useColumnLabel" value="true" /><setting name="useGeneratedKeys" value="false" /><setting name="autoMappingBehavior" value="PARTIAL" /><setting name="defaultExecutorType" value="SIMPLE" /><!-- SIMPLE REUSE BATCH --><!-- <setting name="defaultExecutorType" value="BATCH" /> --><setting name="defaultStatementTimeout" value="25000" /><setting name="safeRowBoundsEnabled" value="false" /><setting name="mapUnderscoreToCamelCase" value="false" /><setting name="localCacheScope" value="SESSION" /><!-- <setting name="jdbcTypeForNull" value="OTHER" /> --><setting name="jdbcTypeForNull" value="NULL" /><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" /></settings><typeAliases><!-- =========================================================== --><!-- security模块 --><!-- =========================================================== --><typeAlias alias="supplyUser" type="com.ouc.mkhl.supplier.security.model.SupplyUser"/></typeAliases><typeHandlers><typeHandler handler="com.ouc.openplatform.dao.mybatis.SerializableTypeHandler"/></typeHandlers>
</configuration>

(2)mappers/security/SupplyUserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ouc.mkhl.supplier.security.dao.SupplyUserDAO" ><resultMap id="SupplyUserMap" type="supplyUser" ><id column="SupplyCode" property="supplycode" jdbcType="VARCHAR" /><result column="SupplyPass" property="supplypass" jdbcType="VARCHAR" /><result column="SupplyName" property="supplyname" jdbcType="VARCHAR" /></resultMap><sql id="Base_Column_List" >SupplyCode, SupplyPass, SupplyName</sql><select id="selectAllSupplyUser" resultMap="SupplyUserMap">select * from supplyuser</select><select id="selectByVCode" resultType="supplyUser" parameterType="java.lang.String" >select * from supplyuserwhere SupplyCode = #{supplycode,jdbcType=VARCHAR}</select><delete id="deleteByPrimaryKey" parameterType="java.lang.String" >delete from supplyuserwhere SupplyCode = #{supplycode,jdbcType=VARCHAR}</delete><insert id="insert" parameterType="supplyUser" >insert into supplyuser (SupplyCode, SupplyPass, SupplyName)values (#{supplycode,jdbcType=VARCHAR}, #{supplypass,jdbcType=VARCHAR}, #{supplyname,jdbcType=VARCHAR})</insert><insert id="insertSelective" parameterType="supplyUser" >insert into supplyuser<trim prefix="(" suffix=")" suffixOverrides="," ><if test="supplycode != null" >SupplyCode,</if><if test="supplypass != null" >SupplyPass,</if><if test="supplyname != null" >SupplyName,</if></trim><trim prefix="values (" suffix=")" suffixOverrides="," ><if test="supplycode != null" >#{supplycode,jdbcType=VARCHAR},</if><if test="supplypass != null" >#{supplypass,jdbcType=VARCHAR},</if><if test="supplyname != null" >#{supplyname,jdbcType=VARCHAR},</if></trim></insert><update id="updateByPrimaryKeySelective" parameterType="supplyUser" >update supplyuser<set ><if test="supplypass != null" >SupplyPass = #{supplypass,jdbcType=VARCHAR},</if><if test="supplyname != null" >SupplyName = #{supplyname,jdbcType=VARCHAR},</if></set>where SupplyCode = #{supplycode,jdbcType=VARCHAR}</update><update id="updateByPrimaryKey" parameterType="supplyUser" >update supplyuserset SupplyPass = #{supplypass,jdbcType=VARCHAR},SupplyName = #{supplyname,jdbcType=VARCHAR}where SupplyCode = #{supplycode,jdbcType=VARCHAR}</update>
</mapper>

4)Spring相关配置:

   (1)spring/spring-common.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:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"xmlns:lang="http://www.springframework.org/schema/lang" xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/langhttp://www.springframework.org/schema/lang/spring-lang-3.1.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-3.1.xsd"><bean class="com.ouc.mkhl.supplier.util.SystemBootstrap" init-method="init"><property name="httpAdaptor" ref="httpAdaptor" /></bean><bean class="com.ouc.openplatform.util.SpringApplicationContextHolder"/><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:/mybatis/sqlMapConfig.xml" /><property name="mapperLocations" value="classpath:/mybatis/**/*Mapper.xml" />  <property name="typeAliasesPackage" value="com.ouc.mkhl.supplier.security.model" /></bean><bean id="baseDAO" class="org.mybatis.spring.mapper.MapperFactoryBean" abstract="true" lazy-init="true"><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean><!-- email template config --><bean id="templateEngine" class="com.ouc.openplatform.template.FreemarkerTemplateEngine"><property name="freeMarkerconfiguration" ref="freeMarkerconfiguration"/></bean><bean id="freeMarkerconfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"><property name="templateLoaderPath" value="classpath:/email"/><property name="freemarkerSettings"><props><prop key="template_update_delay">1800</prop><!-- 模板更新延时 -->  <prop key="default_encoding">UTF-8</prop> <prop key="locale">zh_CN</prop><prop key="number_format">0.######</prop></props></property></bean><bean id="emailBuilder" class="com.ouc.openplatform.hmc.sender.email.DefaultEmailBuilder"><property name="templateEngine" ref="templateEngine"/></bean><!-- <bean class="com.ouc.openplatform.jmx.JmxMBeanServiceInit"><property name="httpAdapterName" value="httpAdaptor" /></bean> --><bean id="profileAdvice" class="com.ouc.openplatform.console.audit.ProfileAdvice"></bean><aop:config><aop:pointcut id="profileAudit" expression="execution(* com.ouc..service.impl.*ServiceImpl.*(..)) or execution(* com.ouc..dao.impl.*DAOImpl.*(..))"/>  <aop:aspect ref="profileAdvice" order="5"><aop:before pointcut-ref="profileAudit" method="beforeExecute"/><aop:after pointcut-ref="profileAudit" method="afterExecute" /></aop:aspect>       </aop:config>
</beans>

(2)加载系统信息的类:SystemBootstrap

package com.ouc.mkhl.supplier.util;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;import mx4j.tools.adaptor.http.HttpAdaptor;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.env.AbstractEnvironment;import com.ouc.openplatform.SysException;
import com.ouc.openplatform.console.audit.AuditInfoCollector;
import com.ouc.openplatform.session.listener.MaxSessionUtil;
import com.ouc.openplatform.util.Env;
import com.ouc.openplatform.util.HOPConstant;/*** @author Tom*/
public class SystemBootstrap implements InitializingBean {/*** CONFIG_FILE_PATH 系统变量配置文件路径*/private static final String CONFIG_FILE_PATH = "/env.properties";private static final Log LOG = LogFactory.getLog(SystemBootstrap.class);private HttpAdaptor httpAdaptor;public static void  init() {InputStream inputStream = null;Properties properties = new Properties();try{inputStream = SystemBootstrap.class.getResourceAsStream(CONFIG_FILE_PATH);properties.load(inputStream);LOG.info("系统配置项:"+properties);}catch (Exception e) {LOG.error("读取系统配置文件时发生错误:",e);throw new SysException(e);}finally{if(inputStream != null){try {inputStream.close();} catch (IOException e) {LOG.error("关闭文件输入流失败:",e);}}}Env.init(properties);AuditInfoCollector.setAppNM(Env.getProperty(Env.KEY_SERVER_NAME));HOPConstant.setAppName(Env.getProperty(Env.KEY_SERVER_NAME));//设置一些全局参数MaxSessionUtil.setMaxSessionKey(Env.getProperty(Env.KEY_SERVER_NAME)+"_MAX_SESSION_KEYS");//使用spring的profileSystem.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, Env.getProperty(Env.ENV_TYPE));}@Overridepublic void afterPropertiesSet() throws Exception {httpAdaptor.start();}public void setHttpAdaptor(HttpAdaptor httpAdaptor) {this.httpAdaptor = httpAdaptor;}
}

(3)spring/spring-config-toolkit.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:lang="http://www.springframework.org/schema/lang" xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/langhttp://www.springframework.org/schema/lang/spring-lang-3.1.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-3.1.xsd"><bean id="configFactory" class="com.dangdang.config.service.easyzk.ConfigFactory"><constructor-arg name="connectStr" value="${service.config.center.address}" /><constructor-arg name="rootNode" value="/config-center/common" /><constructor-arg name="version" value="1.0" /></bean><bean id="zookeeperSources" class="com.dangdang.config.service.easyzk.support.spring.ZookeeperSourceFactoryProxy" factory-method="create"><constructor-arg name="appName" value="${server.name}" /><constructor-arg name="configFactory" ref="configFactory" /><constructor-arg name="nodes" value=""/></bean><bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"><property name="order" value="1" /><property name="ignoreUnresolvablePlaceholders" value="true" /><property name="location" value="classpath:/application.properties"/></bean><bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"><property name="order" value="2" /><property name="ignoreUnresolvablePlaceholders" value="true" /><property name="propertySources" ref="zookeeperSources" /></bean>
</beans>

(4)spring/spring-datasource.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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"xmlns:lang="http://www.springframework.org/schema/lang"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/langhttp://www.springframework.org/schema/lang/spring-lang-3.1.xsd"><bean id="druidStatLoggerProxy" class="com.ouc.openplatform.console.audit.DruidStatLoggerProxy"><property name="sendMessageClient" ref="sendMessageClient" /><property name="enabled" value="${druid.monitor.enable}" /></bean><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="url" value="${datasource.url}" /><property name="username" value="${datasource.name}" /><property name="password" value="${datasource.password}" /><property name="connectionProperties" value="config.decrypt=false" /><property name="filters" value="config,log4j" /><property name="maxActive" value="${datasource.maxActive}" /><property name="initialSize" value="${datasource.initialiSize}" /><property name="maxWait" value="60000" /><property name="minIdle" value="8" /><property name="timeBetweenEvictionRunsMillis" value="10000" /><property name="minEvictableIdleTimeMillis" value="300000" /><property name="validationQuery" value="SELECT 'x' from dual " /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><property name="poolPreparedStatements" value="true" /><property name="maxPoolPreparedStatementPerConnectionSize" value="20" /><property name="timeBetweenLogStatsMillis" value="${time.between.logstats.millis}" /><property name="statLogger" ref="druidStatLoggerProxy" /></bean><!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.ouc.mkhl.supplier.security.dao" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /></bean> --></beans>

(5)spring/spring-dubbo.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:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><dubbo:application name="${app.name}" /><!-- <dubbo:protocol name="dubbo" port="${dubbo.port}" /> --><!-- <dubbo:protocol name="rmi" port="1099" /> --><!-- <dubbo:protocol name="hessian" port="8089" /> --><!-- <dubbo:protocol name="webservice" port="9999" server="jetty"/> --><!-- 多注册中心配置 --><dubbo:registry id="qingdaoRegistry" protocol="zookeeper"address="${dubbo.registry.address}" timeout="60000" /><!-- <dubbo:registry id="hangzhouRegistry" address="10.21.131.151:9010" default="false" /> --><!-- 调用方添加参数 --><dubbo:consumer><dubbo:parameter key="almId" value="S00001" /></dubbo:consumer><!-- 发送监控信息的dubbo服务 --><dubbo:reference id="sendDubboMessageClient" registry="qingdaoRegistry"owner="hop" interface="com.ouc.openplatform.hmc.client.send.SendMessageClient"version="1.0" protocol="dubbo" timeout="100000" init="true" />
</beans>

(6)spring/spring-external.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:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- oop 框架必须接口 begin--><!-- 文件存储服务 --><dubbo:reference id="fileServiceClient" registry="qingdaoRegistry" owner="oop" interface="com.ouc.openplatform.hfs.client.service.FileServiceClient" version="1.0.0" protocol="dubbo" timeout="100000" init="true"/><dubbo:reference id="projectServiceClientAdapter" registry="qingdaoRegistry" owner="oop" interface="com.ouc.openplatform.console.project.spi.MonitorServiceClient" version="1.0" protocol="dubbo" timeout="100000" init="false" /><!-- oop 框架必须接口 end-->
</beans>

(7)spring/spring-log.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"xmlns:lang="http://www.springframework.org/schema/lang" xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/langhttp://www.springframework.org/schema/lang/spring-lang-3.1.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-3.1.xsd"><!-- 业务日志 --><bean id="logConfigurationReader" class="com.ouc.openplatform.log.config.LogConfigurationReader"><property name="fileNames"><array><value>classpath*:/logs/**/log-*.xml</value></array></property></bean><bean id="logAdvice" class="com.ouc.mkhl.supplier.security.advice.OperationLogAdvice"><property name="logConfigurationMap"><bean factory-bean="logConfigurationReader" factory-method="getLogConfigurationMap"/></property><property name="operationLogService" ref="operationLogService"/></bean><bean id="operationLogService" class="com.ouc.mkhl.supplier.security.service.impl.OperationLogServiceImpl"><property name="operationLogDAO" ref="operationLogDAO"/></bean><bean id="operationLogDAO" class="org.mybatis.spring.mapper.MapperFactoryBean" parent="baseDAO"><property name="mapperInterface" value="com.ouc.mkhl.supplier.security.dao.OperationLogDAO" /></bean><aop:config><aop:pointcut id="daoLog" expression="execution(* com.ouc..service.impl.*ServiceImpl.*(..)) && !execution(* com.ouc..service.impl.OperationLogServiceImpl.*(..))"/>   <aop:aspect ref="logAdvice"><aop:around method="advice" pointcut-ref="daoLog"/></aop:aspect>       </aop:config>
</beans>

(8)spring/spring-monitor.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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:jee="http://www.springframework.org/schema/jee"xmlns:lang="http://www.springframework.org/schema/lang"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/langhttp://www.springframework.org/schema/lang/spring-lang-3.1.xsd"><!-- quartz监控 --><bean class="com.ouc.openplatform.console.project.spi.support.OopProjectContextListener"><property name="monitorServiceClient" ref="projectServiceClientAdapter"/></bean>
</beans>

(9)spring/spring-transaction.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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:jee="http://www.springframework.org/schema/jee"xmlns:lang="http://www.springframework.org/schema/lang"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/langhttp://www.springframework.org/schema/lang/spring-lang-3.1.xsd"><!-- Transaction Manager --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 支持 @Transactional 标记 --><tx:annotation-driven /><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="find*" propagation="REQUIRED" read-only="true" /><tx:method name="query*" propagation="REQUIRED" read-only="true" /><tx:method name="list*" propagation="REQUIRED" read-only="true" /><tx:method name="search*" propagation="REQUIRED" read-only="true" /><tx:method name="get*" propagation="REQUIRED" read-only="true" /><tx:method name="save*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="create*" propagation="REQUIRED" /><tx:method name="*" propagation="SUPPORTS" /></tx:attributes></tx:advice><aop:config proxy-target-class="true"><aop:pointcut id="interceptorPointCuts"expression="execution(* com.ouc..service.impl.*ServiceImpl.*(..))" /><aop:advisor advice-ref="txAdvice" pointcut-ref="interceptorPointCuts" /></aop:config>
</beans>

(10) spring/security/spring-upload.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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:jee="http://www.springframework.org/schema/jee"xmlns:lang="http://www.springframework.org/schema/lang"xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/langhttp://www.springframework.org/schema/lang/spring-lang-3.1.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-3.1.xsd"><!-- DAO --><bean id="fileUploadDAO" class="org.mybatis.spring.mapper.MapperFactoryBean" parent="baseDAO"><property name="mapperInterface" value="com.ouc.mkhl.supplier.security.dao.FileUploadDAO" /></bean><!-- Service --><bean id="fileUploadService"class="com.ouc.mkhl.supplier.security.service.impl.FileUploadServiceImpl"><property name="fileUploadDAO" ref="fileUploadDAO"/><property name="fileConstants" ref="fileConstants"/><property name="fileServiceClientAdapter" ref="fileServiceClientAdapter"/></bean><bean id="fileConstants" class="com.ouc.mkhl.supplier.util.FileConstants"><property name="fileSavePath" value="${file.save.path}"/></bean><bean id="fileServiceClientAdapter"class="com.ouc.mkhl.supplier.security.service.impl.FileServiceClientAdapterImpl"><property name="fileServiceClient" ref="fileServiceClient"/><property name="appName" value="MKHL" /><property name="storeSystemAddress" value="${store.system.address}" /><!-- <property name="appName" value="${app.name}" /> --></bean><bean id="fileUploadServiceAop" class="com.ouc.mkhl.supplier.security.util.FileUploadServiceAop"></bean><aop:config><aop:pointcut id="fileUploadAudit" expression="execution(* com.ouc..service.impl.FileUploadServiceImpl.*(..))"/>  <aop:aspect ref="fileUploadServiceAop" order="5"><aop:before pointcut-ref="fileUploadAudit" method="beforeExecute"/><aop:after pointcut-ref="fileUploadAudit" method="afterExecute" /></aop:aspect>       </aop:config>
</beans>

2.Maven父工程mkhl-parent:

    parent工程结构如下图:
     

1)parent工程的pom文件:

<?xml version="1.0"?>
<projectxsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>1.0.0</modelVersion><groupId>com.ouc.mkhl.supplier</groupId><version>1.0</version><artifactId>mkhl-parent</artifactId><name>mkhl-parent</name><packaging>pom</packaging><url>http://maven.apache.org</url><properties><oop.version>1.0.0</oop.version><spring.version>4.1.8.RELEASE</spring.version><spring.boot.version>1.2.7.RELEASE</spring.boot.version><struts.version>2.3.15.1</struts.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><monitor.service.client>3.1.7</monitor.service.client><hfs.service.client.version>2.0.1</hfs.service.client.version><pampas.version>4.1.3</pampas.version><dubbo.version>2.8.3</dubbo.version><openapi-auth.version>4.0.9-SNAPSHOT</openapi-auth.version><lts.version>1.6.2</lts.version><netty.version>4.0.13.Final</netty.version><leveldbjni.version>1.8</leveldbjni.version></properties><!-- svn代码托管配置 --><scm><connection>scm:svn:https://127.0.0.1/svn/OOP/Test/trunk/test</connection><developerConnection>scm:svn:https://<span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1</span>/svn/OOP/Test/trunk/test</developerConnection><url>https://<span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1</span>/svn/OOP/Test/trunk/test</url></scm><!-- 不同的打包环境 --><profiles><!-- 生产环境 --><profile><id>production</id><properties><env>production</env></properties></profile><!-- 测试环境 --><profile><id>test</id><properties><env>test</env></properties></profile><!-- 开发环境 --><profile><id>dev</id><properties><env>dev</env></properties><activation><activeByDefault>true</activeByDefault></activation></profile></profiles><dependencyManagement><dependencies><dependency><groupId>weblogic</groupId><artifactId>wlfullclient</artifactId><version>10.3.6</version></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.5.hop</version></dependency><dependency><groupId>com.ouc</groupId><artifactId>oop-core</artifactId><version>${oop.version}</version></dependency><dependency><groupId>com.ouc</groupId><artifactId>oop-test</artifactId><version>${oop.version}</version></dependency><dependency><groupId>com.ouc.mkhl.supplier</groupId><artifactId>mkhl-service-client</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.ouc.mkhl.supplier</groupId><artifactId>mkhl-biz</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.ouc.mkhl.supplier</groupId><artifactId>mkhl-common</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring</artifactId></exclusion><exclusion><groupId>org.jboss.netty</groupId><artifactId>netty</artifactId></exclusion></exclusions></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.easymock</groupId><artifactId>easymock</artifactId><version>3.1</version><scope>test</scope></dependency><dependency><groupId>org.easymock</groupId><artifactId>easymockclassextension</artifactId><version>3.1</version><scope>test</scope></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>${struts.version}</version><exclusions><exclusion><groupId>com.sun</groupId><artifactId>tools</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.0</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.2</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.5</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.5</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-all</artifactId><version>1.3</version><scope>test</scope></dependency><dependency><groupId>org.dbunit</groupId><artifactId>dbunit</artifactId><version>2.4.9</version><scope>test</scope></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.1.6</version><exclusions><exclusion><groupId>c3p0</groupId><artifactId>c3p0</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.7.2</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>2.2.2</version></dependency><!-- ehcache --><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><version>2.6.2</version><type>pom</type></dependency><dependency><groupId>org.terracotta.quartz</groupId><artifactId>quartz-terracotta</artifactId><version>2.3.1</version></dependency><dependency><groupId>javax.jms</groupId><artifactId>jms-api</artifactId><version>1.1-rev-1</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>com.oracle</groupId><artifactId>ojdbc14</artifactId><version>10.2.0.2</version></dependency><!-- mysql连接 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.34</version></dependency><dependency><groupId>commons-pool</groupId><artifactId>commons-pool</artifactId><version>1.6</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version></dependency><!-- XStream --><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.4</version></dependency><dependency><groupId>xpp3</groupId><artifactId>xpp3_min</artifactId><version>1.1.4c</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version><exclusions><exclusion><artifactId>xml-apis</artifactId><groupId>xml-apis</groupId></exclusion><exclusion><artifactId>stax-api</artifactId><groupId>stax</groupId></exclusion></exclusions></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.19</version></dependency><dependency><groupId>json</groupId><artifactId>json-lib</artifactId><version>2.1</version></dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version></dependency><dependency><groupId>com.ouc.openplatform.hfs</groupId><artifactId>hfs-service-client</artifactId><version>${hfs.service.client.version}</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.8.3</version></dependency><dependency><groupId>com.ouc.openplatform</groupId><artifactId>monitor-service-client</artifactId><version>${monitor.service.client}</version><exclusions><exclusion><artifactId>struts2-core</artifactId><groupId>org.apache.struts</groupId></exclusion></exclusions></dependency><dependency><groupId>org.devlib.schmidt</groupId><artifactId>imageinfo</artifactId><version>1.9</version></dependency><!-- cas --><dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-support-distributed-ehcache</artifactId><version>3.2.1</version><exclusions><exclusion><groupId>net.sf.ehcache</groupId><artifactId>ehcache-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>io.terminus.pampas</groupId><artifactId>pampas-client</artifactId><version>${pampas.version}</version></dependency><!-- DataSource --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.13</version></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>jaxrs-api</artifactId><version>3.0.7.Final</version></dependency><dependency><groupId>com.dangdang</groupId><artifactId>config-toolkit-easyzk</artifactId><version>2.0.3-RELEASE</version></dependency><!-- mx4j --><dependency><groupId>mx4j</groupId><artifactId>mx4j</artifactId><version>3.0.2</version></dependency><dependency><groupId>mx4j</groupId><artifactId>mx4j-tools</artifactId><version>3.0.1</version></dependency><dependency><groupId>com.haier</groupId><artifactId>openapi-auth</artifactId><version>${openapi-auth.version}</version></dependency><dependency><groupId>com.ouc</groupId><artifactId>openapi-service-client</artifactId><version>${openapi-auth.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>${spring.boot.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-actuator</artifactId><version>${spring.boot.version}</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.2.2.Final</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><!-- lts --><dependency><groupId>com.lts</groupId><artifactId>lts-tasktracker</artifactId><version>${lts.version}</version></dependency><dependency><groupId>com.lts</groupId><artifactId>lts-jobclient</artifactId><version>${lts.version}</version></dependency><dependency><groupId>com.lts</groupId><artifactId>lts-spring</artifactId><version>${lts.version}</version></dependency><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>${netty.version}</version></dependency><dependency><groupId>org.fusesource.leveldbjni</groupId><artifactId>leveldbjni-all</artifactId><version>${leveldbjni.version}</version></dependency><!--  httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.1</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.4</version></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>org.easymock</groupId><artifactId>easymock</artifactId></dependency><dependency><groupId>org.easymock</groupId><artifactId>easymockclassextension</artifactId></dependency><dependency><groupId>com.haier</groupId><artifactId>hop-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-all</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId></dependency></dependencies><build><filters><filter>../mkhl-parent/src/main/filters/filter-${env}.properties</filter></filters><resources><resource><!-- 不对指定的资源文件进行资源替换 --><directory>src/main/resources</directory><filtering>true</filtering><excludes><exclude>**/*.ftl</exclude><exclude>**/*-dynamic.xml</exclude><exclude>**/mybatis/**/*.xml</exclude></excludes></resource><resource><!-- 对ftl文件和动态sql文件进行直接复制 --><directory>src/main/resources</directory><filtering>false</filtering><includes><include>**/*.ftl</include><include>**/*-dynamic.xml</include><include>**/mybatis/**/*.xml</include></includes></resource></resources><testResources><testResource><directory>src/test/resources</directory><filtering>true</filtering><excludes><exclude>**/*.ftl</exclude><exclude>**/*-dynamic.xml</exclude><exclude>**/mybatis/**/*.xml</exclude></excludes></testResource><testResource><directory>src/test/resources</directory><filtering>false</filtering><includes><include>**/*.ftl</include><include>**/*-dynamic.xml</include><include>**/mybatis/**/*.xml</include></includes></testResource></testResources><plugins><!-- 工程编码插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><!-- 生成javadoc插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><configuration><charset>UTF-8</charset><encoding>UTF-8</encoding></configuration></plugin><!-- 打包java源码 --><plugin><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><configuration><attach>true</attach></configuration><executions><execution><phase>compile</phase><goals><goal>jar</goal></goals></execution></executions></plugin><!-- 导入eclipse工程插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-eclipse-plugin</artifactId><version>2.9</version><configuration><downloadSources>true</downloadSources><downloadJavadocs>true</downloadJavadocs><wtpversion>2.0</wtpversion><additionalProjectnatures><projectnature>org.springframework.ide.eclipse.core.springnature</projectnature></additionalProjectnatures></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.6</version><configuration><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.12</version><configuration><argLine>-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m</argLine><includes><include>com/ouc/**/*Test*.java</include></includes><printSummary>true</printSummary></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId><version>2.6</version><configuration><instrumentation><excludes><exclude>com/ouc/**/action/**/*.class</exclude><exclude>com/ouc/**/webapp/**/*.class</exclude><exclude>com/ouc/**/interceptor/**/*.class</exclude><exclude>com/ouc/**/taglib/**/*.class</exclude><exclude>com/ouc/**/domain/**/*.class</exclude><exclude>com/ouc/**/model/**/*.class</exclude><exclude>com/ouc/**/dto/**/*.class</exclude><exclude>com/ouc/**/util/DataFormat.class</exclude></excludes></instrumentation><formats><format>xml</format></formats></configuration></plugin></plugins></build><!-- Maven私服配置 --><repositories><repository><snapshots><enabled>false</enabled></snapshots><id>central</id><name>libs-release</name><url>http://127.0.0.1:8081/artifactory/libs-release</url></repository><repository><snapshots /><id>snapshots</id><name>libs-snapshot</name><url>http://<span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1</span><span style="font-family: Arial, Helvetica, sans-serif;">:8081/artifactory/libs-snapshot</url></span></repository></repositories><pluginRepositories><pluginRepository><snapshots><enabled>false</enabled></snapshots><id>central</id><name>plugins-release</name><url>http://127.0.0.1:8081/artifactory/plugins-release</url></pluginRepository><pluginRepository><snapshots /><id>snapshots</id><name>plugins-snapshot</name><url>http://127.0.0.1:8081/artifactory/plugins-snapshot</url></pluginRepository></pluginRepositories><distributionManagement><repository><id>libs-release-local</id><name>Team Artifactory Release Repository</name><url>http://127.0.0.1:8081/artifactory/libs-release-local</url></repository><snapshotRepository><id>libs-snapshot-local</id><name>Team Artifactory Snapshot Repository</name><url>http://127.0.0.1:8081/artifactory/libs-snapshot-local</url></snapshotRepository></distributionManagement><!-- ~~~~~~~~~~Maven私服配置结束 -->
</project>

2)开发配置文件示例:filter-dev.properties

#datasource#Oracle
#datasource.url=jdbc:oracle:thin:@127.0.0.1:1521/ORCL
#datasource.name=test
#datasource.password=1234
#datasource.maxActive=20
#datasource.initialiSize=10#MySQL
datasource.url=jdbc:mysql://127.0.0.1:3310/test
datasource.name=test
datasource.password=123,test
datasource.maxActive=20
datasource.initialiSize=10env.type=DEV### system url
server.name=MKHL## log configuration
loggingRoot=.
loggingLevel=INFO#appname
app.name=MKHL#app.email
app.email=oopAdmin@ouc.com#system.admin
system.admin=Tom#config center address
service.config.center.address=http://127.0.0.1:8888/services/address/getConfigCenter#quartz
quartz.enable=false#terracotta
terracotta.enable=false#dubbo
dubbo.registry.address=127.0.0.1:2181,110.135.7.56:2181,110.135.6.68:2181dubbo.registry.address.localhost=127.0.0.1:2181dubbo.port=-1#file upload
file.save.path=#jmx
http.host=localhost
http.port=9988#druid
druid.monitor.enable=false#spring boot
spring.boot.server.port=8010
spring.boot.monitor.port=8020#lts
lts.taskTracker.nodeGroup=${server.name}_trade_TaskTracker
lts.jobClient.nodeGroup=${server.name}_jobClient
lts.alarm.emails=
lts.alarm.phones=
lts.interval.count=

3.客户端接口工程mkhl-service-client:

   service-client工程结构如下图:
     

1) service-client工程pom文件

<?xml version="1.0"?>
<projectxsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>1.0.0</modelVersion><parent><artifactId>mkhl-parent</artifactId><groupId>com.ouc.mkhl.supplier</groupId><version>1.0</version><relativePath>../mkhl-parent/pom.xml</relativePath></parent><artifactId>mkhl-service-client</artifactId><name>mkhl-service-client</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>io.terminus.pampas</groupId><artifactId>pampas-client</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><scope>provided</scope></dependency><dependency><groupId>com.ouc</groupId><artifactId>openapi-service-client</artifactId></dependency></dependencies>
</project>

4.客户端接口实现工程mkhl-service-impl:

     service-impl工程结构如下图:

1)配置文件spring-dubbo.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:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><dubbo:application name="${app.name}" owner="oop" organization="ouc"/><dubbo:monitor protocol="registry"></dubbo:monitor><!-- <dubbo:protocol name="dubbo" port="${dubbo.port}" /> --><!-- <dubbo:protocol name="rmi" port="1099" /> --><!-- <dubbo:protocol name="hessian" port="8089" /> --><!-- <dubbo:protocol name="webservice" port="9999" server="jetty"/> --><dubbo:provider delay="-1" timeout="10000" retries="3" ><dubbo:parameter key="almId" value="S00001"/><dubbo:parameter key="package" value="S00001_OPENAPI"/></dubbo:provider><!-- 多注册中心配置 --><dubbo:registry id="qingdaoRegistry" protocol="zookeeper" address="${dubbo.registry.address}" file="${user.home}/${server.name}/impl/dubbo/dubbo.cache" timeout="60000"/><!-- <dubbo:provider delay="-1" protocol="dubbo" timeout="10000" retries="3"></dubbo:provider>  --><!-- <dubbo:protocol name="dubbo" serialization="kryo" port="-1" optimizer="com.ouc.mkhl.supplier.util.SerializationOptimizerImpl"></dubbo:protocol> --><dubbo:protocol name="dubbo" port="-1" optimizer="com.ouc.mkhl.supplier.util.SerializationOptimizerImpl"></dubbo:protocol><dubbo:protocol name="rest" port="8989" server="tomcat" contextpath="services" extension="com.ouc.openplatform.dubbo.filter.CacheControlFilter,com.ouc.mkhl.supplier.filter.CustomExceptionMapper"></dubbo:protocol> <!-- OOP1.0配置 --><bean id="agentImpl" class="io.terminus.pampas.client.AgentImpl" /><dubbo:service filter="default,dubboProfileFilter" interface="io.terminus.pampas.client.Agent"ref="agentImpl" version="MKHL1.0" protocol="dubbo"/><!-- ref="agentImpl" version="${server.name}" protocol="dubbo"/> -->       <!--  <dubbo:service filter="default,dubboProfileFilter" interface="io.terminus.pampas.client.Agent" ref="agentImpl" version="${server.name}" protocol="dubbo"/>  -->    <!-- 服务方法认证 --><dubbo:reference id="serviceInfoClient" registry="qingdaoRegistry" owner="oop" interface="com.ouc.openapi.client.api.ServiceInfoClient" version="1.0" protocol="dubbo" timeout="100000" init="true" /><dubbo:reference id="sendDubboMessageClient" registry="qingdaoRegistry" owner="oop" interface="com.ouc.openplatform.hmc.client.send.SendMessageClient" version="1.0" protocol="dubbo" timeout="100000" init="true" /><dubbo:reference id="serviceMethodAuthorizeClient" registry="qingdaoRegistry" owner="oop" interface="com.ouc.openapi.client.api.ServiceMethodAuthorizeClient" version="2.0" protocol="dubbo" timeout="100000" init="true" /><!-- 服务自动注册 --><dubbo:reference id="serviceAutoRegistryServiceClient" registry="qingdaoRegistry" owner="scg" interface="com.ouc.openapi.client.api.ServiceAutoRegistryServiceClient" version="2.0" protocol="dubbo" timeout="100000" init="true" /></beans>

2)spring-user-provider.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:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 使用dubbo协议暴露服务 --><dubbo:service interface="com.ouc.mkhl.supplier.service.SupplyUserServiceClient" owner="ouc" ref="supplyUserServiceClient"  protocol="dubbo" delay="-1" registry="qingdaoRegistry690" version="wp1.0"/><bean id="supplyUserServiceClient" class="com.ouc.mkhl.supplier.service.impl.SupplyUserServiceClientImpl"><property name="supplyUserService" ref="supplyUserService"/> </bean>
</beans>

5.任务调度工程mkhl-task:

1)任务调度工程的pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>1.0.0</modelVersion><artifactId>mkhl-task</artifactId><name>mkhl-task</name><parent><artifactId>mkhl-parent</artifactId><groupId>com.ouc.mkhl.supplier</groupId><version>1.0</version><relativePath>../mkhl-parent/pom.xml</relativePath></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.ouc.mkhl.supplier</groupId><artifactId>mkhl-biz</artifactId></dependency><!-- lts --><dependency><groupId>com.lts</groupId><artifactId>lts-tasktracker</artifactId></dependency><dependency><groupId>com.lts</groupId><artifactId>lts-jobclient</artifactId></dependency><dependency><groupId>com.lts</groupId><artifactId>lts-spring</artifactId></dependency><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId></dependency><dependency><groupId>org.fusesource.leveldbjni</groupId><artifactId>leveldbjni-all</artifactId></dependency></dependencies><build><plugins><plugin><!-- NOTE: We don't need a groupId specification because the group isorg.apache.maven.plugins ...which is assumed by default.--><artifactId>maven-assembly-plugin</artifactId><version>2.4</version><configuration><descriptor>src/main/assemble/service-impl-jar-with-dependency.xml</descriptor><!--             <archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>com.alibaba.dubbo.container.Main</mainClass></manifest></archive> --></configuration><executions><execution><id>make-assembly</id> <!-- this is used for inheritance merges --><phase>package</phase> <!-- bind to the packaging phase --><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>
</project>

2)spring-lts-job.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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsd"><bean id="accountExpireJob" class="com.lts.core.domain.Job"><property name="taskId" value="${server.name}_account_expire_job"/><property name="taskTrackerNodeGroup" value="${lts.taskTracker.nodeGroup}"/><property name="cronExpression" value="0 0/10 * * * ?"/><property name="replaceOnExist" value="true"/><property name="needFeedback" value="true"/><property name="retryTimes" value="0"/><property name="extParams"><map><entry key="jobRunner" value="com.ouc.mkhl.supplier.task.AccountExpireJob"/></map></property></bean><bean id="ltsJobSubmitUtil" class="com.ouc.openplatform.lts.LtsJobSubmitUtil" init-method="initSubmitJobs"><property name="jobClient" ref="jobClient"/><property name="jobList"><list><ref bean="accountExpireJob"/></list></property></bean>
</beans>

6.总的后台框架管理工程:

    框架管理工程pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>1.0.0</modelVersion><groupId>com.ouc.mkhl.supplier</groupId><artifactId>mkhl</artifactId><packaging>pom</packaging><version>1.0</version><name>mkhl模块商互联平台</name><url>http://127.0.0.1:8001/mkhl</url><properties><sonar.jdbc.url>jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&autoReconnect=true</sonar.jdbc.url><sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver><sonar.jdbc.username>sonar</sonar.jdbc.username><sonar.jdbc.password>sonar</sonar.jdbc.password><sonar.host.url>http://127.0.0.1:9000</sonar.host.url><sonar.scm.enabled>true</sonar.scm.enabled><sonar.core.codeCoveragePlugin>cobertura</sonar.core.codeCoveragePlugin><sonar.cobertura.maxmen>1024M</sonar.cobertura.maxmen><!-- <sonar.doxygen.generateDocumentation>true</sonar.doxygen.generateDocumentation> --><file.encoding>UTF-8</file.encoding></properties><modules><module>mkhl-parent</module><module>mkhl-service-client</module><module>mkhl-biz</module><module>mkhl-service-impl</module><module>mkhl-common</module><module>mkhl-task</module></modules>
</project>

7.桥梁工程:

1) 桥梁工程pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>1.0.0</modelVersion><groupId>com.ouc.mkhl</groupId><artifactId>MKHL-bridge</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>MKHL-bridge</name><url>http://www.terminus.io</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><hfs.service.client.version>2.0.1</hfs.service.client.version><timestamp>${maven.build.timestamp}</timestamp><maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format><pampas.version>4.1.3</pampas.version><spring.version>3.2.9.RELEASE</spring.version><mkhl.version>1.0.0</mkhl.version><dubbo.version>2.8.3</dubbo.version> </properties><dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.8</version><exclusions><exclusion><artifactId>xml-apis</artifactId><groupId>xml-apis</groupId></exclusion><exclusion><artifactId>stax-api</artifactId><groupId>stax</groupId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>0.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.5</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>1.7.5</version></dependency><dependency><groupId>io.terminus.pampas</groupId><artifactId>pampas-client</artifactId><version>${pampas.version}</version></dependency><dependency><groupId>io.terminus.pampas</groupId><artifactId>pampas-webc</artifactId><version>${pampas.version}</version></dependency><dependency><groupId>io.terminus.pampas</groupId><artifactId>pampas-design</artifactId><version>${pampas.version}</version></dependency><dependency><groupId>com.ouc</groupId><artifactId>oop-core</artifactId><version>3.0.2</version></dependency><!-- ehcache --><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><version>2.6.2</version><type>pom</type></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.3</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version><scope>runtime</scope></dependency><dependency><groupId>com.ouc.openplatform.hac</groupId><artifactId>hac-service-client</artifactId><version>2.1.0-SNAPSHOT</version></dependency><dependency><groupId>com.ouc.openplatform.hfs</groupId><artifactId>hfs-service-client</artifactId><version>${hfs.service.client.version}</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-asl</artifactId><version>1.9.13</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency></dependencies><build><finalName>MKHL-bridge</finalName><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>2.7</version><configuration><skip>true</skip></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.3</version><configuration><webResources><webResource><directory>src/main/webapp/WEB-INF</directory><includes><include>*.xml</include></includes><targetPath>WEB-INF</targetPath><filtering>true</filtering></webResource></webResources></configuration></plugin><!-- 工程编码插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><!-- 生成javadoc插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><configuration><charset>UTF-8</charset><encoding>UTF-8</encoding></configuration></plugin><!-- 打包java源码 --><plugin><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><configuration><attach>true</attach></configuration><executions><execution><phase>compile</phase><goals><goal>jar</goal></goals></execution></executions></plugin><!-- 导入eclipse工程插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-eclipse-plugin</artifactId><version>2.9</version><configuration><downloadSources>true</downloadSources><downloadJavadocs>true</downloadJavadocs><wtpversion>2.0</wtpversion><additionalProjectnatures><projectnature>org.springframework.ide.eclipse.core.springnature</projectnature></additionalProjectnatures></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.6</version><configuration><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.12</version><configuration><argLine>-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m</argLine><includes><include>com/ouc/**/*Test*.java</include></includes><printSummary>true</printSummary></configuration></plugin></plugins><filters><filter>src/main/filter/${env}.properties</filter></filters></build><profiles><profile><id>dev</id><properties><env>dev</env></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>test</id><properties><env>test</env></properties></profile><profile><id>production</id><properties><env>production</env></properties></profile></profiles><!-- Maven私服配置 --><repositories><repository><snapshots><enabled>false</enabled></snapshots><id>central</id><name>libs-release</name><url>http://127.0.0.1:8081/artifactory/libs-release</url></repository><repository><snapshots /><id>snapshots</id><name>libs-snapshot</name><url>http://<span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1</span><span style="font-family: Arial, Helvetica, sans-serif;">:8081/artifactory/libs-snapshot</url></span></repository></repositories><pluginRepositories><pluginRepository><snapshots><enabled>false</enabled></snapshots><id>central</id><name>plugins-release</name><url>http://<span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1</span><span style="font-family: Arial, Helvetica, sans-serif;">:8081/artifactory/plugins-release</url></span></pluginRepository><pluginRepository><snapshots /><id>snapshots</id><name>plugins-snapshot</name><url>http://<span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1</span><span style="font-family: Arial, Helvetica, sans-serif;">:8081/artifactory/plugins-snapshot</url></span></pluginRepository></pluginRepositories><distributionManagement><repository><id>libs-release-local</id><name>Team Artifactory Release Repository</name><url>http://<span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1</span><span style="font-family: Arial, Helvetica, sans-serif;">:8081/artifactory/libs-release-local</url></span></repository><snapshotRepository><id>libs-snapshot-local</id><name>Team Artifactory Snapshot Repository</name><url>http://<span style="font-family: Arial, Helvetica, sans-serif;">127.0.0.1</span><span style="font-family: Arial, Helvetica, sans-serif;">:8081/artifactory/libs-snapshot-local</url></span></snapshotRepository></distributionManagement><!-- Maven私服配置结束 -->
</project>

2) 开发环境配置:dev.properties

mode=dev
logLevel=INFO
logAdditivity=true
logDefaultFile=STDOUT
logRoot=${user.home}
validateUrl=http://127.0.0.1:6380#Redis
redisHost=127.0.0.1
redisPort=6379
redisMaxTotal=20
redisMaxIdle=2
redisMaxWaitMillis=10000
redisTestOnBorrow=true#Dubbo
dubbo.registry.address=127.0.0.1:2181,110.135.8.58:2181,110.135.9.88:2181
dubbo.port=20800store.system.address=127.0.0.1:50000,110.135.8.58:50000,210.135.6.88:50000terracotta.server=127.0.0.1:9540,210.135.7.98:9540
terracotta.enable=false#need edit
app.hac.version=
app.name=MKHL
server.name=MKHL
server.key=MKHL-bridge
dubbo.application.name=MKHL-bridge
publicPathPrefix=D:/MyEclipse2014Workspaces/MKHL-OOP/MKHL
domain.name=www.mkhl.com
login.after.jump.url=/login#IDM or IDS
auth.source=IDM
co.session.id=
ids.app.name=
passwd.key=

3) web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app 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_3_0.xsd"version="3.0"><context-param><param-name>startupListeners</param-name><param-value>com.ouc.mkhl.utils.SysconfigInitListener</param-value></context-param><listener><listener-class>com.ouc.openplatform.webapp.listener.BootstrapListener</listener-class></listener><!-- 集群session配置-基于缓存实现 --><filter><filter-name>ClusterSessionFilter</filter-name><filter-class>com.ouc.openplatform.session.filter.ClusterSessionFilter</filter-class><init-param><param-name>sessionServiceId</param-name><param-value>sessionService</param-value></init-param><init-param><param-name>sessionKey</param-name><param-value>MKHL_sessionKey</param-value></init-param><!-- <init-param><param-name>requestUriIgnorePattern</param-name><param-value>.*\.(png|gif|jpg|css|js|ico|jpeg|htm|html)$</param-value></init-param> --></filter><filter-mapping><filter-name>ClusterSessionFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- The definition of the Root Spring Container shared by all Servlets and Filters --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/spring/root-context.xml,classpath*:/spring/spring-filters.xml</param-value></context-param><context-param><param-name>webAppRootKey</param-name><param-value>ouc.mkhl.web.root</param-value></context-param><context-param><param-name>spring.profiles.active</param-name><param-value>{mode}</param-value></context-param><session-config><!-- com.ouc.web.xml expects the session timeout in minutes: --><session-timeout>30</session-timeout><cookie-config><http-only>true</http-only></cookie-config></session-config><!-- Creates the Spring Container shared by all Servlets and Filters --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- Processes application requests --><servlet><servlet-name>appServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/spring/appServlet/servlet-context.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>appServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><servlet-name>appServlet</servlet-name></filter-mapping><filter><filter-name>hiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><filter-mapping><filter-name>hiddenHttpMethodFilter</filter-name><servlet-name>appServlet</servlet-name></filter-mapping></web-app>

4)root-context.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:aop="http://www.springframework.org/schema/aop"xmlns:util="http://www.springframework.org/schema/util"xmlns:context="http://www.springframework.org/schema/context"xmlns:task="http://www.springframework.org/schema/task"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsdhttp://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task.xsd"><context:component-scan base-package="io.terminus.pampas" /><util:properties id="app" location="classpath:app.properties" /><bean id="implantApp" class="io.terminus.pampas.engine.model.App"><property name="key" value="${server.key}" /><property name="domain" value="${domain.name}" /><property name="assetsHome" value="${publicPathPrefix}\public\" /><property name="configPath" value="${publicPathPrefix}\public\back_config.yaml" /></bean><bean id="resourceServiceClientAdapter" class="com.ouc.mkhl.security.service.impl.ResourceServiceClientAdapterImpl"><property name="resourceServiceClient" ref="resourceServiceClient" /><property name="appHacVersion" value="${app.hac.version}" /></bean><bean id="fileServiceClientAdapter" class="com.ouc.mkhl.security.service.impl.FileServiceClientAdapterImpl"><property name="fileServiceClient" ref="fileServiceClient" /><property name="storeSystemAddress" value="${store.system.address}" /></bean><bean id="importExcelService" class="com.ouc.mkhl.security.service.impl.ImportExcelServiceImpl"/><bean id="hacUserServiceCliAdapter" class="com.ouc.mkhl.security.service.impl.HacUserServiceCliAdapterImpl" init-method="init"><property name="hacUserServiceCli" ref="hacUserServiceCli" /><property name="authSourcce" value="${auth.source}" /><property name="coSessionId" value="${co.session.id}" /><property name="idsAppName" value="${ids.app.name}" /><property name="passwdKey" value="${passwd.key}" /></bean><bean id="setting" class="io.terminus.pampas.engine.Setting"><property name="mode" value="IMPLANT"/><property name="implantApp" ref="implantApp"/><property name="devMode" value="true" /></bean><dubbo:application name="${dubbo.application.name}" /><dubbo:registry id="qingdaoRegistry" protocol="zookeeper" address="${dubbo.registry.address}" /><dubbo:protocol name="dubbo" port="${dubbo.port}" /><!-- 权限用dubbo接口配置 --><dubbo:reference id="resourceServiceClient" registry="qingdaoRegistry" interface="com.ouc.openplatform.hac.resource.service.HacResourceServiceClient" version="2.1" protocol="dubbo" timeout="100000" init="true" /><!-- 文件上传下载接口 --><dubbo:reference id="fileServiceClient" registry="qingdaoRegistry" interface="com.ouc.openplatform.hfs.client.service.FileServiceClient" version="1.0.0" protocol="dubbo" timeout="100000" init="true"/><!-- 用户认证 --><dubbo:reference id="hacUserServiceCli" registry="qingdaoRegistry" interface="com.ouc.openplatform.hac.service.HacUserServiceCli" version="2.1" protocol="dubbo" timeout="100000" init="true"/><import resource="redis-persistence-context.xml"/><alias name="jedisPool" alias="pampasJedisPool"/><import resource="classpath*:/spring/cache/spring-cache.xml" /><import resource="classpath*:/pampas/engine-context.xml"/><import resource="classpath*:/pampas/register-context.xml"/><import resource="classpath*:/pampas/design-context.xml"/>
</beans>

5)servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --><context:component-scanbase-package="io.terminus.pampas.webc,com.ouc.mkhl.controller" /><annotation-driven><message-converters><beans:beanclass="org.springframework.http.converter.StringHttpMessageConverter"><beans:constructor-arg value="UTF-8" /><beans:property name="supportedMediaTypes"><beans:list><beans:value>text/plain;charset=UTF-8</beans:value><beans:value>text/html;charset=UTF-8</beans:value></beans:list></beans:property></beans:bean><beans:bean class="io.terminus.pampas.webc.converter.JsonMessageConverter" /></message-converters></annotation-driven><beans:beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><beans:property name="messageConverters"><beans:list><beans:beanclass="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><beans:bean id="jsonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><beans:property name="supportedMediaTypes"><beans:list><beans:value>text/plain;charset=UTF-8</beans:value><beans:value>text/html;charset=UTF-8</beans:value></beans:list></beans:property></beans:bean></beans:list></beans:property></beans:bean><!--<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> --><!--<beans:property name="basenames"> --><!--<beans:list> --><!--<beans:value>classpath:messages</beans:value> --><!--<beans:value>classpath:exceptions</beans:value> --><!--<beans:value>classpath:templates</beans:value> --><!--</beans:list> --><!--</beans:property> --><!--<beans:property name="cacheSeconds" value="3600"> --><!--</beans:property> --><!--<beans:property name="useCodeAsDefaultMessage" value="true"/> --><!--<beans:property name="defaultEncoding" value="UTF-8"/> --><!--</beans:bean> --><interceptors><beans:beanclass="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"><beans:property name="paramName" value="lang" /></beans:bean><beans:bean class="io.terminus.pampas.webc.interceptor.AppInterceptor" /><beans:bean class="io.terminus.pampas.webc.interceptor.CookieInterceptor" />
<!--         <beans:bean -->
<!--             class="com.ouc.mkhl.interceptor.LoginContextInterceptor"> -->
<!--             <beans:property name="noLoginAuthUrlList"> -->
<!--                 <beans:list> -->
<!--                     <beans:value>/login</beans:value> -->
<!--                     <beans:value>/user/login</beans:value> -->
<!--                     <beans:value>/user/logout</beans:value> -->
<!--                 </beans:list> -->
<!--             </beans:property> -->
<!--         </beans:bean> -->
<!--         <beans:bean -->
<!--             class="com.ouc.mkhl.interceptor.DefautSecurityInterceptor"> -->
<!--             <beans:property name="resourceServiceClientAdapter" -->
<!--                 ref="resourceServiceClientAdapter" /> -->
<!--             <beans:property name="ignoralList"> -->
<!--                 <beans:list> -->
<!--                     <beans:value>/login</beans:value> -->
<!--                     <beans:value>/user/login</beans:value> -->
<!--                     <beans:value>/user/logout</beans:value> -->
<!--                     <beans:value>/index</beans:value> -->
<!--                     <beans:value>/noAuth</beans:value> -->
<!--                     <beans:value>/assets/</beans:value> -->
<!--                     <beans:value>/file_upload</beans:value> -->
<!--                     <beans:value>/ftp_file</beans:value> -->
<!--                     <beans:value>/exportExcel</beans:value> -->
<!--                     <beans:value>/importExcel</beans:value> -->
<!--                 </beans:list> -->
<!--             </beans:property> -->
<!--         </beans:bean> --></interceptors><!-- <beans:bean id="localeResolver"class="org.springframework.web.servlet.i18n.CookieLocaleResolver"><beans:property name="defaultLocale" value="cn" /></beans:bean> --><beans:bean id="viewResolver"class="io.terminus.pampas.webc.resolver.HandlebarsViewResolver"><beans:constructor-arg ref="handlebarsEngine" /><beans:property name="cache" value="#{app.mode != 'dev'}" /></beans:bean><beans:bean class="io.terminus.pampas.webc.resolver.ExceptionResolver"><beans:property name="order" value="0" /><!-- 定义默认的异常处理页面,当该异常类型的注册时使用 --><beans:property name="defaultErrorView" value="error" /></beans:bean><beans:beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"><beans:property name="defaultHandler" ref="entrance" /></beans:bean><!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --><beans:bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></beans:bean></beans:beans>

Spring+Dubbo+MyBatis+Linner分布式Web开发环境搭建相关推荐

  1. Spring+Dubbo+MyBatis+Linner分布式Web开发环境搭建(二)

    2.Maven父工程mkhl-parent:     parent工程结构如下图:       1)parent工程的pom文件: [html] view plaincopy print? <? ...

  2. Spring+Dubbo+MyBatis+Linner分布式Web开发环境(一)

         本文承接<Spring+Maven+Dubbo+MyBatis+Linner+Handlebars-Web开发环境搭建>,以下对相关的Maven配置和详细的Spring配置文件进 ...

  3. Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

    Spring+Maven+Dubbo+MyBatis+Linner+Handlebars                                         --Web开发环境搭建 本文主 ...

  4. [Java] Web开发环境搭建 - MyEclipse 篇

    Web开发环境搭建 - MyEclipse 篇 在前面,我们讲了使用 Eclipse Java EE 来搭建 Java Web 应用程序开发环境. 现在来说下比较流行的 MyEclipse 又是如何搭 ...

  5. 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

    最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...

  6. 阿里云服务器搭建python web环境_《Python入门》Linux 下 Python Web开发环境搭建笔记-阿里云开发者社区...

    之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,根据个 ...

  7. Python入门 Linux 下 Python Web开发环境搭建笔记

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 之前写过 ...

  8. 《Python入门》Linux 下 Python Web开发环境搭建笔记

    之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,Cen ...

  9. 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 作者:zheng gitee ...

最新文章

  1. MySQL下的NoSQL解决方案HandlerSocket
  2. java连接mysql数据库(jsp显示和控制台显示)
  3. 设计模式: 自己手动实现一个观察者设计模式
  4. 【学习/模板】tarjan割点
  5. 6. Qt 信号与信号槽(3)-QMetaObject
  6. audio标签下方有空隙的原因与解决方法
  7. 为mysql cluster添加sql节点
  8. 【转】.NET 的 WebSocket 开发包比较
  9. 安全使用计算机事例,计算机安全案例分析.ppt
  10. ListView高度
  11. 使用IntelliJ IDEA开发SpringMVC网站(四)用户管理
  12. Vue 事件绑定 事件修饰符 条件判断 循环遍历
  13. Layui 数据表格开启合计行
  14. Flir Blackfly S工业相机:颜色校正讲解及配置与代码设置方法
  15. 手把手教你使用Python提取快递信息
  16. 常用设计模式 - 建造者模式
  17. 1553B 调试记录
  18. JAVA 删除json中反斜杠_如何去除spring的ModelMap的返回类型的JSON序列化字符串中带有反斜杠符号...
  19. Matlab解决脚本中中文乱码问题
  20. php 警告提示框,js弹出对话框(消息框、警告框)

热门文章

  1. 百度地图定位和IP地址定位
  2. 计算机化系统管理及验证ppt,完整计算机化系统验证.ppt
  3. 日系小清新PPT模板
  4. 一边“打工”一边“合作”,微盟为何联手腾讯推出私域加速计划?
  5. DSPack初度应用小结
  6. 访问xp系统提示目前没有可登陆的服务器,winxp另一台xp的共享:访问登陆失败:禁用当前的账户...
  7. 专业文科30年零基础学神经网络TensorFlow
  8. jpa ONetoMany使用方法
  9. 毫安时,毫瓦时的含义
  10. windows 使用 sg3_utils-1.42_mw64exe