Tag: tomcat

调整Tomcat内存和CPU消耗

我有一个Java Web应用程序,它适用于文件约定。 我使用Tomcat 6作为我的servlet容器。 当提交了许多请求时,Tomcat变得非常渴望内存。 我想知道如何微调tomcat以减少内存消耗。 我也在考虑更改我的servlet容器。 你有什么建议?

如何在Tomcat 6中配置SQLite?

你能否提供一下如何在tomcat 6中使用sqlite? 我正在使用Xerial sqlite jdbc驱动程序。 在我的应用程序中,我有多个sqlite数据库(.db文件),并且需要连接到不同的sqlite数据库,具体取决于用户登录的内容? 我在哪里可以将所有.db文件放在webapp根目录中或系统中的任何位置或WEB-INF中? 谢谢, 深

Tomcat:getHeader(“Host”)与getServerName()

我有一个Tomcat应用程序,它是从多个域提供的。 以前的开发人员构建了一个返回应用程序URL的方法(见下文)。 在该方法中,它们请求服务器名称( request.getServerName() ),该名称适当地从httpd.conf文件返回ServerName 。 但是,我不希望这样。 我想要的是浏览器发送请求的主机名,即浏览器从哪个域访问应用程序。 我尝试了getHeader(“Host”) ,但仍然返回httpd.conf文件中设置的ServerName 。 而不是request.getServerName() ,我应该使用什么来获取浏览器发送请求的服务器名称? 例如: httpd.conf中的 ServerName: www.myserver.net 用户访问www.yourserver.net上的 Tomcat应用程序 我需要返回www.yourserver.net而 不是 www.myserver.net 。 request.getServerName()调用似乎只返回www.myserver.net /** * Convenience method to get the application’s URL based on request * variables. * * @param request the current request * @return URL to application */ public static String getAppURL(HttpServletRequest […]

在Web应用程序中共享会话

我正在使用JSP和Servlets开发Web应用程序(容器: Tomcat7 ,数据库: Oracle10 ) 我开发了一些Web应用程序,如Profile , Reports , Leads 。 然后我开发了一个Login应用程序。 在这个应用程序中,我在Session存储了USERID以及更多的会话属性。 用户登录后,将显示菜单,其中包含指向其他应用程序的链接,例如指向Profile应用程序的链接。 所以当我在用户登录后访问Session时: 如果我尝试使用相同的应用程序(登录)访问会话,那么我将获得具有所有必需属性的会话 但是当我尝试从其他应用程序(如Profiles访问会话时,我将会话视为null 用于检查会话的代码片段 (登录Web应用程序中的Servletfilter) HttpSession session = request.getSession(false); if(session==null) { System.out.println(“Session does not exist… Redirected to LOGIN Page.”); response.sendRedirect(“/ApplicationName/Login.jsp”); } 我正在访问Profile应用程序中的会话以检查用户是否已登录。 然后我搜索了,并且我发现出于安全原因无法从其他应用程序访问Session 。(我还发现可以通过设置crossContext=”true”来完成) 然后我找到了其他选项,比如制作所有应用程序的EAR然后进行部署,但遗憾的是, Tomcat7不支持EAR 。 我是网络环境的新手,所以如果有人在此之前做过这方面的工作,那么请告诉我有什么选择? 提前致谢 UPDATE1 现在我已决定使用EAR ,我将在其中打包所有WAR文件,然后我将尝试在它们之间共享会话。 由于Tomcat不支持EAR我安装了Oracle Glassfish ,然后我创建了Enterprise Application Project ,其中包含两个应用程序1. Login和2. Profiles ,然后创建EAR文件,并将其部署在Glassfish […]

尝试进行客户端服务器ssl身份validation时,Tomcat 7获取SSLv2Hello被禁用错误

我试图为客户端和服务器设置自签名TLS配置,其中服务器是Tomcat 7,客户端是Apache httpclient 4.1。 服务器配置取自此处 ,客户端代码取自此处 。 我的tomcat配置如下所示: 我的客户端代码如下所示: final HttpParams httpParams = new BasicHttpParams(); // load the keystore containing the client certificate – keystore type is probably jks or pkcs12 final KeyStore keystore = KeyStore.getInstance(“pkcs12”); FileInputStream keystoreInput = = new FileInputStream(“d:/dev/java/conf/keys/client.p12”);; // TODO get the keystore as an InputStream from somewhere keystore.load(keystoreInput, “password”.toCharArray()); // […]

在Tomcat中从HttpServletRequest.getRemoteUser()获取值而不修改应用程序

(使用Java 6和Tomcat 6.) 我有没有办法让HttpServletRequest.getRemoteUser()在我的开发环境(即localhost)中返回一个值而无需修改我的应用程序的web.xml文件? 我问的原因是,当应用程序部署到远程环境时,身份validation实现由Web服务器和插件工具处理。 在本地运行我显然没有插件工具或单独的Web服务器; 我只是拥有Tomcat 6.我试图避免向我的应用程序添加代码仅仅是为了支持我的localhost上的开发。 我希望我可以对context.xml或server.xml文件进行修改,这些修改将允许我设置远程用户ID或尝试从HTTP标头或其他东西中提取它。

使用Tomcat进行Eclipse Web-App部署:提供多个项目的依赖关系?

我在使用Tomcat 6和Eclipse部署动态Web应用程序时使用的一些第三方库(JAR文件)存在问题。 请注意,我知道如何在设置中执行此操作,其中Web应用程序项目 – 直接 – 依赖于这些JAR。 但是,在我的设置中,我有两个Eclipse项目: core是一个类库,依赖于a.jar 。 web是Web应用程序,依赖于核心 。 在web的项目设置中,在部署程序集类别中,我添加了核心 ,因此Eclipse(或Tomcat – 我不太确定这里的负责人是谁)将core.jar放入我的Web应用程序的libs目录中。 问题是:当我试用Web应用程序时,当核心从a.jar访问类时,会抛出NoClassDefFoundError 。 我该怎么办呢? 我不认为将a.jar放入我的Web应用程序的Deployment Assembly设置页面是正确的解决方案,因为它应该与Web项目无关, 核心项目依赖于什么。 基本上,我正在寻找一种方法来配置Eclipse(Tomcat?)以将核心的依赖关系“嵌入”到core.jar 。 关于这个的问题是,当我部署我的web项目时,会自动生成core.jar 。 非常感谢帮助。 提前致谢!

在Spring / JPA / Mysql / Tomcat应用程序中分析Connection Closed Exception

问题 我最近负责Java Web应用程序,代码已经编写完成。 该应用程序获得适度的高流量,每天上午11点至下午3点的交通高峰时段。 该应用程序使用Spring,JPA(Hibernate),MYSQL DB。 Spring已配置为使用tomcat jdbc连接池来建立与DB的连接。 (post末尾的配置细节) 在过去几天,在应用程序的高峰负载时间内,由于tomcat对请求没有响应,应用程序一直在停止运行。 它需要多次重启tomcat。 通过tomcat catalina.out日志,我注意到了很多 Caused by: java.sql.SQLException: Connection has already been closed. at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:117) at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109) at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80) at com.sun.proxy.$Proxy28.prepareStatement(Unknown Source) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:423) at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547) at org.hibernate.loader.Loader.doQuery(Loader.java:673) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.loadCollection(Loader.java:1994) … 115 more 这些经常在崩溃之前出现。 在这些exception之前更进一步,我注意到在Connection Closedexception之前放弃了很多Connections。 WARNING: Connection has been abandoned […]

Apache Tomcat请求线程

我们有一个泄漏了一点内存的应用程序,有点轻描淡写。 我正在使用jvisualvm来尝试找出导致问题的原因。 我看到线程数量在以名称开头的线程上增长了很多: http-8080-例如:http:8080-42 我的第一个猜测是,每个线程都是来自客户端的请求命中,因为每个客户端请求都是在自己的线程中处理的。 我的问题是那些线程已经运行了很长一段时间(到目前为止10分钟)。 我的问题是: 我的假设是否正确? 如果是这样,为什么线程会运行这么长时间? 当然它还不能忙于满足客户的要求吗?

Tomcat – 将项目文件夹设置为Web根目录

我在Tomcat webapps/mysite下有这个文件夹,这是我所有的JSP和其他东西所在的位置。 要访问此文件夹,请访问http://blah.com/mysite ,它运行正常。 然而(因为样式表和图像静态连接到根/ )我必须这样做,所以当我去http://blah.com/它将加载webapps/mysite内的东西。 我尝试了很多不同的东西,包括上下文和在server.xml设置绝对路径……似乎没什么用,每当我去http://blah.com/它仍然试图加载ROOT文件夹…什么的发生在这里?