2011年4月25日 星期一

讓不同版本的oracle jdbc driver並存於同一個JVM

package manager;

import java.sql.Connection;
import java.sql.DriverManager;
public class OracleDriverManager
{
  public Connection getConnection(String databaseURL, String userName, String password)
  {
    Connection ret = null;
    try {
      Class.forName("oracle.jdbc.driver.OracleDriver");
      ret = DriverManager.getConnection(databaseURL, userName, password);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
    return ret;
  }
}

當程式需同時連接oracle 8i及oracle 11g而需不同的jdbc driver時,可另外用一個UrlClassLoader將舊的jdbc driver load進來,並將上面的class也load進與舊版jdbc driver同一個ClassLoader,再主程式用reflection的方式來使用OracleDriverManager去取得connection,如此才能讓DriverManager裡註冊的driver一致。

package tester;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import aic.Oracle8iManager;

public class Oracle8iTester {

    /**
     * @param args
     */
    public static void main(String[] args) {
        new Oracle8iTester().test();

    }

    private void test() {
        String driverClassName = "oracle.jdbc.driver.OracleDriver";
        String orclURL = "jdbc:oracle:thin:@localhost:1521:orcl";//11g
        String ora8iURL = "jdbc:oracle:thin:@ora8ihost:1521:ora8i";//8i
        String userName = "apps";
        String password = "apps";

        try {
            Connection ora8iConn = Oracle8iManager.getInstance().getConnection(ora8iURL, userName, password);
            println(ora8iConn);
            testConnection(ora8iConn);
        } catch (Exception e) {
            e.printStackTrace();
        }

        try {
            Class.forName(driverClassName);
            Connection orclConn = DriverManager.getConnection(orclURL, userName, password);
            println(orclConn);
            testConnection(orclConn);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private void testConnection(Connection conn) throws Exception {
        Statement statement = conn.createStatement();
        ResultSet resultSet = statement.executeQuery("SELECT 'success' FROM dual");

        String str = null;
        if (resultSet.next()) {
            str = resultSet.getString(1);
        }
        resultSet.close();
        statement.close();
        conn.close();

        println(str);
    }

    private void println(Object o) {
        System.out.println(o);
    }

}

限制某程序使用特定的CPU

image 

image

2011年4月20日 星期三

Oracle ERP R12 Demo環境 免費使用

Oracle ERP R12 體驗網址 : http://vis1200.solutionbeacon.net/OA_HTML/AppsLogin

登入資訊:
username=TK9420
密碼: 9420TK

2011年3月15日 星期二

強迫IE用IE7的相容性檢視模式

寫個class繼承javax.servlet.Filter,在doFilter裡撰寫以下程式:

public void doFilter(ServletRequest aRequest, ServletResponse aResponse, FilterChain aChain)
        throws IOException, ServletException {
    //強迫IE用IE7的相容性檢視模式
    ((HttpServletResponse) aResponse).setHeader("X-UA-Compatible", "IE=EmulateIE7");
    aChain.doFilter(aRequest, aResponse);
}

2010年11月25日 星期四

如何關掉Toad的呱呱聲

View –> Toad Options –> StartUp –> uncheck the option “Play Toad wave file”

2010年10月17日 星期日

用CSS改變滑鼠指標

<span style="cursor:hand">手形</span>
<span style="cursor:crosshair">十字</span>
<span style="cursor:text" >文字游標</span>
<span style="cursor:wait" >等待</span>
<span style="cursor:default" >預設</span>
<span style="cursor:help" >問號</span>
<span style="cursor:e-resize" >左右箭頭</span>
<span style="cursor:s-resize" >上下箭頭</span>
<span style="cursor:auto" >系統自動給出效果</span>

2010年5月18日 星期二

Programmatic hot deploy with Jetty

  1. Create the server:
    Server jetty = new Server();

     

  2. Create a handlerCollection with a ContextHandlerCollection in it:
    HandlerCollection hc = new HandlerCollection ();
    ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
    hc.setHandlers(new Handler[]{contextHandlerCollection});
    jetty.setHandler(hc);

     

  3. Start the server:
    server.start();

     

  4. Hot deploy your web application:
    WebAppContext warWebappContext = new WebAppContext();
    //configure it ...
    contextHandlerCollection.addHandler(warWebappContext);
    warWebappContext.start();

     

  5. Hot undeploy your application:
    //get the WebAppContext to undeploy...
    WebAppContext toUndeploy = getWebAppContextToUndeploy();
    //stop it
    toUndeploy.stop();
    //and remove it from the handler collection
    contextHandlerCollection.removeHandler(toUndeploy);

    In a nutshell, the trick is to use a HandlerCollection for your WebAppContextHandler.
    source: http://www.bonitasoft.org/blog/tutorial/programmatic-hot-deploy-with-jetty/