最近我在我的Web应用程序中遇到了这个错误:
java.lang.OutOfMemoryError:PermGen空间
这是在Tomcat 6和JDK 1.6上运行的典型Hibernate/JPA + IceFaces/JSF应用程序.显然,重新部署应用程序几次后就会发生这种情况.
导致它的原因以及可以采取哪些措施来避免它?我该如何解决这个问题?
我正在尝试将Tomcat 6网络服务器的默认应用程序更改为与"ROOT"(在webapps文件夹内)不同的应用程序.做这个的最好方式是什么?
我有一个maven项目,pom.xml包含tomcat插件.
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我已经下载了Tomcat 7,所以我有Tomcat目录(apache-tomcat-7.0.56).我尝试了三个目标来运行我的项目:
tomcat7:run, tomcat7:run-war, tomcat7:run-war-only
http://localhost:8080/projectname如果我运行tomcat7:run-war, 我的应用程序运行在projectname-0.0.1-SNAPSHOT.war我的项目的/ target目录中.
我想运行我的应用程序http://localhost:8080/.
我知道之前曾问过这个问题,但遗憾的是这些解决方案对我没有帮助.
我试图从第一个答案两种方法此.
第一种方法对我不起作用,在重命名战争后没有任何改变,tomcat7:run-war-only需要使用类似projectname-0.0.1-SNAPSHOT.war的名称进行战争.
第二种方法没有改变(我试过了两种方法
<Context path="" docBase="projectname-0.0.1-SNAPSHOT" debug="0" reloadable="true"></Context>
和
<Context path="" docBase="projectname" debug="0" reloadable="true"></Context>)
Run Code Online (Sandbox Code Playgroud)
我也看了这个,但<catalina_home>/conf/Catalina/localhost/我的Tomcat目录中没有目录.
问题:运行我的项目tomcat我遇到以下问题:
SCHWERWIEGEND: Failed to destroy end point associated with ProtocolHandler ["ajp-nio-8009"]
java.lang.NullPointerException
at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:316)
at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:492)
at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:821)
at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:534)
at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:877)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
Run Code Online (Sandbox Code Playgroud)
问题:问题是由我的web.xml文件引起的吗?
web.xml中
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>SMS Cloud Service</display-name>
</web-app>
Run Code Online (Sandbox Code Playgroud)
HomeController.java
@RestController
public class HomeController {
private final MachineRepository machineRepository; …Run Code Online (Sandbox Code Playgroud) 我有一个标准的 Tomcat9 安装。我只是将 helloworld.war 放在 webapps 文件夹中,并在 META-INF 中将 context.xml 放在不同的路径中,例如:
<Context path="/newcontext" />
但上下文仍然是http://localhost/helloworld而不是http://localhost/newcontext。
我尝试了很多方法,但无法说服 Tomcat 使用新路径。有谁可以帮忙吗?谢谢。
我想在tomcat服务器中部署myapp.我知道一种方法是从webapps中删除Root文件夹,并将我的app.war重命名为ROOT.WAR.但我不想这样做.我希望像用户访问我的应用程序一样部署为www.xxx.com,它应该转到我的应用程序,如www.xxx.com/login.html.请帮忙
tomcat ×5
java ×3
exception ×1
java-6 ×1
maven ×1
maven-plugin ×1
memory-leaks ×1
permgen ×1
spring ×1
spring-mvc ×1
tomcat6 ×1
tomcat8 ×1
xml ×1