java – 部署基于Spring的WAR及其JAR依赖项外部化
我有一个
Spring应用程序,它有很多依赖项(18兆字节的JAR文件..) – 现在,当我在远程Tomcat 6.0服务器上进行测试时,我不想上传那19兆字节的依赖项,并且只需上传课程.很简单吧?
我无法得到该死的东西. 我正在使用Eclipse 3.4,如果在Java Build Path-> Order and Export中删除了所有依赖项的导出,我会得到一个不错的小WAR. 所以这就是我尝试过的: 我将所有的lib上传到服务器,并将它们放在Tomcat的common / lib中.该目录不存在,所以我创建了它并修改了catalina.properties: shared.loader=${catalina.home}/common/lib/*.jar 我尝试过其他一些配置,但都没有用.重启服务器,部署战无法启动.特别: SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderList$java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1 它正在试图加载Log4J监听器,它在类路径中找不到它.监听器所在的弹簧库是共同的/ lib. 此外 – 当我部署完整的18兆字节战争时,它的工作正常.所有内容和应用程序启动.当然它在本地也可以正常工作. 哦 – 我已经用extras文件夹中的那些替换了硬编码的日志记录JAR,以允许Log4j工作. 这里有什么帮助?我不知道为什么这不起作用. 解决方法
“我有一个有很多依赖项的Spring应用程序(18兆字节的JAR文件……) – 现在,并上传课程.非常简单,对吧?“
我不明白这一点 – 19MB并不是很多.你只需要打包WAR就可以了. 我建议您在自己的相同Tomcat实例上进行本地测试,将其全部工作,然后将WAR部署到远程Tomcat实例. 更新:我将这些JAR放在Tomcat的/ lib目录中的一个问题是,现在您部署到该实例的每个应用程序都会看到这些JAR – 将它们更改为一个,所有这些都受到影响.如果将JAR放在每个WEB-INF / lib中,则可以修改每个应用程序而不影响其他应用程序.成本是重复的JAR和磁盘空间,这很便宜. 如果您必须从devl-> test-> prod迁移,另一个问题是,现在每个环境必须部署相同的JAR才能使您的应用正常工作.想念一个,你就被打破了.您的应用程序取决于是否具有这些依赖项.如果他们不在服务器上,那你就不走运了.保持控制权并将JAR打包在WAR文件中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |