Tag: tomcat

在服务器上不断运行java应用程序

我希望在服务器上不断运行java应用程序。 我有sevlets的经验,但他们不经常运行。 通过研究我发现这个问题的共同解决方案是使用第三方计时服务; 当我编写自己复杂的计时机制时,我对使用其中一个犹豫不决。 该应用程序需要全天候运行; 我很困惑为什么人们不经常遇到这个问题 – 我做的事情是愚蠢的吗?

弹性负载均衡器和https

我正在使用Elastic Beanstalk,我在使用SSL配置时遇到了一些麻烦。 我现在有一个由Load Balancer和一个EC2实例组成的环境。 负载均衡器在端口443和80上有侦听器。环境中的EC2实例在端口80上运行tomcat。我在负载均衡器中有一个证书,我可以在端口443和80上访问该站点,一切都是工作得很好。 问题是我希望所有请求都被重定向到端口443,即使是端口80上的请求。我已经搜索了高低,以便在不改变我的安全配置的情况下执行此操作。 这是一个运行在Tomcat 7上的小型webapp,带有Spring安全性和MVC。 我试过用 但我有几个页面不属于filter链的一部分 这似乎可以在负载均衡器上解决,但我没有太多设置SSL的经验。 任何帮助表示赞赏。

使用SSL和自签名证书使JMX在Tomcat 7下运行

我正在尝试使用SSL在Tomcat 7.0.23下运行JMX。 服务器位于AWS中,这意味着所有主机都是NAT,我需要使用JmxRemoteLifecycleListener来显式设置JMX使用的两个端口。 我一直在做很多关于这个主题的阅读,但我不能让所有的部分正确地协同工作。 没有SSL,我可以让JMX正常工作。 我已经为我的Tomcat版本下载了catalina-jmx-remote.jar的版本,并将其安装在我的tomcat / lib目录中。 我的server.xml包含: 当我使用以下设置启动Tomcat时,我可以使用不安全的会话进行连接: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/path/to/jmxremote.access -Djava.rmi.server.hostname= -Dcom.sun.management.jmxremote.ssl=false 但是,如果我将这些更改为以下,那么我无法建立SSL连接: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/path/to/jmxremote.access -Djava.rmi.server.hostname= -Dcom.sun.management.jmxremote.ssl=true -Dcom.sun.management.jmxremote.ssl.need.client.auth=false -Dcom.sun.management.jmxremote.authenticate=true -Djavax.net.ssl.keyStore=/path/to/keystore.dat -Djavax.net.ssl.keyStorePassword= -Djavax.net.ssl.trustStore=/path/to/truststore.dat -Djavax.net.ssl.trustStorePassword= keystore.dat只包含一个通过以下方式创建的证书: openssl x509 -outform der -in cert.pem -out cert.der keytool -import -alias tomcat -keystore keystore.dat -file cert.der -storepass truststore.dat包含java cacerts的完整副本以及我自签名证书的CA证书: cp $JAVA_HOME/jre/lib/security/cacerts truststore.dat keytool -storepasswd -storepass changeit -new […]

Tomcat:OutOfMemoryError Permgen Space

我正在使用Tomcat 6开发JSP应用程序。 由于我确实将Quartz Scheduler Framework和Log4J库添加到项目中,因此Tomcat在重新部署时开始抛出此exception。 我已经了解了问题的原因,现在我知道必须使用类加载器。 所以,我想问题可能是由自动加载某些类的记录器库引起的。 我该如何处理这个问题? 有一种方法可以在不使用log4j.properties文件的情况下设置记录器,以确保类加载器能够正常工作。

Java Web应用程序中的线程

我需要创建一个线程来侦听新的,修改过的或已删除的文件的文件路径。 我正在使用一个使用Spring 3,Struts 2和Hibernate 3的Web应用程序。如果我运行该项目,它会加载包含文本“Hello World”的index.jsp。 问题是,当我创建一个侦听文件路径并将其分配给index.jsp的java Thread() : index.jsp 然后“Hello World”文本不会出现,因为Thread永远不会停止(这是正确的,它不应该停止)。 我需要此Thread在后台运行,而不会干扰Web应用程序的其余部分。 我不想仅为此线程创建单独的Web应用程序。 此外,我不希望每次创建new Session实例时都创建一个new Thread实例,无论有多少个Session实例处于活动状态,都应该只有一个Thread实例。

在spring boot中使用现有的http服务器作为camel端点

我有一个使用spring boot starter web的spring boot应用程序。 这将创建一个正在运行的Tomcat实例,并设置在端口上运行的http服务器。 在我的骆驼路线中,我想使用这个http服务器作为http请求的组件,但我无法弄清楚如何利用它。 我看到很多配置jetty实例并从中消耗的例子,但是实际上我不会运行两个http服务器吗? 我只想要一个。 我假设http服务器已经自动assembly,因为我可以使用其他弹簧代码(例如RestController)从中消耗它,我也可以看到它在我的spring启动日志中启动。 @Component public class ExampleRoute extends RouteBuilder { @Override public void configure() throws Exception { //@formatter:off from( ) .log( LoggingLevel.INFO, log, “Hello World!” ); //@formatter:on } }

Tomcat:java.net.ConnectException:连接被拒绝

我上传新的war文件后,我试图关闭并启动我的tomcat。 但我在关闭tomcat实例时遇到连接拒绝错误。 错误在下面, Oct 31, 2015 2:55:44 AM org.apache.catalina.startup.Catalina stopServer SEVERE: Could not contact localhost:8005. Tomcat may not be running. Oct 31, 2015 2:55:44 AM org.apache.catalina.startup.Catalina stopServer SEVERE: Catalina.stop: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.(Socket.java:434) at java.net.Socket.(Socket.java:211) at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:498) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native […]

简单的Jprofiler设置无法正常工作

我正在尝试启动并运行一个简单的本地主机JProfiler会话。 我创建了会话,主机是127.0.0.1,端口是默认的8849,我已经将启动/关闭命令指向我的本地tomcat安装startup.sh/shutdown.sh。 我点击确定,我得到“连接到127.0.0.1:8849”,150秒后(我修改了超时)它超时并说: 无法连接到127.0.0.1:8849。 请确保远程地址正确,远程程序正确启动,网络路由允许套接字连接。 地址不可能是错的,我已经validation了(ps -ef | grep tomcat)进程已启动,并且还检查了tomcat日志并且它正在等待请求: INFO: Starting Coyote HTTP/1.1 on http-8080 Apr 15, 2011 7:49:13 AM org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 Apr 15, 2011 7:49:13 AM org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/21 config=null Apr 15, 2011 7:49:13 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 47312 ms […]

Servlet真实路径

我在目录博客下运行webapp。 (例如www.example.com/blog)。 我想获得一个请求的真实文件系统路径。 例如www.example.com/blog/test-file.html – > /usr/share/tomcat7/webapps/blog/test-file.html 我尝试了以下方法: public String realPath(HttpServletRequest request, ServletContext servletContext){ String requestURI = request.getRequestURI(); String realPath = servletContext.getRealPath(requestURI); return realPath; } 然而这又回来了 /usr/share/tomcat7/webapps/blog/blog/test-file.html 这样做的正确方法是什么?

在tomcat类路径中包含web-inf / lib中的目录

在我的webapp中; 默认情况下,在classpath中添加了WEB-INF / lib,这很好。 现在,我想在我的tomcat的类路径中添加spring jar文件。 如果我将所有jar文件放在WEB-INF / lib中; 它工作正常。 但是,如果我想添加一个目录WEB-INF / lib / spring并将所有jar文件放在spring目录中; 它不起作用。 如何在类路径中包含WEB-INF / lib / spring。 我更愿意在web.xml中进行更改,因为它非常本地化为我的webapp。 当然我不想在catalina.properties中进行更改,因为所有jar文件都加载到JVM中(不仅仅是在类路径中添加)