Tag: tomcat6

在tomcat类路径中包含web-inf / lib中的目录

在我的webapp中; 默认情况下,在classpath中添加了WEB-INF / lib,这很好。 现在,我想在我的tomcat的类路径中添加spring jar文件。 如果我将所有jar文件放在WEB-INF / lib中; 它工作正常。 但是,如果我想添加一个目录WEB-INF / lib / spring并将所有jar文件放在spring目录中; 它不起作用。 如何在类路径中包含WEB-INF / lib / spring。 我更愿意在web.xml中进行更改,因为它非常本地化为我的webapp。 当然我不想在catalina.properties中进行更改,因为所有jar文件都加载到JVM中(不仅仅是在类路径中添加)

让Tomcat重新加载具有静态上下文的Web应用程序

我有一个不自动部署所有Web应用程序的Host 。 但我确实希望dreambear Web应用程序在没有重新启动的情况下自动重新加载,以用于开发目的(因此这是在SO上,而不是服务器故障)。 Catalina / localhost / dreambear.xml : 我通过将dreambear.war放在webapps目录中来部署Web应用程序。 不幸的是,它不会自动重新加载: (主机:unpackWARs = false):未检测到新版本的WAR (主机:unpackWARs = true):未解压缩WAR的新版本 (主机:unpackWARs = true):如果我删除解压缩的目录,新的WAR将被解压缩但不会部署。 有没有办法实现我想要的? 我不想启用autoDeploy因为每次我放入一个新的WAR时都会删除我的上下文xml( 参见这里 )。

是否有用于Tomcat 6群集配置的useDirtyFlag选项?

在Tomcat 5.0.x中,您可以设置useDirtyFlag =“false”以在每次请求后强制复制会话,而不是检查set / removeAttribute调用。 … server.xml中的注释表明这可以用于进行以下工作: 即更改已放入会话的对象的状态,并确保此对象仍可复制到群集中的其他节点。 根据Tomcat 6文档,您只有两个“管理器”选项 – DeltaManager和BackupManager ……这些选项似乎都不允许此选项或任何类似选项。 在我的测试中默认设置: 默认情况下,你得到DeltaManager,它肯定表现为useDirtyFlag =“true”(正如我所料)。 所以我的问题是 – Tomcat 6中是否有相同的内容? 查看源代码,我可以看到一个管理器实现“org.apache.catalina.ha.session.SimpleTcpReplicationManager”,它确实有useDirtyFlag,但javadoc注释在这种状态下它是“Tomcat会话复制为Tomcat 4.0”…我不知道知道这是否可以使用 – 我猜不是因为主集群配置文档中没有提到它。

Maven + Tomcat热部署

我在互联网上搜索了这个问题,发现没有一个解决方案。 我们有一个maven项目,它使用配置文件来构建适合dev / qa / prod环境的工件,使用YUI插件缩小JS和CSS。 它使用Spring作为dependency injection,使用struts作为UI框架。 Ibatis用作ORM映射器。 我们在Windows上使用Eclipse IDE,并且不使用集成的eclipse,因为我们需要部署Unix服务器。 现在,我的问题是,有没有办法以这样的方式部署这个解决方案,即更改js,css,jsp,spring,struts.xml,ibatis映射器文件的applicationContext文件,当然还有Java代码,以便在没有服务器的情况下立即生效重新开始。 我记得spring-groovy插件支持重新加载groovy文件中的上下文。 所以,我认为应该有一种方式支持热部署。

request.getSession(false)导致java.lang.IllegalStateException

当我尝试从请求中获取会话时,如果会话过期,则会导致空指针exception。 以下是代码的一部分。 我在第三行得到例外。 public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException { HttpServletRequest httpReq = (HttpServletRequest) req; HttpSession session = httpReq.getSession(false); 这是堆栈跟踪: java.lang.IllegalStateException: getLastAccessedTime: Session already invalidated at org.apache.catalina.session.StandardSession.getLastAccessedTime(StandardSession.java:423) at org.apache.catalina.session.StandardSessionFacade.getLastAccessedTime(StandardSessionFacade.java:84) at com.myapp.admin.CustomerContext.valueUnbound(CustomerContext.java:806) at org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1686) at org.apache.catalina.session.StandardSession.expire(StandardSession.java:801) at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:576) at org.apache.catalina.connector.Request.doGetSession(Request.java:2386) at org.apache.catalina.connector.Request.getSession(Request.java:2120) at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:833) at com.myapp.ui.web.filter.ApplicationSessionFilter.doFilter(ApplicationSessionFilter.java:45) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) […]

如何在Tomcat中设置上下文路径,以便可以在不附加部署的文件夹名称的情况下进入站点?

我在这里看了Tomcat指南和一些SO问题。 而且我认为我几乎都在做同样的事情。 但在某种程度上无法成功。 首先,我必须说我的应用程序部署在我无法控制的共享Tomcat服务器上。 我只是删除我的.war文件并进行部署。 我试图将我的应用程序打包为ROOT.war,但是没有用。 管理员告诉我把它打包成我想要的名字,他们会照顾它。 我把它打包为my-application.war并且已经部署但是我必须输入http:// my-host / my-application来访问网站。 联系管理员后,他们告诉我他们已经在我的主机中将一个上下文元素放在Tomcat配置文件中,如: 应该将my-application设置为进入my-host所有请求的默认应用程序。 但它没有,每当我输入http:// my-host我得到: HTTP Status 404 – / The requested resource (/) is not available 但是,当我输入http:// my-host / my-application时 ,一切正常。 任何关于可能出错的建议都是绝对值得赞赏的。 更新: 我尝试按照tomcat文档中描述的步骤来了解如何使应用程序默认 。 描述了3种方式,我尝试了所有三种方式,并且可以在localhost上将我的应用程序成功部署为ROOT。 我还尝试重现我在远程服务器上遇到的问题,以便找到原因并将其报告给管理员。 我发现了几个问题。 在admin.xml发送给我的server.xml片段中, autoDeploy和deployOnStartUp设置为true,而如果在server.xml中显式定义Context元素,则它们应该为false。 这将导致双重部署,从而创建一个ROOT文件夹和一个名为.war文件的文件夹。 删除.war将删除它的相应文件夹并取消部署应用程序,但ROOT仍然存在,必须手动删除并需要重新启动Tomcat。 在重新启动之前,ROOT.war的任何部署都将失败。 我认为有一些原因阻止了ROOT.war的部署。 可能是在conf / {engine-name} / {host-name}中存在ROOT.xml,或者在主机的appBase中存在ROOT文件夹,或者如上所述,以前部署的ROOT应用程序未取消部署并且需要Tomcat重新开始。 无论哪种方式,我无法确切地指出究竟是什么阻止ROOT.war部署,因为这需要访问Tomcat日志文件和conf文件以检查我上面描述的情况。 另外,从我看来,我的管理员似乎无法维护Tomcat服务器并找到问题。 所以我决定在与共享服务器挣扎之后使用专用的Tomcat服务器。

Jackson + Tomcat – java.lang.VerifyError:无法从最终类inheritance

我有一个在Tomcat 6中运行的Java Web服务,它接受JSON输入。 我试图使用Jackson ObjectMapper来解析输入json。 但是在初始化ObjectMapper对象时,我收到了这个错误 16:08:13,616 ERROR [[jersey]] Servlet.service() for servlet jersey threw exception java.lang.VerifyError: Cannot inherit from final class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2733) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1124) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) at com.test.project.offline.ws.WsApiResource.updateData(WsApiResource.java:169) ……. 在第169行,我有这个ObjectMapper mapper = new ObjectMapper(); 在unit testing中本地调用com.test.project.offline.ws.WsApiResource.updateData()方法时,它可以正常工作而不会出现任何错误。 请帮我解决这个问题。 我使用的是Jackson 1.8.4和tomcat 6。 更新:修复了这个问题。 问题是依赖树中不同版本的jackson。 排除它解决了问题。

Tomcat 6堆大小 – 这是正确的吗?

我在Red Hat盒子上运行多个tomcats,我想为每个tomcats配置单独的堆大小(某些实例使用更多内存)。 我可以将输入以下内容的堆大小min / max bt设置到catalina.sh文件中: CATALINA_OPTS =“ – Xms64m -Xmx256m” 我需要添加’导出’吗? 即导出CATALINA_OPTS =“ – Xms64m -Xmx256m”

了解tomcat 6中的context.xml

我在eclipse中创建了一个主要空的动态Web项目。 它有 没有servlet 没有jsp文件 web.xml是 testprojekt index.html index.htm index.jsp default.html default.htm default.jsp 我在其META-INF文件夹中添加了一个context.xml 我将此项目导出为WAR文件。 具有以下结构: user@system:$ tree . |– META-INF | |– MANIFEST.MF | `– context.xml `– WEB-INF |– classes |– lib `– web.xml 4 directories, 3 files 当我将项目部署到本地tomcat(Apache Tomcat / 6.0.20)时,一切都按预期工作。 这意味着,context.xml被复制到/ conf / Catalina / localhost并重命名为testprojekt.xml。 当我将testprojekt.xml编辑为: 我在catalina.out中看到以下输出: 02.11.2009 13:21:35 org.apache.catalina.startup.HostConfig checkResources INFO: […]

我可以在端口443上安全地运行Tomcat,在8080上安全地运行Tomcat

让我解释一下我的情况。 目前,我在Tomcat 6上运行了很多应用程序,默认端口为8080。 我刚刚创建了一些需要登录的应用程序。我将购买一个SSL证书来安装在这台服务器上。 我不喜欢使用端口8443的想法,因为它使URL更复杂。 如果我在端口80上运行Tomcat,我必须更改几十个链接,我必须以root身份运行Tomcat(而不是tomcat)。 在端口8080上运行不安全的应用程序但是在端口443上运行安全运行是否有任何问题? 我想我的设置会有如下所示的url: http://mydomain.com:8080/report/controller?id=weather https://mydomain.com/secure/controller?id=profile 这可能吗?