草庐IT

java - Tomcat 不解析 .war 符号链接(symbolic link)

我有一台开发机器,我之前在上面安装了Tomcat,然后以进行开发工作的同一用户身份运行它。我在$CATALINA_HOME/webapps中放置了一个符号链接(symboliclink)到我构建WAR的目录,每次更新构建时,tomcat都会遵循符号链接(symboliclink)并提取新的WAR。从来没有任何问题。但是为了准备将它转移到生产机器上,我创建了一个具有受限权限的新用户,并将tomcat设置为以该用户身份运行,就像出于安全原因所做的那样。现在tomcat不再遵循符号链接(symboliclink),即使我将WAR文件的用户所有权授予它的用户并将权限设置为777。我没有看到ca

java - getRequestDispatcher ("path") 在哪里看?

使用嵌入式tomcat,这段代码:System.out.println("getServletPath:"+request.getServletPath());System.out.println("getServletContext:"+request.getServletContext().getContextPath());System.out.println("getServerName:"+request.getServerName());System.out.println("getServerPort:"+request.getServerPort());打印出来:get

java - 我可以让 Tomcat 作为转储堆的服务运行吗?

我正在尝试让Tomcat(目前作为服务在Windows2003机器上运行)在OutOfMemoryError上转储堆。(Tomcat正在运行Hudson,它在我构建的尾端报告堆空间问题。手动运行构建不会产生此类错误。Hudson人员需要堆转储才能开始。)按照其他地方的说明,我已经告诉Apache服务监视器配置它用来运行Tomcat的JVM,以便在遇到OutOfMemoryError时通过将以下内容添加到JVM选项来转储堆:-XX:+HeapDumpOnOutOfMemoryError然后我再次运行构建。果然,它报告存在堆错误。我扫描整个磁盘寻找默认的java_pid123.hprof文

java - MongoDB Java 驱动程序数据库与 Tomcat 的连接池

根据MongoDBJava驱动程序文档,数据库连接池由Mongo对象神奇地处理。这是否意味着在Tomcat启动时运行的servlet中创建连接到MongoDB数据库的单例对象实例是安全的,而不用担心通过context.xml在Tomcat中配置数据库连接池?这是正确的思考方式吗?我是否误解了Tomcat/数据库连接池的一些基本概念? 最佳答案 我们一直在通过CFMongoDB使用Java驱动程序项目,我们按照您的描述使用它,但在ColdFusion应用程序中而不是在Java中。但想法相同:创建一个对象并重用它,该对象维护与Mongo

java - Tomcat 生产/开发环境

在PHP开发中,可以通过服务器的“环境”变量确定应用程序是在生产环境还是开发环境中运行。在tomcat服务器上是否有类似的变量可用,或者是否有更好的方法将应用程序用于生产和开发? 最佳答案 我们拥有的每个Tomcat实例都在server.xml文件的GlobalNamingResources部分中定义了一个isProduction标志。server.xml:......etc...这允许通过在引用资源的context.xml中创建一个属性来使该属性在整个应用程序中可用:context.xml:...获取值:publicboolean

java - 通过 server.xml 的 Tomcat 映射上下文

我创建了一场war并将其部署到我的$CATALINA_HOME/webapps文件夹中就好了。然后我想测试配置它以指向任意位置的war,例如c:\tmp\mywar.war。这是我在$CATALINA_HOME/conf中的server.xml文件中放入的内容。当我尝试加载localhost:8080/blah时,Tomcat返回404。如果我将docBase指向explodedwar,它就可以正常工作。我在这里缺少什么? 最佳答案 您最好将上下文配置放在应用程序文件中/META-INF/context.xml的单独文件中。Itis

java - Tomcat 或 Java 中是否存在任何类似 beforeCrash() 或 beforeExit() 的函数

我有tomcat服务器在运行。由于某种原因它突然崩溃了......但是我正在努力寻找错误。tomcat或java中是否有类似beforeExit()或ifCrashed()的函数,我可以覆盖并在那里编写一些代码,比如在服务器因某些原因崩溃时通知自己原因。 最佳答案 您可以尝试使用在系统退出时执行的关闭Hook。虽然不能保证它会在像SIGKILL这样的硬崩溃时执行,但在某些情况下这可能是一个选项:Runtime.getRuntime().addShutdownHook(newThread(){publicvoidrun(){//Imp

java - 将 APR 与 Tomcat 一起使用有什么好处(如果有)?

Tomcat可以选择使用APR来处理连接。使用它有什么好处?有没有人对此有第一手经验? 最佳答案 是否this回答你的问题。好处?TomcatcanusetheApachePortableRuntimetoprovidesuperiorscalability,performance,andbetterintegrationwithnativeservertechnologies.TheApachePortableRuntimeisahighlyportablelibrarythatisattheheartofApacheHTTPSe

java - 如何使 Tomcat 中的所有 session 过期?

我想让Tomcat中的所有session都过期。我们在Fitnesse下测试我们的产品,一些session仍然存在,session结束导致测试之间存在依赖性。我用下面的代码手工完成,但有些session仍然存在(我可以用http://localhost:8080/manager/html/listurl检查它)publicstaticvoidexpireAllSessions(){String[]applications={"a","b","c","d","e"};for(Stringapplication:applications){try{expireAllSessions(app

java - 为什么我们需要一个 servlet 名称?

我一直在阅读HeadFirstJSPandServlet,我看到web.xml有ServletNamepacky.FirstServletServletName/ServletURL为什么要隐藏原始servlet的位置?我可以简单地看出这是出于安全原因和更多此类优点,但是为什么要为每个servlet命名?为什么web.xml不能像这样简单ServletURLpacky.FirstServlet 最佳答案 它允许您在单个servlet实例上拥有多个servlet映射(甚至分布在多个web.xml/web-fragment.xml文件中