Tag: tomcat

如何处理tomcat PermGen空间

背景 :我有一个使用JSP的Web项目。 IDE是Eclipse。 tomcat的配置是:资源发生变化时自动发布,发布间隔为“1秒”。 classes文件夹中的属性文件,用于保存一些设置。它也可以由servlet动态修改。 修改操作由JSP中的save按钮进行分区。 问题 :在几次保存操作之后,Tomcat带有java.lang.OutOfMemoryError: PermGen space 。 日志消息 java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58) at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:297) at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1064) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4238) at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3083) at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:404) at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1279) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1571) at […]

负载平衡Web应用程序

有负载平衡的tomcat Web服务器。 每个请求都可以由不同的tomcat服务器提供。 在为基于j2ee(struts)的Web应用程序编写代码时,我们如何处理这个问题?

java util logging.properties:如何记录到两个不同的文件

我将logging.properties放在tomcat的WEB-INF / classes目录中 我想记录两个不同的文件。 例如:org.pkg1转到一个文件,org.pkg2转到一个单独的文件。 我可以配置一个文件,但不能配置两个。 那可能吗?

Tomcat – 了解CredentialHandler

我需要在我的最新项目中使用Container Managed Security and Authentication。 我有一些关于如何配置凭据处理程序的疑问。 首先, CredentialHandler声明会如何? 有人可以使用声明的algorithm属性提供NestedCredentialHandler的示例声明。 我需要知道,因为Realms中的Digest属性已被弃用。 我没有在网上找到任何例子,我完全感到困惑。 MessageDigestCredentialHandler和SecretKeyCredentialHandler之间的区别是哪一个更安全? SecretKeyCredentialHandler在文档中 仅指定了一个算法 ,即PBKDF2WithHmacSHA1 。 还有哪些其他算法?

Tomcat 8 – LDAP:NameNotFoundException错误代码32,剩余名称为空字符串

尝试将应用程序从WebLogic 12.2.1迁移到Tomcat 8.5.4 ,Weblogic下的内容是作为LDAP连接的外部JNDI提供程序的条目已迁移到Tomcat下的新Resource 。 遵循Stack Overflow的这个建议 ,自定义LdapContextFactory已被打包为Tomcat lib文件夹下的新jar文件。 在Tomcat server.xml文件中,已配置以下GlobalNamingResources/Resource : 通过嵌入在Eclipse中的Apache Directory Studio / LDAP Browser等LDAP浏览器浏览LDAP目录时,上述连接可正常工作。 自定义com.sample.custom.LdapContextFactory非常简单: public class LdapContextFactory implements ObjectFactory { public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception { Hashtable env = new Hashtable(); Reference reference = (Reference) obj; Enumeration references = reference.getAll(); while (references.hasMoreElements()) { […]

Spring @Scheduled任务运行两次

我正在创建一个@Scheduled任务,每5秒运行一次。 由于其他问题一直存在问题,我的任务是运行两次! 我已经查看了其他问题,并在此阅读了适用的文档,但我无法弄清楚问题所在。 我知道当我启动tomcat服务器时,我的@Scheduled类的两个单独实例正在实例化。 我还想到了它们在引用我的日志文件时被实例化的时候。 与此日志行相关联的一个: 信息:初始化Spring根WebApplicationContext 另一个有这个日志行: 信息:初始化Spring FrameworkServlet’servlet’ 这是spring配置文件。 而我的简单java类: package scheduled; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; @Service public class Notifier { @Scheduled(fixedDelay = 5000) public void notifyUsersOfBidItems() { try { System.out.println(this); } catch (Exception e) { e.printStackTrace(); } } } 另外,我使用的是Spring 4。 编辑: Adding web.xml Archetype Created Web Application servlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring_config.xml […]

UTF-8使用Tomcat编码servlet表单提交

我试图将一个包含unicode字符的简单表单发布到servlet操作。 在Jetty上,一切都没有障碍。 在Tomcat服务器上,utf-8字符会被破坏。 我得到的最简单的案例: 形成: ` ` 行动: class MyAction extends ActionSupport { public void setData(String data) { // data is already mangled here in Tomcat } } 我在server.xml中的上有URIEncoding =“UTF-8” 动作的第一个filter调用request.setCharacterEncoding(“UTF-8”); 包含表单的页面的内容类型是“text / html; charset = UTF-8” 在表单中添加“accept-charset”没有任何区别 我能使其工作的唯一两种方法是使用Jetty或将其切换为method =“get”。 这两个都导致角色没有问题。

是否需要Class.forName()机制?

以下代码: Class.forName(dbDriver); // “org.postgres.Driver” or “com.mysql.jdbc.Driver” 是/必须打开JDBC连接。 我听说现代JDBC驱动程序不再需要它。 但是我无法在我的项目中删除它,因为我No suitable driver foundexception。 我使用的是postgresql-9.1-901.jdbc3.jar ,Java7和tomcat7。 我什么时候可以省略Class.forName(…)构造?

如果20多年没有活动,tomcat会超时吗?

如果我设置tomcat并从中流式传输静态文件,我注意到如果客户端从该套接字“暂停”(停止接收)任何大于20秒的事情,那么tomcat似乎“任意”“断开”连接(即使需要URI已收到线路,并且连接仍然“已连接”[客户端仍处于活动状态])。 什么配置参数控制这个? 文档提到了connectionTimeout但只是连接到初始头解析和读取请求体,而不是读取服务器的响应[?]这里是否存在某种不活动超时? 它是可重现的,从任何tomcat应用程序流式传输(大)静态文件,并通过暂停的客户端接收它,ex test.rb: require “socket” host = “localhost” port = 8080 socket = TCPSocket.new host,port url = “/your_webapp/large_static_filename.ext” request = “GET #{url} HTTP/1.0\r\nHost:#{host}\r\n\r\n” socket.print request puts “reading” response = socket.sysread 1_000_000 puts response.length puts response[0..300] puts “sleeping 25” # with 10s or several reads separated by 10s, it is OK sleep 25 response2 […]

Tomcat不会刷新响应缓冲区

我在下面的Tomcat 7上测试了HttpResponse#flushBuffer和PrintWriter#flush HttpResponse#flushBuffer ,但似乎响应忽略了它们而不是像预期的那样在线上刷新内容。 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(“/HelloServlet”) public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter(); pw.println(“say hi now”); pw.flush(); response.flushBuffer(); try { Thread.sleep(5000); } […]