Articles of tomcat

java.net.SocketException:太多打开文件Spring Hibernate Tomcat

我有一个客户端生产Linode服务器上的Hibernate,Spring,Debian,Tomcat,MySql堆栈。 它是一个Spring-Multitenant应用程序,为大约30个客户端托pipe网页。 应用程序启动正常,然后过一会儿,我得到这个错误: java.net.SocketException: Too many open files at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:60) at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:216) at java.lang.Thread.run(Thread.java:662) 然而,在引发这个错误之前,nagios会通知我ping到服务器的停止响应。 以前,我把nginx作为代理,而且每个请求都得到这个nginx错误,不得不重新启动tomcat: 2014/04/21 12:31:28 [error] 2259#0: *2441630 no live upstreams while connecting to upstream, client: 66.249.64.115, server: abril, request: "GET /catalog.do?op=requestPage&selectedPage=-195&category=2&offSet=-197&page=-193&searchBox= HTTP/1.1", upstream: "http://appcluster/catalog.do?op=requestPage&selectedPage=-195&category=2&offSet=-197&page=-193&searchBox=", host: "www.anabocafe.com" 2014/04/21 12:31:40 [error] 2259#0: *2441641 upstream […]

nginx使用Tomcat 7pipe理SSL

server.xml中的nginxpipe理SSL的正确configuration是什么? 我当前的configuration导致“redirect循环”,除非我标记的tomcat标准连接“安全”这不是我想要的。 我的应用程序需要HTTPS的所有请求,并redirect到HTTPS,如果HTTP使用。 如果我设置secure =“true”,它不再redirect,但“redirect循环”消失了。 我究竟做错了什么? 我目前的tomcat server.xml: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" proxyPort="443"/> Nginx的conf: server { listen 80 default_server; server_name localhost, mydomain.com; location / { add_header 'Access-Control-Allow-Origin' '*'; proxy_pass http://localhost:8080/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto http; proxy_send_timeout 6000; } } server { server_name localhost, mydomain.com; […]

重复使用tomcat线程,等待“长”的时间

configuration Web服务器:Nginx 应用程序服务器:具有200个请求服务线程的默认configuration的Tomcat 预期的响应时间为我的服务器:<30秒(有很多第三方依赖项) 情景 每10秒钟,应用程序将需要生成令牌供其使用。 令牌生成的预期时间大约是5秒,但是由于它的第三方系统是通过networking联系的,这显然是不一致的,可能会下降到10秒。 在令牌生成过程中,每秒接近80%的传入请求需要等待。 我相信会发生什么 由于等待令牌生成的请求将不得不等待“长”时间,因此在等待令牌生成过程完成的同时,没有理由将这些请求服务重新用于服务其他传入请求。 基本上,如果我的20%继续服务,这是有道理的。 如果等待的线程没有被其他请求使用,tomcat请求服务的限制将被达成,服务器将基本上窒息,这是我不是很兴奋的事情发生。 我试过了什么 最初我希望切换到Tomcat的NIO连接器将完成这项工作。 但看了这个比较后,我真的没有希望了。 不过,我试着强迫这些请求等待10秒钟,但是没有奏效。 现在我正在思考的是,我需要在请求的时候搁置这个请求,并且需要通知tomcat这个线程可以被重用。 同样,当需要向前移动的时候,我需要tomcat给它一个线程池的线程。 但我怎么做,或者即使这是可能的,我也是盲目的。 任何指导或帮助?

我可以在nginx服务器上部署.war吗?

我真的很喜欢nginx的稳定性和处理请求的方式。 而我真的很喜欢tomcat的Java和用户友好 有没有办法在nginx服务器上部署我的.war文件?

创build轴的麻烦2 .aar文件:xml / services not found错误

我正在尝试使用OSX 10.7.5(作为本教程的一部分)创build一个aar文件。 要生成.aar,我在eclipse工作区中导航到保存我的webservice的目录并键入 jar cvf FirstWebService.aar ./* 这是Apache所说的用于从apache axis 2文档生成代码清单9中的aar的命令。 该命令创build了一个.aar – 但是我用来创build.aar的过程有些问题,因为当我将.aar文件加载到tomcat的/ webapps时,我得到一个.xml / services not found错误。 我不知道如何解决这个错误。 如果我search我的计算机的文件系统的services.xml文件,我可以find它在/path to eclipse workspace/workspace/MyFirstWebService/WebContent/WEB-INF/services/FirstWebService/META-INF但我不知道这个文件应该是滚动到.aar文件中,或者如果我可以手动将这个文件放到apache目录结构的某个位置来运行。 注意:我不认为我正在像这个问题那样手动解压缩或解压缩。 Axis2 Web服务错误:services.xml找不到我只是运行上面从apache文档列出的命令。 这是.aar文件 注意我正在使用与本教程中所有相同版本的软件 – 但我正在使用OSX 10.7.5,在本教程中使用了Windows。 因此,我已经将本教程中显示的窗口的make-aar命令( jar cvf FirstWebService.aar com META-INF ) jar cvf FirstWebService.aar com META-INF为上面显示的命令。 如果我只是尝试从教程jar cvf FirstWebService.aar com META-INF运行命令我得到相同的XML /服务未find错误。 它在terminal中给出这个输出… com: no such file or […]

Apache Tomcat不包含conf / Catalina / localhost

我刚刚在Linux RHEL6上安装了NetBeans。 我必须在conf / Catalina / localhost / something.xml中为我的Java应用程序创buildxml文件 问题是,有两个雄猫。 第一个是在/home/../.netbeans/7.3.1/apache-tomcat-7.0.34.0_base中用作CATALINA_BASE的一个包含Catalina / localhost在conf文件夹中的一个。 但是如果我在这个目录中插入something.xml,什么都不会发生。 所以,我必须在第二个tomcat /usr/local/apache-tomcat-7.0.34 CATALINA_HOME中插入something.xml。 但是我在conf目录下找不到Cataline / localhost。 我试图手动使用./startup.sh和netbeans启动tomcat,但仍然无法在该目录中findCatalina / localhost。 如何解决这个问题? 谢谢

shell脚本自动重新启动tomcat,如果停止

我正在使用一个shell脚本启动tomcat服务器,如果它没有运行。 我在cronjob中运行这个脚本来经常检查它。 这是我的脚本 #! /bin/sh SERVICE=/etc/init.d/tomcat7 STOPPED_MESSAGE="Tomcat Servlet Engine is not running." if [ "`$SERVICE status`" -eq "$STOPPED_MESSAGE" ]; then $SERVICE start fi 但是每当我运行这个脚本,它给了我一个错误。 如果tomcat没有运行,那么错误是: [:非法数字:* Tomcat Servlet引擎未运行。] 而如果tomcat运行的错误是: [:非法数字:* Tomcat Servlet Engine正在使用pid 6130运行。] 我认为错误与$ SERVICE状态有关,但我无法解决它。 我是一个新的shell脚本的蜜蜂。 请帮我一下 我解决这个问题之前,我不能前进。

systemd无法为Tomcat启动定制服务

我有一个简单的系统服务,我已经创build正确启动。 这里是tomcat.service,我已经放入/lib/systemd/system : [Unit] Description=A systemd daemon configured to run Apache Tomcat 8. After=syslog.target network.target [Service] Type=forking PIDFile=/home/technomage/Migration/Programming\ Files/Development\ Plugins\ and\ Software/apache-tomcat-8.0.26/bin/tomcat.pid ExecStart=/home/technomage/Migration/Programming\ Files/Development\ Plugins\ and\ Software/apache-tomcat-8.0.26/bin/startup.sh ExecStop=/home/technomage/Migration/Programming\ Files/Development\ Plugins\ and\ Software/apache-tomcat-8.0.26/bin/shutdown.sh [Install] WantedBy=multi-user.target 将文件放入文件夹后,我运行systemctl enable tomcat.service 。 在这之后,运行sudo systemctl start tomcat.service会给我下面的错误: Job for tomcat.service failed. See 'systemctl status tomcat.service' and 'journalctl -xn' for details. […]

指向env的jbosscaching位置var

我在我的configurationxml文件中有以下代码: <jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.2"> <locking isolationLevel="READ_COMMITTED" nodeLockingScheme="mvcc" useLockStriping="false" concurrencyLevel="1500" lockParentForChildInsertRemove="false" lockAcquisitionTimeout="10000" writeSkewCheck="true" /> <!– 0 = no eviction –> <eviction wakeUpInterval="500" /> <loaders passivation="false" shared="false"> <preload> <node fqn="/" /> </preload> <loader class="org.jboss.cache.loader.FileCacheLoader" async="false" fetchPersistentState="true"> <properties> location=/${env.VG_HOME}/cacheloader </properties> </loader> </loaders> </jbosscache> 其中VG_HOME是指向本地文件夹的env var。 我已经使用Jetty服务器在Linux和Windows上testing了这个设置,并且按照预期工作。 在tomcat 7下,我创build了设置为“VG_HOME = C:\ config”的setenv.sh/bat。 但是,启动应用程序时,cacheloader文件夹将在根目录(包括windows / linux)下创build,其名称为$ {env.VG_HOME}。 我怀疑xml中的location属性没有在setenv.sh/bat文件中看到env集合。 修正任何想法,意味着应用程序在使用Tomcat时在正确的位置创build文件夹。 谢谢!

外面不能连接到Tomcat9

我无法从外部连接到tomcat9(通过ip) 我禁用tcp6(添加到/etc/sysctl.conf)以下 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1 netstat -nlp输出: tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 7460/java tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 7460/java tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 7460/java tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1118/nginx server.xml连接器块: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" address="0.0.0.0" /> 我也尝试在server.xml中添加useIPVHosts =“true”到<Connector>并将resolveHosts =“true”添加到<Valve>块中,但仍然没有任何结果。 […]