yunvn 发表于 2018-12-6 13:40:02

将数据源配置放在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]
查看完整版本: 将数据源配置放在Tomcat的config目录下,使用curl工具上传文件