将数据源配置放在Tomcat的config目录下,使用curl工具上传文件

 1.web.xml中的配置

 

  
  
  
  
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd" 
  5. version="2.4"> 
  6. <context-param> 
  7.   <param-name>ProxoolConfigFile</param-name> 
  8.   <param-value>/WEB-INF/proxool.config</param-value> 
  9. </context-param> 
  10. <listener> 
  11.     <listener-class>com.ProxoolListener</listener-class> 
  12. </listener> 
  13. <servlet>    
  14.     <servlet-name>Admin</servlet-name>    
  15.     <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet </servlet-class>    
  16. </servlet> 
  17. <servlet-mapping>    
  18.     <servlet-name>Admin</servlet-name>    
  19.     <url-pattern>/admin </url-pattern>    
  20. </servlet-mapping> 
  21.  
  22. <servlet>    
  23.     <servlet-name>AxxxDispatcher</servlet-name>    
  24.     <servlet-class>com.Dispatcher</servlet-class>    
  25. </servlet>         
  26. <servlet-mapping>    
  27.     <servlet-name>AxxxDispatcher</servlet-name>    
  28.     <url-pattern>/axxx/*</url-pattern>    
  29. </servlet-mapping> 
  30.  
  31. </web-app> 

 2.在proxool.config中的配置

 

  
  
  
  
  1. proxool.house-keeping-sleep-time=90000 
  2. proxool.maximum-connection-lifetime=300000 
  3. proxool.maximum-active-time=300000 
  4. proxool.prototype-count=5 
  5. proxool.maximum-connection-count=10 
  6. proxool.minimum-connection-count=1 
  7. proxool.test-before-use=true 
  8. proxool.house-keeping-sleep-time=60000 
  9. proxool.house-keeping-test-sql=select getdate() 

3.ProxoolListener中的代码

配置文件中的改动,Tomcat会自动刷新。

 

  
  
  
  
  1. import java.sql.Connection; 
  2. import java.sql.DriverManager; 
  3. import java.sql.SQLException; 
  4. import java.util.Properties; 
  5.  
  6. import javax.servlet.ServletContext; 
  7. import javax.servlet.ServletContextEvent; 
  8. import javax.servlet.ServletContextListener; 
  9.  
  10. import org.logicalcobwebs.proxool.ProxoolFacade; 
  11.  
  12. public class ProxoolListener implements ServletContextListener { 
  13.     final static String CONFIGFILE = "ProxoolConfigFile"
  14.     final static String ALIAS = "db.alias"
  15.     final static String HOST = "db.host"
  16.     final static String PORT = "db.port"
  17.     final static String DATABASE = "db.database"
  18.     final static String LOGIN = "db.login"
  19.     final static String PASS = "db.password"
  20.     final static String DIRECTORY = "file.directory";    
  21.     public static String path = null ; 
  22.     private static String alias; 
  23.     public void contextDestroyed(ServletContextEvent arg0) { 
  24.         // TODO Auto-generated method stub 
  25.         ProxoolFacade.shutdown(0); 
  26.  
  27.     } 
  28.  
  29.     public void contextInitialized(ServletContextEvent ctxEvent) { 
  30.         // TODO Auto-generated method stub 
  31.         Properties prop = new Properties(); 
  32.         ServletContext ctx = ctxEvent.getServletContext(); 
  33.         String configFile = ctx.getInitParameter(CONFIGFILE); 
  34.         try { 
  35.             prop.load(ctxEvent.getServletContext().getResourceAsStream(configFile)); 
  36.             System.err.println(prop.getProperty("proxool.house-keeping-test-sql")); 
  37.             alias = ctx.getInitParameter(ALIAS); 
  38.             String host = ctx.getInitParameter(HOST); 
  39.             String port = ctx.getInitParameter(PORT); 
  40.             String database = ctx.getInitParameter(DATABASE); 
  41.             String login = ctx.getInitParameter(LOGIN); 
  42.             String password = ctx.getInitParameter(PASS); 
  43.             prop.setProperty("user", login); 
  44.             prop.setProperty("password", password); 
  45.             String driverClass = "net.sourceforge.jtds.jdbc.Driver"
  46.             String driverUrl = "jdbc:jtds:sqlserver://"+host+":"+port+"/"+database; 
  47.             String url = "proxool." + alias + ":" + driverClass + ":" + driverUrl; 
  48.             Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); 
  49.             ProxoolFacade.registerConnectionPool(url, prop); 
  50.              
  51.             path = ctx.getInitParameter(DIRECTORY); 
  52.         } 
  53.         catch (Exception e){ 
  54.             e.printStackTrace(); 
  55.         } 
  56.  
  57.     } 
  58.     public static Connection getConnection()throws SQLException { 
  59.         return DriverManager.getConnection("proxool."+alias); 
  60.     } 
  61.  

4.在tomcat\conf\Catalina\localhost 目录下新建一个配置数据库信息的xml文件

此xml文件的文件名就是项目的文件名,比如myTest.xml,不管path="/path" 或者docBase="D:\app.war",此时访问的项目名就是 http://127.0.0.1:8080/myTest/。

 

  
  
  
  
  1. <Context path="/path" reloadable="true" docBase="D:\app.war" workDir="D:\zhao\java\work" > 
  2.     <Parameter name="db.alias" value="别名" /> 
  3.     <Parameter name="db.host" value="127.0.0.1" /> 
  4.     <Parameter name="db.port" value="1433" /> 
  5.     <Parameter name="db.database" value="xxxdb" /> 
  6.     <Parameter name="db.login" value="sa" /> 
  7.     <Parameter name="db.password" value="sa" /> 
  8.     <Parameter name="file.directory" value="C:\test\" /> 
  9. </Context> 

 

5.此时启动Tomcat,http://127.0.0.1:8080/path/ 即可以访问。

6.对于需要上传一些文件到该路径的,可以试用curl工具。用doPost的方式上传。

比如使用cmd,打开文件所在目录,键入一下命令即可。

 

  
  
  
  
  1. curl -k --data-binary @要上传的文件 -H "Content-Type:text/xml;charset=UTF-8"  http://127.0.0.1:8080/path/xxx/ 

 

7.在Dispatcher中接收文件的代码

 

  
  
  
  
  1. import java.io.File; 
  2. import java.io.FileOutputStream; 
  3. import java.io.IOException; 
  4. import java.io.InputStream; 
  5. import java.io.PrintWriter; 
  6. import java.io.StringWriter; 
  7. import java.io.Writer; 
  8. import java.sql.Connection; 
  9. import java.sql.SQLException; 
  10. import java.text.SimpleDateFormat; 
  11. import java.util.Calendar; 
  12. import java.util.Enumeration; 
  13.  
  14. import javax.servlet.ServletException; 
  15. import javax.servlet.http.HttpServlet; 
  16. import javax.servlet.http.HttpServletRequest; 
  17. import javax.servlet.http.HttpServletResponse; 
  18.  
  19. import org.simpleframework.xml.Serializer; 
  20. import org.simpleframework.xml.core.Persister; 
  21.  
  22. import com.pansontech.common.DbTransaction; 
  23. import com.pansontech.common.db.ProxoolListener; 
  24. import com.pansontech.gdlgst.akzon.bean.DELVRY03; 
  25. import com.pansontech.gdlgst.akzon.util.ParserUtil; 
  26.  
  27. public class Dispatcher extends HttpServlet { 
  28.  
  29.     @Override 
  30.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  31.         // TODO Auto-generated method stub 
  32.         System.err.println("doGet"); 
  33.         String output="Access Denied!"
  34.         resp.setCharacterEncoding("UTF-8"); 
  35.         Writer out = resp.getWriter(); 
  36.         out.write(output); 
  37.         out.flush(); 
  38.     } 
  39.  
  40.     @Override 
  41.     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  42.         int len = req.getContentLength(); 
  43.         byte[] temp = new byte[len]; 
  44.         Enumeration enu = req.getHeaderNames(); 
  45.         while (enu.hasMoreElements()){ 
  46.             String head = (String)enu.nextElement(); 
  47.             System.err.println(head+":"+req.getHeader(head)); 
  48.         } 
  49.         InputStream is = req.getInputStream(); 
  50. //      SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss"); 
  51. //      String path = this.getServletContext().getRealPath("/")+sdf.format(Calendar.getInstance().getTime())+".xml"; 
  52. //      System.err.println(path); 
  53. //      FileOutputStream fos = new FileOutputStream(path); 
  54.         int len1 = 0
  55.         int totalRead = 0
  56.         //放到byte[] temp中,这样能够保证网络问题引起的文件内容不完整。 
  57.         while ((totalRead<len)&&(len1=is.read(temp,totalRead,len - totalRead))!=-1){ 
  58. //          String input = new String(temp,"UTF-8"); 
  59. //          System.err.println(input); 
  60.             totalRead = totalRead + len1; 
  61.         } 
  62. //      fos.write(temp,0,totalRead); 
  63. //      fos.close();         
  64.     }    

 

你可能感兴趣的:(curl,数据源,配置tomcat)