千里冰封
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 千里冰封 阅读(2507) 评论(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目录下就可以了
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: