将数据源配置放在Tomcat的config目录下,使用curl工具上传文件
1.web.xml中的配置[*]
[*]
[*]
[*]ProxoolConfigFile
[*]/WEB-INF/proxool.config
[*]
[*]
[*] com.ProxoolListener
[*]
[*]
[*] Admin
[*] org.logicalcobwebs.proxool.admin.servlet.AdminServlet
[*]
[*]
[*] Admin
[*] /admin
[*]
[*]
[*]
[*] AxxxDispatcher
[*] com.Dispatcher
[*]
[*]
[*] AxxxDispatcher
[*] /axxx/*
[*]
[*]
[*]
2.在proxool.config中的配置
[*]proxool.house-keeping-sleep-time=90000
[*]proxool.maximum-connection-lifetime=300000
[*]proxool.maximum-active-time=300000
[*]proxool.prototype-count=5
[*]proxool.maximum-connection-count=10
[*]proxool.minimum-connection-count=1
[*]proxool.test-before-use=true
[*]proxool.house-keeping-sleep-time=60000
[*]proxool.house-keeping-test-sql=select getdate()
3.ProxoolListener中的代码
配置文件中的改动,Tomcat会自动刷新。
[*]import java.sql.Connection;
[*]import java.sql.DriverManager;
[*]import java.sql.SQLException;
[*]import java.util.Properties;
[*]
[*]import javax.servlet.ServletContext;
[*]import javax.servlet.ServletContextEvent;
[*]import javax.servlet.ServletContextListener;
[*]
[*]import org.logicalcobwebs.proxool.ProxoolFacade;
[*]
[*]public class ProxoolListener implements ServletContextListener {
[*] final static String CONFIGFILE = "ProxoolConfigFile";
[*] final static String ALIAS = "db.alias";
[*] final static String HOST = "db.host";
[*] final static String PORT = "db.port";
[*] final static String DATABASE = "db.database";
[*] final static String LOGIN = "db.login";
[*] final static String PASS = "db.password";
[*] final static String DIRECTORY = "file.directory";
[*] public static String path = null ;
[*] private static String alias;
[*] public void contextDestroyed(ServletContextEvent arg0) {
[*] // TODO Auto-generated method stub
[*] ProxoolFacade.shutdown(0);
[*]
[*] }
[*]
[*] public void contextInitialized(ServletContextEvent ctxEvent) {
[*] // TODO Auto-generated method stub
[*] Properties prop = new Properties();
[*] ServletContext ctx = ctxEvent.getServletContext();
[*] String configFile = ctx.getInitParameter(CONFIGFILE);
[*] try {
[*] prop.load(ctxEvent.getServletContext().getResourceAsStream(configFile));
[*] System.err.println(prop.getProperty("proxool.house-keeping-test-sql"));
[*] alias = ctx.getInitParameter(ALIAS);
[*] String host = ctx.getInitParameter(HOST);
[*] String port = ctx.getInitParameter(PORT);
[*] String database = ctx.getInitParameter(DATABASE);
[*] String login = ctx.getInitParameter(LOGIN);
[*] String password = ctx.getInitParameter(PASS);
[*] prop.setProperty("user", login);
[*] prop.setProperty("password", password);
[*] String driverClass = "net.sourceforge.jtds.jdbc.Driver";
[*] String driverUrl = "jdbc:jtds:sqlserver://"+host+":"+port+"/"+database;
[*] String url = "proxool." + alias + ":" + driverClass + ":" + driverUrl;
[*] Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
[*] ProxoolFacade.registerConnectionPool(url, prop);
[*]
[*] path = ctx.getInitParameter(DIRECTORY);
[*] }
[*] catch (Exception e){
[*] e.printStackTrace();
[*] }
[*]
[*] }
[*] public static Connection getConnection()throws SQLException {
[*] return DriverManager.getConnection("proxool."+alias);
[*] }
[*]
[*]}
4.在tomcat\conf\Catalina\localhost 目录下新建一个配置数据库信息的xml文件
此xml文件的文件名就是项目的文件名,比如myTest.xml,不管path="/path" 或者docBase="D:\app.war",此时访问的项目名就是 http://127.0.0.1:8080/myTest/。
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
[*]
5.此时启动Tomcat,http://127.0.0.1:8080/path/ 即可以访问。
6.对于需要上传一些文件到该路径的,可以试用curl工具。用doPost的方式上传。
比如使用cmd,打开文件所在目录,键入一下命令即可。
[*]curl -k --data-binary @要上传的文件 -H "Content-Type:text/xml;charset=UTF-8"http://127.0.0.1:8080/path/xxx/
7.在Dispatcher中接收文件的代码
[*]import java.io.File;
[*]import java.io.FileOutputStream;
[*]import java.io.IOException;
[*]import java.io.InputStream;
[*]import java.io.PrintWriter;
[*]import java.io.StringWriter;
[*]import java.io.Writer;
[*]import java.sql.Connection;
[*]import java.sql.SQLException;
[*]import java.text.SimpleDateFormat;
[*]import java.util.Calendar;
[*]import java.util.Enumeration;
[*]
[*]import javax.servlet.ServletException;
[*]import javax.servlet.http.HttpServlet;
[*]import javax.servlet.http.HttpServletRequest;
[*]import javax.servlet.http.HttpServletResponse;
[*]
[*]import org.simpleframework.xml.Serializer;
[*]import org.simpleframework.xml.core.Persister;
[*]
[*]import com.pansontech.common.DbTransaction;
[*]import com.pansontech.common.db.ProxoolListener;
[*]import com.pansontech.gdlgst.akzon.bean.DELVRY03;
[*]import com.pansontech.gdlgst.akzon.util.ParserUtil;
[*]
[*]public class Dispatcher extends HttpServlet {
[*]
[*] @Override
[*] protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
[*] // TODO Auto-generated method stub
[*] System.err.println("doGet");
[*] String output="Access Denied!";
[*] resp.setCharacterEncoding("UTF-8");
[*] Writer out = resp.getWriter();
[*] out.write(output);
[*] out.flush();
[*] }
[*]
[*] @Override
[*] protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
[*] int len = req.getContentLength();
[*] byte[] temp = new byte;
[*] Enumeration enu = req.getHeaderNames();
[*] while (enu.hasMoreElements()){
[*] String head = (String)enu.nextElement();
[*] System.err.println(head+":"+req.getHeader(head));
[*] }
[*] InputStream is = req.getInputStream();
[*]// SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
[*]// String path = this.getServletContext().getRealPath("/")+sdf.format(Calendar.getInstance().getTime())+".xml";
[*]// System.err.println(path);
[*]// FileOutputStream fos = new FileOutputStream(path);
[*] int len1 = 0;
[*] int totalRead = 0;
[*] //放到byte[] temp中,这样能够保证网络问题引起的文件内容不完整。
[*] while ((totalRead
页:
[1]