start.sh

  1. #TITLE=jetty
  2.  
  3. DEPLOY_PATH=$(cd $(dirname $)/../ && pwd)
  4. export DEPLOY_PATH
  5.  
  6. CLASSPATH=${CLASSPATH}:${DEPLOY_PATH}/lib/start.jar:${DEPLOY_PATH}/configs
  7. export CLASSPATH
  8.  
  9. JAVA_OPTIONS="-server -XX:PermSize=64m -XX:MaxPermSize=128m -Xmx512m -Xms256m"
  10. export JAVA_OPTIONS
  11.  
  12. DEBUG_PORT=
  13. export DEBUG_PORT
  14.  
  15. JAVA_DEBUG="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=${DEBUG_PORT},server=y,suspend=n"
  16. export JAVA_DEBUG
  17.  
  18. ${JAVA_HOME}/bin/java ${JAVA_OPTIONS} ${JAVA_DEBUG} -Dclasspath=${DEPLOY_PATH}/lib -Dbasepath=${DEPLOY_PATH} com.dc.jetty.start.Start
  19. if [ "${doExitFlag}" = "true" ] ; then
  20. exit
  21. fi

log4j.properties

  1. log4j.rootLogger=info,console,debug,info,warn,error,fatal
  2.  
  3. log4j.appender.console=org.apache.log4j.ConsoleAppender
  4. log4j.appender.console.layout=org.apache.log4j.PatternLayout
  5. log4j.appender.console.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
  6.  
  7. log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
  8. log4j.appender.debug.File=./log/rest/rest_debug
  9. log4j.appender.debug.DatePattern='.'yyyyMMdd'.log'
  10. log4j.appender.debug.layout=org.apache.log4j.PatternLayout
  11. log4j.appender.debug.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
  12. log4j.appender.debug.filter.F1=org.apache.log4j.varia.LevelRangeFilter
  13. log4j.appender.debug.filter.F1.LevelMin=debug
  14. log4j.appender.debug.filter.F1.LevelMax=debug
  15.  
  16. log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
  17. log4j.appender.info.File=./log/rest/rest_info
  18. log4j.appender.info.DatePattern='.'yyyyMMdd'.log'
  19. log4j.appender.info.layout=org.apache.log4j.PatternLayout
  20. log4j.appender.info.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
  21. log4j.appender.info.filter.F1=org.apache.log4j.varia.LevelRangeFilter
  22. log4j.appender.info.filter.F1.LevelMin=info
  23. log4j.appender.info.filter.F1.LevelMax=info
  24.  
  25. log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender
  26. log4j.appender.warn.File=./log/rest/rest_warn
  27. log4j.appender.warn.DatePattern='.'yyyyMMdd'.log'
  28. log4j.appender.warn.layout=org.apache.log4j.PatternLayout
  29. log4j.appender.warn.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
  30. log4j.appender.warn.filter.F1=org.apache.log4j.varia.LevelRangeFilter
  31. log4j.appender.warn.filter.F1.LevelMin=warn
  32. log4j.appender.warn.filter.F1.LevelMax=warn
  33.  
  34. log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
  35. log4j.appender.error.File=./log/rest/rest_error
  36. log4j.appender.error.DatePattern='.'yyyyMMdd'.log'
  37. log4j.appender.error.layout=org.apache.log4j.PatternLayout
  38. log4j.appender.error.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
  39. log4j.appender.error.filter.F1=org.apache.log4j.varia.LevelRangeFilter
  40. log4j.appender.error.filter.F1.LevelMin=error
  41. log4j.appender.error.filter.F1.LevelMax=error
  42.  
  43. log4j.appender.fatal=org.apache.log4j.DailyRollingFileAppender
  44. log4j.appender.fatal.File=./log/rest/rest_fatal
  45. log4j.appender.fatal.DatePattern='.'yyyyMMdd'.log'
  46. log4j.appender.fatal.layout=org.apache.log4j.PatternLayout
  47. log4j.appender.fatal.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
  48. log4j.appender.fatal.filter.F1=org.apache.log4j.varia.LevelRangeFilter
  49. log4j.appender.fatal.filter.F1.LevelMin=fatal
  50. log4j.appender.fatal.filter.F1.LevelMax=fatal
  51.  
  52. #log4j.logger.com.dc.oauth.server=debug
  53.  
  54. #----------------------------------------------------Ibaits----------------------------------------------------
  55. #log4j.logger.com.ibatis=debug
  56. #log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
  57. #log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
  58. #log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
  59. #log4j.logger.java.sql.Connection=debug
  60. #log4j.logger.java.sql.Statement=debug
  61.  
  62. #log4j.logger.java.sql.PreparedStatement=debug,stdout
  63. #log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  64. #log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  65. #log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
  66.  
  67. #log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  68. #log4j.appender.stdout.Target=System.out
  69. #log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  70. #log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601}[%-5p][%c][%t]:%m%n

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <!--
  8. <welcome-file-list>
  9. <welcom-file>index.jsp</welcom-file>
  10. </welcome-file-list>
  11. -->
  12. <servlet>
  13. <servlet-name>restServlet</servlet-name>
  14. <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
  15. <init-param>
  16. <param-name>jersey.config.server.provider.packages</param-name>
  17. <param-value>com.dc.jetty.server</param-value>
  18. </init-param>
  19. <load-on-startup>1</load-on-startup>
  20. </servlet>
  21. <servlet-mapping>
  22. <servlet-name>restServlet</servlet-name>
  23. <url-pattern>/*</url-pattern>
  24. </servlet-mapping>
  25. </web-app>

config.properties

  1. #jetty
  2. port=8080
  3. contextPath=/
  4. resourceBase=../web
  5. descriptor=../web/WEB-INF/web.xml
  6. maxThread=5000
  7. minThread=100
  8.  
  9. #返回时间(单位毫秒)
  10. sleepTime=100

build.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="jetty" default="package" basedir=".">
  3.  
  4. <path id="classpath">
  5. <pathelement location="."/>
  6. <fileset dir="${basedir}/lib">
  7. <include name="**/*.jar"/>
  8. </fileset>
  9. </path>
  10.  
  11. <target name="clean">
  12. <delete dir="${basedir}/all"/>
  13. </target>
  14.  
  15. <target name="prepare" depends="clean">
  16. <mkdir dir="${basedir}/all"/>
  17. <mkdir dir="${basedir}/all/bin"/>
  18. <mkdir dir="${basedir}/all/lib"/>
  19. <mkdir dir="${basedir}/all/web"/>
  20. <mkdir dir="${basedir}/all/classes"/>
  21. <mkdir dir="${basedir}/all/configs"/>
  22. </target>
  23.  
  24. <target name="copy" depends="prepare">
  25. <copy todir="${basedir}/all/bin">
  26. <fileset dir="${basedir}/bin" excludes="**/.svn/**/*.*">
  27. <include name="**/*"/>
  28. </fileset>
  29. </copy>
  30. <copy todir="${basedir}/all/lib">
  31. <fileset dir="${basedir}/lib" excludes="**/.svn/**/*.*">
  32. <include name="**/*"/>
  33. </fileset>
  34. </copy>
  35. <copy todir="${basedir}/all/web">
  36. <fileset dir="${basedir}/web" excludes="**/.svn/**/*.*">
  37. <include name="**/*"/>
  38. </fileset>
  39. </copy>
  40. <copy todir="${basedir}/all/configs">
  41. <fileset dir="${basedir}/configs" excludes="**/.svn/**/*.*">
  42. <include name="**/*"/>
  43. </fileset>
  44. </copy>
  45. </target>
  46.  
  47. <target name="compile" depends="copy">
  48. <javac srcdir="${basedir}/src" destdir="${basedir}/all/classes" debug="true" deprecation="off" failonerror="true" encoding="utf8" nowarn="on">
  49. <classpath refid="classpath"></classpath>
  50. </javac>
  51. </target>
  52.  
  53. <target name="package" depends="compile">
  54. <jar destfile="${basedir}/all/lib/start.jar">
  55. <fileset dir="${basedir}/all/classes" includes="**/Start.class"/>
  56. </jar>
  57. <jar destfile="${basedir}/all/lib/jetty.jar">
  58. <fileset dir="${basedir}/all/classes"/>
  59. </jar>
  60. <delete dir="${basedir}/all/classes"/>
  61. </target>
  62.  
  63. </project>

Start.java

  1. package com.dc.jetty.start;
  2.  
  3. import java.io.File;
  4. import java.lang.reflect.InvocationTargetException;
  5. import java.lang.reflect.Method;
  6. import java.net.MalformedURLException;
  7. import java.net.URL;
  8. import java.net.URLClassLoader;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11.  
  12. public class Start {
  13.  
  14. private static void getJars(List<URL> urls, File cpdir)
  15. throws MalformedURLException {
  16.  
  17. for (File f : cpdir.listFiles()) {
  18. if (f.isDirectory()) {
  19. getJars(urls, f);
  20. }
  21. if (f.getName().endsWith(".jar")) {
  22. URL url = f.toURI().toURL();
  23. urls.add(url);
  24. }
  25. }
  26. }
  27.  
  28. @SuppressWarnings("unchecked")
  29. public static void main(String[] args) {
  30.  
  31. String classpath = System.getProperty("classpath");
  32. List<URL> urls = new ArrayList<URL>();
  33. File cpdir = new File(classpath);
  34. if (!cpdir.exists() || !cpdir.isDirectory()) {
  35. System.err.println("Please set system property \"classpath\" properly");
  36. } else {
  37. try {
  38. getJars(urls, cpdir);
  39. } catch (MalformedURLException e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. URL[] urlArray = urls.toArray(new URL[0]);
  44. URLClassLoader cl = new URLClassLoader(urlArray);
  45. Thread.currentThread().setContextClassLoader(cl);
  46. try {
  47. Class clz = Class.forName("com.dc.jetty.start.StartServer", false, cl);
  48. Method method = clz.getDeclaredMethod("getInstance");
  49. method.setAccessible(true);
  50. Object instance = method.invoke(clz);
  51. Method m = clz.getDeclaredMethod("start");
  52. m.invoke(instance);
  53. } catch (ClassNotFoundException e) {
  54. e.printStackTrace();
  55. } catch (SecurityException e) {
  56. e.printStackTrace();
  57. } catch (NoSuchMethodException e) {
  58. e.printStackTrace();
  59. } catch (IllegalArgumentException e) {
  60. e.printStackTrace();
  61. } catch (IllegalAccessException e) {
  62. e.printStackTrace();
  63. } catch (InvocationTargetException e) {
  64. e.printStackTrace();
  65. }
  66. }
  67.  
  68. }

StartServer.java

  1. package com.dc.jetty.start;
  2.  
  3. import org.eclipse.jetty.server.Server;
  4. import org.eclipse.jetty.util.thread.QueuedThreadPool;
  5. import org.eclipse.jetty.webapp.WebAppContext;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8.  
  9. import com.dc.jetty.util.ConfigUtil;
  10.  
  11. public class StartServer {
  12.  
  13. private static StartServer instance = null;
  14.  
  15. private StartServer() {
  16.  
  17. }
  18.  
  19. public static StartServer getInstance() {
  20. if (instance == null) {
  21. instance = new StartServer();
  22. }
  23. return instance;
  24. }
  25.  
  26. public void start() {
  27. ConfigUtil.getInstance().getProperty("");
  28. Server server = new Server(Integer.valueOf(ConfigUtil.getInstance().getProperty("port")));
  29.  
  30. WebAppContext webapp = new WebAppContext();
  31. webapp.setContextPath(ConfigUtil.getInstance().getProperty("contextPath"));
  32. webapp.setResourceBase(ConfigUtil.getInstance().getProperty("resourceBase"));
  33. webapp.setDescriptor(ConfigUtil.getInstance().getProperty("descriptor"));
  34. webapp.setParentLoaderPriority(true);
  35. webapp.setClassLoader(Thread.currentThread().getContextClassLoader());
  36.  
  37. server.setHandler(webapp);
  38. QueuedThreadPool pool = new QueuedThreadPool();
  39. pool.setMaxThreads(Integer.valueOf(ConfigUtil.getInstance().getProperty("maxThread")));
  40. pool.setMinThreads(Integer.valueOf(ConfigUtil.getInstance().getProperty("minThread")));
  41. pool.setName("RestServer");
  42. server.setThreadPool(pool);
  43. try {
  44. server.start();
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. Logger logger = LoggerFactory.getLogger(StartServer.class);
  49. logger.info("server starts");
  50.  
  51. }
  52.  
  53. public static void main(String[] args) {
  54. StartServer.getInstance().start();
  55. }
  56.  
  57. }

ConfigUtil.java

  1. package com.dc.jetty.util;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.net.URL;
  8. import java.util.Properties;
  9.  
  10. public class ConfigUtil {
  11.  
  12. private static ConfigUtil instance = null;
  13. private Properties properties = null;
  14.  
  15. private ConfigUtil() {
  16.  
  17. }
  18.  
  19. public static ConfigUtil getInstance() {
  20. if (instance == null) {
  21. instance = new ConfigUtil();
  22. }
  23. return instance;
  24. }
  25.  
  26. public void load() {
  27. if (properties == null) {
  28. properties = new Properties();
  29. InputStream input = null;
  30. try {
  31. URL url = ConfigUtil.class.getClassLoader().getResource(
  32. "config.properties");
  33. if (url == null) {
  34. throw new FileNotFoundException(
  35. "config.properties not found!");
  36. }
  37. input = new FileInputStream(url.getPath());
  38. // input = new FileInputStream(
  39. // "E:\\paas\\01工作库\\09-代码\\trunks\\PaaS_NewFeatureLine\\Code\\OAuth\\configs\\oauth_conf\\config.properties");
  40. properties.load(input);
  41. } catch (FileNotFoundException e) {
  42. e.printStackTrace();
  43. } catch (IOException e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. }
  48.  
  49. public void reload() {
  50. properties = new Properties();
  51. InputStream input = null;
  52. try {
  53. URL url = ConfigUtil.class.getClassLoader().getResource(
  54. "config.properties");
  55. if (url == null) {
  56. throw new FileNotFoundException("config.properties not found!");
  57. }
  58. input = new FileInputStream(url.getPath());
  59. properties.load(input);
  60. } catch (FileNotFoundException e) {
  61. e.printStackTrace();
  62. } catch (IOException e) {
  63. e.printStackTrace();
  64. }
  65. }
  66.  
  67. public String getProperty(String name) {
  68. if (properties == null) {
  69. load();
  70. }
  71. return properties.getProperty(name);
  72. }
  73.  
  74. public static void main(String[] args) {
  75. System.out.println(ConfigUtil.getInstance().getProperty("port"));
  76. }
  77.  
  78. }

ServiceBeanContext.java

  1. package com.dc.multiwrite.util;
  2.  
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;
  7.  
  8. public class ServiceBeanContext {
  9.  
  10. private static final Logger log = LoggerFactory
  11. .getLogger(ServiceBeanContext.class);
  12.  
  13. private static ServiceBeanContext context = null;
  14.  
  15. private static ApplicationContext ctx = null;
  16.  
  17. private ServiceBeanContext() {
  18.  
  19. }
  20.  
  21. public static ServiceBeanContext getInstance() {
  22. if (context == null) {
  23. synchronized (ServiceBeanContext.class) {
  24. if (context == null) {
  25. context = new ServiceBeanContext();
  26. }
  27. }
  28. }
  29. return context;
  30. }
  31.  
  32. public void loadContext(String path) {
  33. try {
  34. ctx = new ClassPathXmlApplicationContext(path);
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. log.error(e.getMessage(), e);
  38. }
  39. }
  40.  
  41. public Object getBean(String bean) {
  42. return ctx.getBean(bean);
  43. }
  44. }

DispatcherServlet.java

  1. package com.dc.multiwrite.servlet;
  2.  
  3. import javax.servlet.ServletConfig;
  4. import javax.servlet.http.HttpServlet;
  5.  
  6. import com.dc.multiwrite.util.ServiceBeanContext;
  7.  
  8. public class DispatcherServlet extends HttpServlet {
  9. private static final long serialVersionUID = 1L;
  10.  
  11. public void init(ServletConfig config) {
  12. ServiceBeanContext.getInstance().loadContext("applicationContext.xml");
  13. }
  14. }

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd
  10. http://www.springframework.org/schema/aop
  11. http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  12. http://www.springframework.org/schema/tx
  13. http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
  14.  
  15. <context:property-placeholder location="classpath*:jdbc.properties" />
  16.  
  17. <!-- proxool连接池 -->
  18. <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
  19. <property name="driver">
  20. <value>${jdbc.driverClassName}</value>
  21. </property>
  22. <property name="driverUrl">
  23. <value>${jdbc.url}</value>
  24. </property>
  25. <property name="user" value="${jdbc.username}" />
  26. <property name="password" value="${jdbc.password}" />
  27. <property name="alias" value="Pool_dbname" />
  28. <property name="maximumActiveTime" value="600000" />
  29. <property name="prototypeCount" value="0" />
  30. <property name="maximumConnectionCount" value="50" />
  31. <property name="minimumConnectionCount" value="2" />
  32. <property name="simultaneousBuildThrottle" value="50" />
  33. <property name="houseKeepingTestSql" value="select CURRENT_DATE" />
  34. </bean>
  35.  
  36. <!-- mybatis 配置 -->
  37. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  38. <property name="dataSource" ref="dataSource" />
  39. <property name="configLocation" value="classpath:${jdbc.configLocation}" />
  40. </bean>
  41.  
  42. <bean id="sqlMapClient"
  43. class="com.dc.multiwrite.dao.SqlMapClientTemplate">
  44. <property name="sqlSession" ref="sqlSession" />
  45. </bean>
  46.  
  47. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
  48. <constructor-arg index="0" ref="sqlSessionFactory" />
  49. </bean>
  50.  
  51. <!-- 事务管理器 -->
  52. <bean id="transactionmanager"
  53. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  54. <property name="dataSource" ref="dataSource"></property>
  55. </bean>
  56.  
  57. <!-- 方法事务参数 -->
  58. <tx:advice id="serviceAdvice" transaction-manager="transactionmanager">
  59. <tx:attributes>
  60. <tx:method name="updateAppScalableStatus" propagation="REQUIRES_NEW"
  61. isolation="READ_UNCOMMITTED" rollback-for="Exception" />
  62. <tx:method name="updateDefaultProtocol" propagation="REQUIRES_NEW"
  63. isolation="READ_UNCOMMITTED" rollback-for="Exception" />
  64. <tx:method name="saveProtocol" propagation="REQUIRES_NEW"
  65. isolation="READ_UNCOMMITTED" rollback-for="Exception" />
  66. <tx:method name="saveNewNode" propagation="REQUIRED"
  67. rollback-for="Exception" />
  68. <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" />
  69. <tx:method name="run*" propagation="REQUIRED" rollback-for="Exception" />
  70. <tx:method name="save*" propagation="REQUIRED"
  71. rollback-for="Exception" />
  72. <tx:method name="saveUpgrade" propagation="SUPPORTS"
  73. isolation="READ_COMMITTED" rollback-for="Exception" />
  74. <tx:method name="update*" propagation="REQUIRED"
  75. rollback-for="Exception" />
  76. <tx:method name="del*" propagation="REQUIRED" rollback-for="Exception" />
  77. <tx:method name="start*" propagation="REQUIRED"
  78. rollback-for="Exception" />
  79. <tx:method name="stop*" propagation="REQUIRED"
  80. rollback-for="Exception" />
  81. <tx:method name="destroy*" propagation="REQUIRED"
  82. rollback-for="Exception" />
  83. <tx:method name="deploy*" propagation="REQUIRED" isolation="READ_COMMITTED"
  84. rollback-for="Exception" />
  85. <tx:method name="reapply" propagation="REQUIRED" isolation="READ_COMMITTED"
  86. rollback-for="Exception" />
  87. <tx:method name="redeploy*" propagation="REQUIRED"
  88. rollback-for="Exception" />
  89. <tx:method name="isolate*" propagation="REQUIRED"
  90. rollback-for="Exception" />
  91. <tx:method name="return*" propagation="REQUIRED"
  92. rollback-for="Exception" />
  93. <tx:method name="unisolate*" propagation="REQUIRED"
  94. rollback-for="Exception" />
  95. <tx:method name="*"/>
  96. </tx:attributes>
  97. </tx:advice>
  98.  
  99. <!-- 配置切面 -->
  100. <aop:config proxy-target-class="true">
  101. <aop:pointcut id="servicePointcut"
  102. expression="execution(* com.dc.multiwrite.service.impl.*.*(..))" />
  103. <aop:advisor pointcut-ref="servicePointcut" advice-ref="serviceAdvice" />
  104. </aop:config>
  105.  
  106. <context:component-scan
  107. base-package="com.dc.multiwrite.dao.impl, com.dc.multiwrite.service.impl" />
  108.  
  109. </beans>

jdbc.properties

  1. #oracle
  2. #jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
  3. #jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:PAAS
  4. #jdbc.username=PAAS
  5. #jdbc.password=PAAS
  6. #jdbc.configLocation=sql-map-oracle-config.xml
  7.  
  8. #mysql
  9. jdbc.driverClassName=com.mysql.jdbc.Driver
  10. jdbc.url=jdbc:mysql://10.126.253.38:3306/test_guojwe?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
  11. jdbc.username=root
  12. jdbc.password=root
  13. jdbc.configLocation=sql-map-mysql-config.xml

sql-map-mysql-config.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "ibatis-3-config.dtd">
  3.  
  4. <configuration>
  5.  
  6. <settings>
  7. <setting name="lazyLoadingEnabled" value="false" />
  8. <setting name="cacheEnabled" value="true"/>
  9. </settings>
  10.  
  11. <mappers>
  12. <mapper resource="db/mapping/mysql/test.xml"/>
  13. </mappers>
  14.  
  15. </configuration>

test.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "ibatis-3-mapper.dtd">
  3. <mapper namespace="test">
  4.  
  5. <insert id="insert" parameterType="java.util.List">
  6. insert into test(id, count)
  7. values
  8. <foreach collection="list" item="item" index="index" separator=",">
  9. (#{item.id}, #{item.count})
  10. </foreach>
  11. </insert>
  12.  
  13. <update id="update" parameterType="java.util.List">
  14. <foreach collection="list" item="item" index="index" separator="">
  15. update test
  16. <set>
  17. count = #{item.count}
  18. </set>
  19. where id = #{item.id};
  20. </foreach>
  21. </update>
  22.  
  23. <delete id="delete" parameterType="java.util.List">
  24. delete from test
  25. where id in
  26. <foreach collection="list" item="item" index="index" separator="," open ="(" close=")">
  27. #{item.id}
  28. </foreach>
  29. </delete>
  30.  
  31. </mapper>

ExecutorServicePool.java

  1. package com.dc.multiwrite.util;
  2.  
  3. import java.util.concurrent.Callable;
  4. import java.util.concurrent.ExecutorService;
  5. import java.util.concurrent.Executors;
  6. import java.util.concurrent.Future;
  7. import java.util.concurrent.ThreadFactory;
  8.  
  9. public class ExecutorServicePool {
  10.  
  11. private static ExecutorServicePool pool;
  12.  
  13. private transient ExecutorService services;
  14.  
  15. private ExecutorServicePool(){
  16. int size = Integer.parseInt(ConfigUtil.getInstance().getProperty("multiwrite.threadPoolSize"));
  17. services = Executors.newFixedThreadPool( size, new ThreadFactory() {
  18. private static final String name = "multiwrite-thread";
  19. public Thread newThread(Runnable r) {
  20. return new Thread(r, name);
  21. }
  22. });
  23. }
  24.  
  25. public static ExecutorServicePool getInstance(){
  26. if( pool == null ){
  27. synchronized( ExecutorServicePool.class ){
  28. if( pool == null ){
  29. pool = new ExecutorServicePool();
  30. }
  31. }
  32. }
  33. return pool;
  34. }
  35.  
  36. public ExecutorService getServices() {
  37. return services;
  38. }
  39.  
  40. public <T> Future<T> submit( Callable<T> task ){
  41. return services.submit( task );
  42. }
  43.  
  44. public Future<?> submit( Runnable task ){
  45. return services.submit( task );
  46. }
  47.  
  48. public void execute( Runnable command ){
  49. services.execute( command );
  50. }
  51. }

java工程笔记的更多相关文章

  1. Java开发笔记(二)Java工程的帝国区划

    上一篇文章介绍了如何运行了第一个Java程序“Hello World”.然而这个开发环境看起来那么陌生,一个个名字符号完全不知道它们是干啥的呀,对于初学者来说,好比天书一般,多看几眼感觉都要走火入魔了 ...

  2. Java工程中各种带有O的对象分类笔记

    在Java工程里面,我们总会碰到各种不同的带有O的对象, 对于一个小白来说,经常会混淆这些对象的使用场景,所以在这里mark一下,让自己的代码更加规范,但这个也是Java被诟病的地方,不同的业务需要给 ...

  3. Java开发笔记(序)章节目录

    现将本博客的Java学习文章整理成以下笔记目录,方便查阅. 第一章 初识JavaJava开发笔记(一)第一个Java程序Java开发笔记(二)Java工程的帝国区划Java开发笔记(三)Java帝国的 ...

  4. Java开发笔记(四十三)更好用的本地日期时间

    话说Java一连设计了两套时间工具,分别是日期类型Date,以及日历类型Calendar,按理说用在编码开发中绰绰有余了.然而随着Java的日益广泛使用,人们还是发现了它们的种种弊端.且不说先天不良的 ...

  5. 如何用javac 和java 编译运行整个Java工程

    转自:http://blog.csdn.net/huagong_adu/article/details/6929817      前言:本文教你怎么用javac和Java命令,以及如何利用脚本(she ...

  6. Java开发笔记(一百四十六)JDBC的应用原理

    关系数据库使得海量信息的管理成为现实,但各家数据库提供的编程接口不尽相同,就连SQL语法也有所差异,像Oracle.MySQL.SQL Server都拥有自己的开发规则,倘若Java针对每个数据库单独 ...

  7. Java开发笔记(一百五十)C3P0连接池的用法

    JDBC既制定统一标准兼容了多种数据库,又利用预报告堵上了SQL注入漏洞,照理说已经很完善了,可是人算不如天算,它在性能方面不尽如人意.问题出在数据库连接的管理上,按照正常流程,每次操作完数据库,都要 ...

  8. Java开发笔记(一百零八)JSON串的定义和解析

    前面提到URL尾巴支持添加请求参数,具体格式形如“参数A名称=A参数值&参数B名称=B参数值”,可是这种格式只能传递简单的键值对信息,不能传递结构化数据,也无法传递数组形式的参数,因而它不适用 ...

  9. 《Effective Java》笔记45-56:通用程序设计

    将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性. 要使用局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方才声明,不要过早的声明. 局部变量的作用域从它被声明的 ...

随机推荐

  1. 修改sys密码与nbu备份脚本密码后,nbu备份报密码无效

    公司要求口令强化,在修改sys密码后nbu的.sh脚本connect备份归档的sys/passwd也随之修改修改后每个业务备份均失败, 每次备份到归档那里就结束报密码无效,疑惑备份脚本密码也同步修改了 ...

  2. spring JPA 动态查询

    没什么好说的,记住就行. 下面是在Service中的方法 Page<TStaff> staffs=dao.findAll(new Specification<TStaff>() ...

  3. Linux Mint安装jdk8

    想到研究Java,可能学习openjdk是比较好的方式,于是去找openjdk.对于Debian based系统的安装指南是: -jdk 然而我的Linux Mint 17却无法安装.搜索之后发现如下 ...

  4. 怎样安装Ubuntu操作系统

    (转载自:http://jingyan.baidu.com/article/ff42efa9423991c19e22020d.html) 准备工作 1. 一台普通电脑(装没装操作系统无所谓),保证电脑 ...

  5. mysql分组函数

    组函数针对的是指定字段的非空值.注意:where子句中不能出现组函数!!! avg()    平均值(只能针对数值型 ) max()    最大值(不限制类型) min()    最小值(不限制类型) ...

  6. 如何去除My97 DatePicker控件上右键弹出官网的链接

    http://my97.net/dp/My97DatePicker/calendar.js?最后结尾处: 这个就是官网链接地址了. 然后查找 net,nte,ent,etn,ten,tne最终找到了“ ...

  7. tiny4412学习一:编译uboot,体验裸机

    首先,我们在ubuntu建立一个自己的文件夹,我的是:​ /home/wang/tiny_4412下有 datasheet  shc(原理图PCB文件夹) src tools src下有 codes  ...

  8. E1、T1链路

    北美的24路脉码调制PCM简称T1 速率是1.544Mbit/s 北美使用的T1系统共有24个话路,每个话路采样脉冲用7bit编码,然后再加上1位信令码元,因此一个话路占用8bit. 帧同步码是在24 ...

  9. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  10. JS数组键值,数组合并,

    eg: var arr = [] arr.test = '测试'; arr.push(1); arr.push(2); arr.obj = '对象'; console.log(arr);// [ 1, ...