概要
部署在linux + tomcat5.5上的webapp可以自动使用/看到所有的/usr/share/java/ jars吗?
细节
我正在打包我的Java的Web应用程序的Ubuntu(但问题是与任何基于linux的发行版),并将使其依赖于tomcat。
我将把上下文描述符(一个xml文件)放到/usr/share/tomcat5.5/conf/Catalina/localhost/ ,以便部署我的应用程序。 让我的网页目录在这里: /usr/share/<appname>/web ,我怎样才能让我的应用程序使用系统中安装的java jar库( /usr/share/java )?
我不能只是symlink /usr/share/java -> <webdir>/WEB-INF/lib ,因为我有我的自定义jar需要放在lib目录下。
使用java时,在窗口上使用'〜'获取短path
试图find泄漏! anon对于pmap意味着什么?
创build几个HsqlDB服务器数据库最简单的方法是什么?
为什么从Process'inputStream读取块数据是可用的
将path+参数添加到响应字段
坏的解决scheme
我目前find的解决scheme是将每个需要的jar符号链接到<webdir>/WEB-INF/lib/ 。
这不是很好,因为我必须符号链接很多jar,甚至更糟糕的是符号链接我的直接依赖库(jar)所需的所有jar(依此类推)。 如果我的直接依赖关系库更改所需的jar子列表,我将不得不保持符号链接。
为什么Glassfish在linux中似乎需要比在windows中更多的内存?
是否有可能从Java程序中捕获windowspopup消息框?
无法声明界面:资源繁忙
在命令提示符下的`java`命令中设置默认的类path
file.Listfiles()并将物理文件夹与虚拟文件夹区分开来
你不应该这样做。 Java EE应用程序应该是自给自足的,不依赖于除了容器提供的部署包以外的任何资源。 所以你应该从目录中拿出你需要的库,并将其添加到你的战争或耳朵包。
这可以确保您的应用程序在您部署它的任何位置都将保持一致,并且不会受到/ usr / share / java中lib版本的意外更改…
根据Tomcat类加载文档 ,您需要将任何应该可用的共享库放到$ CATAliNA_BASE / shared / lib库中的所有Tomcat应用程序中 – 所以您要做的一种方法是将库从/ usr / share / java到$ CATAliNA_BASE / shared / lib。
如果我不误解同一文档,Tomcat也会在启动时使系统范围的CLAsspATH变量的内容可用于类加载器,所以如果您的目录 – / usr / share / java包含在系统范围的CLAsspATH中变量,那么也应该工作。 虽然我从来没有这样做过, Tomcat使$ CATAliNA_BASE / shared / lib的内容可用于Tomcat的方法一直是完美的。
entzik的答案引导我到以下解决方案。
我将使用修改过的“不好的解决方案”(请参阅问题)。
修改如下:
取决于所有依赖项的特定包版本(在打包时影响“控制”文件)
例如: libcommons-io-java(= 1.3.1)而不是libcommons-io-java
符号链接到`/ usr / share / java`中的实际jar文件,而不是“广义的”
例:
webdir / WEB-INF / lib / commons-io.jar – > /usr/share/java/commons-io-1.3.1.jar
并不是
webdir / WEB-INF / lib / commons-io.jar – > /usr/share/java/commons-io.jar
如果管理员安装了新版本的库(例如commons-io),此修改可确保webapp不会中断。
缺点是这种方法显然会使用一个应用程序版本的库而使系统膨胀,并可能导致一些其他应用程序/库由于版本冲突而无法安装的问题。 如果我们谈论图书馆,我想这两个潜在的问题都是微不足道的。
您有两个选择,一个是让类加载器将库提供给所有Java程序,另一个是让类加载器将库提供给所有的tomcat上下文。
将你的符号链接添加到/usr/lib/jvm/java-1.5.0-sun-1.5.0.11/jre/lib(注意你可能需要在这个路径中指定一个不同的版本),以允许所有的java程序访问这些库或将它们添加到Tomcat共享库中的var / lib / tomcat5.5 / shared / libs(同样,版本号可能不同)以供所有Tomcat上下文访问。
我也应该注意到这些目录位置是从Ubuntu“Feisty”中获取的。
总结以上是内存溢出为你收集整理的如何将/ usr / share / java库添加到webapp的类path中?全部内容,希望文章能够帮你解决如何将/ usr / share / java库添加到webapp的类path中?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)