話說從我公司導入SAP後,我就在想怎從網頁上連線SAP

當然從JDBc連線SAP資料庫也是可以啦...且取出來的無論中文字還是什麼都很OK

但SAP官方是不建議這樣直接連

 

於是我在網路上找到JCO的方式

連線的方式網路上都有

反正就從SAP網站下載sapjco後

1.將目錄複製到c:\jco
2.將檔案librfc32.dll複製到C:\windows\system32
3.將sapjco.jar複製到C:\Tomcat\lib\
4.設定classpath 跟path

重新啟動Tomcat就好了

只是後來為的連線方便我寫的一個簡單的Javabean

但當初寫好後卻一直發生

conn SetExecute Err=com.sap.mw.jco.JCO$Exception: (132) JCO_ERROR_CONCURRENT_CALL: Concurrent call. Connection currently used in another thread.

要不然動不動就一直發生連線數爆掉的訊息

我有在這邊提出問題有人指點怎做

但還是沒辦法解決我的問題

http://www.itpub.net/thread-1172920-2-1.html

 

 

後來研究的一段時間後

發現的以下作法

以下轉貼

http://www.blogjava.net/drmagic/archive/2005/11/30/22022.html

 5    public synchronized static void prepare() throws SapInterfaceException {
 6        pool = JCO.getClientPoolManager().getPool(POOL_NAME);
 7        if (pool == null{
 8            try {
 9                Properties properties = new Properties();
10                BufferedInputStream in = new BufferedInputStream(
11                        SimpleResource.class
12
                                .getResourceAsStream(PROPERTIES_FILE));
13                properties.load(in);
14                in.close();
15                JCO.addClientPool(POOL_NAME, MAX_CONNECTION_COUNT, properties);
16                pool = JCO.getClientPoolManager().getPool(POOL_NAME);
17            }
 catch (Exception ex) {
18                throw new SapInterfaceException("saply", ex);
19            }

20        }

21    }

 

其中 有紅色字的都是重點

 

這個作法給的我很多想法並且開始著手修改我的javabean

然後又發生一個三不五時丟出一個null

後來才發現原來在取得連線之前最好先這樣做

mConnection = null;

 mConnection = JCO.getClient(POOL_NAME);             

 

然後我把程式改成從jsp取得javabean的mConnection 回傳值

在丟回去javabean裡面取得後續建立的連線

 

從此以後問題就比較少發生的

 

arrow
arrow
    全站熱搜

    ROACH 發表在 痞客邦 留言(0) 人氣()