连接池、线程池、定时任务、应用启动
JAVA 优秀架包:http://www.admin10000.com/document/8155.html
/* 启动一个java app或者服务 */ import org.eclipse.jetty.server.Server; public class QuartzTest { /** *//** * @param args */ public static void main(String[] args) throws Exception { Server server = new Server(8899); server.setHandler(new ScheduleRouteHandle()); System.out.println("启动服务"); server.start(); server.join(); } }
/* 启动一个定时任务,或者监听请求 */ import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; /** * Created by 8899man on 16/6/16. */ public class ScheduleRouteHandle extends AbstractHandler { //public class ScheduleRouteHandle extends AbstractHandler { //private final Logger logger = Logger.getLogger(ScheduleRouteHandle.class); static{ System.out.println("static调用"); // TODO Auto-generated method stub SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date d = new Date(); String returnstr = DateFormat.format(d); CreateVmJob job = new CreateVmJob(); String job_name ="create_vm"; try { System.out.println(returnstr+ "【系统启动】"); QuartzManager.addJob(job_name,job,"0/5 * * * * ?"); //每2秒钟执行一次 } catch (Exception e) { e.printStackTrace(); } } public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { //log(target, request); System.out.println("调用"); // TODO Auto-generated method stub SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date d = new Date(); String returnstr = DateFormat.format(d); TestJob job = new TestJob(); String job_name ="11"; try { System.out.println(returnstr+ "【系统启动】"); QuartzManager.addJob(job_name,job,"0/5 * * * * ?"); //每2秒钟执行一次 // Thread.sleep(10000); // System.out.println("【修改时间】"); // QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?"); // Thread.sleep(20000); // System.out.println("【移除定时】"); // QuartzManager.removeJob(job_name); // Thread.sleep(10000); // // System.out.println("/n【添加定时任务】"); // QuartzManager.addJob(job_name,job,"0/5 * * * * ?"); } catch (Exception e) { e.printStackTrace(); } } private void log(String target, HttpServletRequest request) { StringBuffer sb = new StringBuffer(); sb.append("get a request[" + target + "] "); for (String key : request.getParameterMap().keySet()) { String value = request.getParameter(key); if (value != null && value.length() > 300) { value = value.substring(0, 300) + "..."; } sb.append(key).append("=").append(value).append(","); } sb.append("ip=" + request.getHeader("X-Forwarded-For")); //logger.info(sb.toString()); } }
/*作业类:
*/
import com.databasepool.MySqlConn;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* Created by 8899man on 16/6/20.
*/
public class CreateVmJob implements Job {
SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = new Date();
String returnstr = DateFormat.format(d);
ThreadPoolExecutor executor = new ThreadPoolExecutor(20,Integer.MAX_VALUE , 2000, TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<Runnable>(30));
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println(returnstr+"★★★★★★★★★★★cccccvm");
String sql = "select * from process_vm_interface where state='1'";
MySqlConn mySqlConn = new MySqlConn();
ResultSet rs = null;
try {
ArrayList<VmBean> vbList = mySqlConn.readVmBySql(sql);
for (int i=0;i<vbList.size();i++){
String orderid = vbList.get(i).getOrderid();
System.out.println("打印orderid:"+orderid);
MyTask myTask = new MyTask(i,orderid);
executor.execute(myTask);
//System.out.println("线程池中线程数目:"+executor.getPoolSize()+",队列中等待执行的任务数目:"+
// executor.getQueue().size()+",已执行玩别的任务数目:"+executor.getCompletedTaskCount());
}
executor.shutdown();
/*int col = rs.getMetaData().getColumnCount();
while (rs.next()) {
rs.getString("order_id");
for (int i = 1; i <= col; i++) {
System.out.print(rs.getString(i) + "\t");
if ((i == 2) && (rs.getString(i).length() < 8)) {
System.out.print("\t");
}
}
System.out.println("");
}*/
} catch (Exception e) {
e.printStackTrace();
}
if (rs!=null){
}
}
}
/*
*/
package com.xx.httptest; /** * Created by 8899man on 16/6/27. */ import java.io.*; import java.net.HttpURLConnection; import java.net.ProtocolException; import java.net.URL; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.*; import com.alibaba.fastjson.JSONObject; import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.GetMethod; import com.alibaba.fastjson.JSON; import org.apache.commons.httpclient.methods.HeadMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpClientParams; public class HttpClientUtil { static final int VIEW_TIMEOUT = 12000; static final boolean VIEW_OUTPUT = true; static final String VIEW_METHOD = "POST"; static final String VIEW_CHAR_CODE = "UTF-8"; static String BASEURL="http://localhost:8030/"; static{ Properties props = new Properties(); InputStream in = null; try { in = new BufferedInputStream(new FileInputStream( HttpClientUtil.class.getResource("/dbconn.properties").getFile())); props.load(in); if(props.get("BASEURL")==null){ System.out.println("BASEURL:is null"); } BASEURL= String.valueOf(props.get("BASEURL")); in.close(); } catch (Exception e) { e.printStackTrace(); if(in!=null) try { in.close(); } catch (IOException e1) { e1.printStackTrace(); } } } public static void test() { try{ String result1 = ""; HttpClient httpclient=new HttpClient(); HttpClientParams hc = new HttpClientParams(); hc.setParameter("t1","yangqing1"); hc.setParameter("t2","yangqing2"); httpclient.setParams(hc); System.out.println("打印传递的参数---------->"); //System.out.println(htt().toString()); String urlpath=BASEURL+"workflowapi/workflowextend"; System.out.println(urlpath); GetMethod getmethod=new GetMethod(urlpath); int sendStatus=0; try { sendStatus=httpclient.executeMethod(getmethod); result1 = getmethod.getResponseBodyAsString(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ //释放 System.out.println(sendStatus); getmethod.releaseConnection(); } System.out.println(result1); JSONObject obj = JSON.parseObject(result1); String object = obj.getString("code"); System.out.println("打印解析------->"); System.out.println(object); return; }catch(Exception ce){ ce.printStackTrace(); return; //return "{\"msg\": \"请求失败!\",\"status\": 500}"; } /*try { URL url = new URL(urlpath); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(VIEW_TIMEOUT); connection.setDoOutput(VIEW_OUTPUT); connection.setRequestMethod(VIEW_METHOD); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); BufferedOutputStream out = new BufferedOutputStream(connection.getOutputStream()); String fileMsg = "data=" + URLEncoder.encode(data, VIEW_CHAR_CODE) + "&username=" + username + "&sdns-api=" + password; InputStream fileInputStream = new ByteArrayInputStream(fileMsg.getBytes(VIEW_CHAR_CODE)); byte[] bytes = new byte[1024]; int numReadByte = 0; while ((numReadByte = fileInputStream.read(bytes, 0, 1024)) > 0) { out.write(bytes, 0, numReadByte); } out.flush(); fileInputStream.close(); int code = connection.getResponseCode(); DnsCallHistoryBean dnsCallHistory = new DnsCallHistoryBean(); if (code != 200) { dnsCallHistory.setMsg("访问错误,错误码" + code); return new TwoTuples<Integer, DnsCallHistoryBean>(code, dnsCallHistory); } }catch (Exception e){ System.out.println(e); }*/ } private static HttpMethod postMethod(String url) throws IOException{ PostMethod post = new PostMethod(url); post.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk"); NameValuePair[] param = { new NameValuePair("startCity","杭州"), new NameValuePair("lastCity","沈阳"), new NameValuePair("userID",""), new NameValuePair("theDate","") } ; post.setRequestBody(param); post.releaseConnection(); return post; } public static void main(String[] args){ HttpClientUtil main = new HttpClientUtil(); main.test(); //HttpClient httpClient = new HttpClient(); //HttpMethod httpMethod = new HeadMethod(); } }
/*
数据库连接 ,可以读取配置文件
*/
import com.xx.VmBean;
import java.sql.*;
import java.util.ArrayList;
/**
* Created by 8899man on 16/6/20.
*/
public class MySqlConn {
private static Connection getConn() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/cmdb";
String username = "root";
String password = "yangqing";
Connection conn = null;
try {
Class.forName(driver); //classLoader,加载对应驱动
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public ArrayList<VmBean> readVmBySql(String sql) throws Exception{
if (sql == null || "".equals(sql)) {
return null;
}
Statement statement = null;
MysqlPool mysqlPool = new MysqlPool();
ArrayList<VmBean> arrylist = new ArrayList<VmBean>();
java.sql.Connection connection = mysqlPool.getConnection();
try {
statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
String orderid = rs.getString("order_id");
String state = rs.getString("state");
String create_id = rs.getString("create_id");
VmBean vb = new VmBean();
vb.setCrateid(create_id);
vb.setState(state);
vb.setOrderid(orderid);
arrylist.add(vb);
}
} catch (Exception e) {
throw e;
} finally {
if (statement != null) {
statement.close();
}
mysqlPool.close(connection);
}
return arrylist;
}
public int updateBySql(String sql) throws Exception{
if (sql == null || "".equals(sql))
return 0;
Statement statement = null;
MysqlPool mysqlPool = new MysqlPool();
java.sql.Connection connection = mysqlPool.getConnection();
int rs = 0;
try {
statement = connection.createStatement();
rs = statement.executeUpdate(sql);
} catch (Exception e) {
throw e;
} finally {
if (statement != null) {
statement.close();
}
mysqlPool.close(connection);
}
return rs;
}
private static void getAll() {
//Connection conn = getConn();
MysqlPool mysqlPool = new MysqlPool();
Connection conn = mysqlPool.getConnection();
String sql = "select * from process_base_info";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement)conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString("process_name") + " ");
}
} catch (SQLException e) {
e.printStackTrace();
}
//return null;
}
public static void main(String[] args){
getAll();
getAll();
getAll();
getAll();
//MySqlConn.getAll();
/*String sql = "select * from process_base_info";
try {
MySqlConn mySqlConn = new MySqlConn();
mySqlConn.readBySql(sql);
} catch (Exception e) {
e.printStackTrace();
}*/
/*String sql ="update process_base_info set introduce='8888' where process_id=3";
MySqlConn mySqlConn = new MySqlConn();
try {
int k = mySqlConn.updateBySql(sql);
System.out.println("更新记录:"+k);
} catch (Exception e) {
e.printStackTrace();
}*/
}
}
/* 连接池,可以参考commons pool 对象池开源实现 */ import org.apache.commons.dbcp.BasicDataSource; import org.apache.log4j.Logger; import java.sql.Connection; public class MysqlPool { protected final Logger logger = Logger.getLogger(MysqlPool.class); private static BasicDataSource ds = null; //private ConnPoolParamEnum connPoolParamEnum; private String validationQuery = "select 1"; private String usename = "root"; private String password = "yangqing"; private String url = "jdbc:mysql://localhost:3306/cmdb"; private String driver = "com.mysql.jdbc.Driver"; public MysqlPool(){ } public MysqlPool(String url, String username, String password, String driverClass) { this.url = url; this.usename = username; this.password = password; this.driver = driverClass; //connPoolParamEnum = ConnPoolParamEnum.get(dbtype, project); init(); } private void init() { ds = new BasicDataSource(); ds.setDriverClassName(driver); ds.setUsername(usename); ds.setPassword(password); ds.setUrl(url); ds.setInitialSize(20); ds.setMaxActive(100); ds.setMaxIdle(80); ds.setMinIdle(20); ds.setMaxWait(5000); ds.setTestOnBorrow(true); ds.setValidationQuery(validationQuery); logger.info("init connection pool[" + url + "]"); System.out.println("init connection pool"); } public synchronized Connection getConnection() { if (ds == null) init(); Connection connection = null; try { connection = ds.getConnection(); logger.info("get a connection from pool [" + url + "],idle connection[" + ds.getNumIdle() + "]"); } catch (Exception e) { logger.error(e); } return connection; } public void close(Connection connection) { if (connection != null) { try { connection.close(); logger.info("release a connection to pool [" + url + "],idle connection[" + ds.getNumIdle() + "]"); } catch (Exception e) { logger.error(e); } } } }
/* MyTask任务 _多线程传参方式,可以参考另外一篇文章,多线程传参数 */ /** * Created by yq on 16/6/16. */ public class MyTask implements Runnable{ private int taskNum; private String orderid;
/*构造函数传参数*/ public MyTask(int num,String orderid) { this.taskNum = num; this.orderid = orderid; } //@Override public void run() { System.out.println("正在执行task "+taskNum); try { Thread.currentThread().sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task "+taskNum+"执行完毕,单号——>"+orderid); } }
POM.XML文件
<?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>4.0.0</modelVersion>
<groupId>lsquartz</groupId>
<artifactId>lingshuquartz</artifactId>
<version>1.0-SNAPSHOT</version>
<name>com.lingshu.quartz</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<springframework.version>3.0.5.RELEASE</springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.2.14.v20151106</version>
</dependency>
<!--Json-->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
<!--phoenix-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.6</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--file upload-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.jdom/jdom -->
<!--<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.3</version>
</dependency>
<!--<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.6</version>
</dependency>-->
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.xx.QuartzTest</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<!--<properties>
<springframework.version>3.0.5.RELEASE</springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.9.v20130131</version>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8000</port>
</connector>
</connectors>
</configuration>
</plugin>
</plugins>
</build>-->
</project>

浙公网安备 33010602011771号