Tag: tomcat

是否值得清除Filter中的ThreadLocals以解决与线程池相关的问题?

简而言之 – tomcat使用线程池,因此线程可以重用。 有些库使用ThreadLocal变量,但不清理它们(使用.remove() ),因此实际上它们会将“脏”线程返回到池中。 Tomcat具有在关闭时检测这些内容以及清除线程本地的新function。 但这意味着线程在整个执行过程中都是“脏”的。 我可以做的是实现一个Filter ,并在请求完成后(并将线程返回到池中),使用tomcat中的代码 (称为checkThreadLocalsForLeaks的方法)清理所有ThreadLocal 。 问题是,值得吗? 两个优点: 防止内存泄漏 防止库的不确定行为,假设线程是“新鲜的” 一个骗局: 该解决方案使用reflection,因此它可能很慢。 当然,所有reflection数据( Field s)都将被缓存,但仍然如此。 另一种选择是将问题报告给不清除其线程本地的库。

CTRL + C w / Spring Boot&Gradle Kills Gradle Daemon

我使用Spring Boot Gradle插件启动Tomcat服务器和我的应用程序。 我通过gradle bootRun启动Tomcat服务器。 我还启用了Gradle守护进程,希望Gradle构建更快。 但是,启用守护进程是徒劳的。 每次我通过Ctrl + C停止服务器,然后使用gradle bootRun再次启动服务器,我会遇到以下消息: Starting a new Gradle Daemon for this build (subsequent builds will be faster). Ctrl + C不仅会停止Spring Boot的Tomcat服务器,还会杀死Gradle守护程序。 这违背了Gradle的守护进程模式的目的。 有没有更好的方法我应该停止服务器,希望通过同一个终端中的命令行界面我使用gradle bootRun启动tomcat,这使Gradle守护程序保持活动状态?

在Windows XP中为Tomcat服务设置默认语言环境

我在Windows XP计算机上安装了Apache Tomcat 6作为服务(法语) 我的问题是Tomcat本身和所有webapps(Sonar和Hudson)现在都显示法语消息。 我当然想要英文信息,所以我进入控制面板的“区域设置”窗口,将所有内容更改为英语(美国) Tomcat 仍然是法语。 什么都没有改变。 我怀疑,因为它作为服务运行,它不会从控制面板中选择设置。 那么有没有办法欺骗Tomcat JVM以便它使用英语而不是法语? 我有sys管理员访问该机器(XP PRO法语) 谢谢

尽管chmod 777,java.io.FileNotFoundException(权限被拒绝)

在Tomcat上编写Grails应用程序时,我遇到了一些奇怪的问题。 创建简单的测试控制器后,我想在包com中编写测试内容 package com.domain.controller import java.io.File; import java.io.PrintWriter; class TestController { def index() { // test try { PrintWriter writer = new PrintWriter(“/home/user/domains/domain.com/public_html/the-file-name.txt”); writer.println(“The first line”); writer.println(“The second line”); writer.close(); } catch (IOException e) { throw new RuntimeException(e); } } } 我得到一个例外: 类java.io.FileNotFoundException消息/home/user/domains/domain.com/public_html/the-file-name.txt(Brakdostępu) 我已将chmod设置为777到/home/user/domains/domain.com/public_html/ 。 并且tomcat7.tomcat7是所有者。 我还试图创建这个文件,访问权限777和所有权设置为tomcat7,但我仍然得到一个例外: ls -al /home/user/domains/domain.com/public_html razem 16 drwxrwxrwx 3 tomcat7 […]

Tomcat 7.0版仅支持J2EE 1.2,1.3,1.4和Java EE 5和6 Web模块

我正试图在Eclipse J2EE透视图中使用Tomcat 7部署一个非常简单的HTTPServlet项目。 我收到错误“Tomcat 7.0版仅支持J2EE 1.2,1.3,1.4和Java EE 5和6 Web模块”。 我已经尝试修改我在这里提到的org.eclipse.wst.common.project.facet.core.xml,但似乎没有解决问题。 我可以直接使用file-> export – > .war部署到我安装的tomcat服务器上。 有任何想法吗?

Spring Boot应用程序在部署到Tomcat时提供404,但与嵌入式服务器配合使用

在使用Spring MVC提供Web内容的指导下,我正在创建一个Spring Boot Web应用程序,我可以使用嵌入式Tomcat实例以及独立的Tomcat 8服务器运行它。 当作为java -jar adminpage.war执行时,应用程序按预期工作,当我访问http://localhost:8080/table时,我看到了预期的结果。 但是,当我部署到Tomcat 8服务器时(通过将adminpage.war删除到webapps目录中),当我访问https://myserver/adminpage/table时出现404错误。 catelina.log和localhost.log文件在Tomcat服务器上没有任何帮助。 任何人都可以建议我在哪里做了错误的配置? 我在过去使用Spring Boot部署RESTful服务时遇到了同样的问题,但这是我第一次涉足Web应用程序。 我的申请文件: src/main/java/com/…/Application.java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } src/main/java/com/…/MainController.java @Controller public class MainController { @RequestMapping(“/table”) public String greeting(Model model) { model.addAttribute(“name”, “Fooballs”); return “table”; } } src/main/resources/templates/table.html pom.xml 4.0.0 com.foo adminpage 1.0-SNAPSHOT […]

Java进程内存使用量不断增加

前提条件: 具有16 Gb RAM的PC 在Ubuntu 16.10 x64上安装了JDK 1.8.x. 标准的基于Spring的Web应用程序,部署在Tomcat 8.5.x上。 Tomcat配置了下一个参数: CATALINA_OPTS=”$CATALINA_OPTS -Xms128m -Xmx512m -XX:NewSize=64m -XX:MaxNewSize=128m -Xss512k -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:MaxMetaspaceSize=512m -XX:-TieredCompilation -XX:ReservedCodeCacheSize=512m” JMeter 2.13用于负载测试运行 JProfiler 9.x用于java堆内存使用情况跟踪 top util用于java进程内存使用情况跟踪 当我连续3次开始加载测试时,我观察到(使用top )java进程增加了大量已用内存: Tomcat启动后使用~1Gb 在第一次测试运行后,它使用4.5Gb 当所有测试都完成后,Tomcat正在使用7Gb的RAM 所有这些时间堆大小都是有限的,JProfiler确认 – 堆大小不超过512Mb。 这是JProfiler的截图。 底部的红色数字是java进程使用的内存大小(根据top )。 问题是: 为什么java进程在工作时始终不断增加内存使用量? 谢谢! UPD#1:关于可能的重复:他们have confirmed that this only happens on Solaris. 但我使用的是Ubuntu 16.10。 同样,尖锐的问题没有一个可以解释问题原因的答案。 UPD#2:暂停一段时间后我不得不回到这个问题。 […]

不使用GIT将WAR文件部署到Openshift?

我想将一个WAR文件上传到我的Openshift帐户,但它迫使我使用GIT ot GITHUB( 这里 )。 请原谅我说这个,但这非常烦人。 有没有办法直接将WAR文件上传到我的应用程序而不使用某些第三方? 我的应用程序(在Openshift中)包括:Tomcat 7(JBoss EWS 2.0),MySQL 5.5。 非常感激

Maven:在哪里为tomcat-maven-plugin添加生成的资源?

我的项目的src/main/webapp目录中有CSS和JavaScript文件。 我想加入这些资源的加入和缩小版本到我的WAR文件和tomcat-maven-plugin选择它的地方。 我使用yuicompressor-maven-plugin创建文件并将其放到${project.build.directory}/${project.build.finalName} 。 它适用于maven包,这些资源可以用于WAR文件,但不知何故tomcat-maven-plugin根本看不到它们。 我应该使用不同的目录吗? 我的pom: org.codehaus.mojo tomcat-maven-plugin 1.1 /MyApp ${project.build.directory}/${project.build.finalName} 2.5.1 true org.apache.maven.plugins maven-compiler-plugin 1.6 1.6 true true org.apache.maven.plugins maven-resources-plugin 2.5 UTF-8 org.apache.maven.plugins maven-war-plugin 2.2 ${basedir}/src/main/resources/META-INF true META-INF context.xml false true true net.alchim31.maven yuicompressor-maven-plugin 1.3.0 process-resources **/* ${project.build.directory}/${project.build.finalName}/js/commons-pack.js ${project.build.sourceDirectory}/../webapp/js1.js ${project.build.sourceDirectory}/../webapp/js2.js … 我该怎么做才能制作mvn tomcat:run以获取我生成的文件?

keytool错误bash:keytool:找不到命令

我试图从Java bin目录执行keytool但是我收到一个错误警告bash:keytool:command not found。 root@xxxxxx]# keytool -genkey -alias mypassword -keyalg RSA bash: keytools: command not found