千里冰封
          JAVA 濃香四溢
          posts - 151,comments - 2801,trackbacks - 0
          今天使用glassfish部署一個EJB的應用,這個EJB又引用到了第三方庫,并且第三方庫又使用了本地方法,需要導入兩個DLL動態鏈接庫.反反復復部署了很久,終于還是部署成功了.
           一開始,我是把那兩個DLL文件放到SYSTEM32下面,后來發現,當服務器起動的時候,總是提示鏈接錯誤,找不到DLL文件,我就覺得奇怪了,SYSTEM32可是默認最PATH的地方了,于是在起動的時候特意輸出一句System.out.println(System.getProperty("java.library.path")),發現還真的沒有SYSTEM32文件夾,它輸出的盡是一些glassfish下面的一些目錄,什么bin啊,lib目錄啊,后來把這兩個dll文件放到這些里面以后,問題又來了,拋出一個錯誤,NoClassDefFoundError,沒有此類的定義,天啊,第三方的庫我可是都打進了EJB的那個JAR包了,然后它不會自己找?無語了,只有把那三個第三方的JAR包,放到glassfish認為的lib目錄下,終于完全起動好了.

            小結:1,不知道EJB的JAR包能不能把第三方的庫打入JAR包里面,以前寫enterprise application的時候,JAR包是可以包進去的,不過一直都是用netbeans的自動打包自動部署功能,所以一旦脫離了netbeans,都不知道該怎么辦了,鬼知道netbeans要打包的時候,搞了一些什么鬼東西.
                2,為什么system32的PATH,glassfish就是不認呢?人才,確實是人才.

          今天心情不太好,所以瞎寫了幾下,做為記錄,glassfish還是很牛的,只是我不會用罷了.



          盡管千里冰封
          依然擁有晴空

          你我共同品味JAVA的濃香.
          posted on 2008-08-07 22:55 千里冰封 閱讀(2532) 評論(3)  編輯  收藏 所屬分類: JAVAEENetbeans

          FeedBack:
          # re: glassfish下打包的問題
          2008-08-07 23:50 | Beniao
          netbeans 開發EJB很方面.
          而且Sun Application Server也好用,就是速度慢了點.呵呵...  回復  更多評論
            
          # re: glassfish下打包的問題
          2008-08-17 12:31 | 靜齋
          2,為什么system32的PATH,glassfish就是不認呢?人才,確實是人才.
          -------------------------
          可能是glassfish為了跨平臺性,不去找windows下的system32目錄
          個人自己猜得。。見笑了。  回復  更多評論
            
          # re: glassfish下打包的問題
          2009-10-10 18:39 | quqi99
          是這樣的,我們單獨使用數據源,可以像下面這樣:
          DB2SimpleDataSource ds = new DB2SimpleDataSource();
          ds.setDatabaseName("test");
          ds.setDeferPrepares(false);
          ds.setDriverType(2);
          ds.setUser("db2admin");
          ds.setPassword("password");
          try {
          Connection con = ds.getConnection();
          System.out.println(con);
          } catch (SQLException e) {
          e.printStackTrace();
          }
          在glassfish中的做法和上面是一樣的,只不過構建DB2SimpleDataSource 對象時采用的是反射,如下(見glassfish源代碼的DataSourceObjectBuilder類的getDataSourceObject方法):
          Class dataSourceClass = Thread.currentThread().getContextClassLoader().loadClass(className);
          Object dataSourceObject = dataSourceClass.newInstance();
          看見沒有,在這里glassfish采用了自己的類加載器,這樣,你把db2jcct2.dll放到system32目錄下,它當然就不認羅,你放到%glassfish_home%\lib目錄下就可以了
            回復  更多評論
            
          主站蜘蛛池模板: 攀枝花市| 遂平县| 漠河县| 西乌| 长沙县| 龙里县| 南通市| 临邑县| 襄垣县| 民乐县| 正镶白旗| 错那县| 基隆市| 宜城市| 兴业县| 疏附县| 都安| 晋州市| 隆尧县| 信宜市| 镇江市| 彭泽县| 育儿| 大埔区| 商都县| 阿拉善盟| 留坝县| 深圳市| 余干县| 福安市| 札达县| 安陆市| 定日县| 陵川县| 镶黄旗| 乐清市| 柳州市| 南郑县| 武隆县| 霍林郭勒市| 东山县|