我希望能够从我的 tomcat webapps 文件夹访问一个文件夹,以便我可以给某人一个 URL,如:
http://localhost:8080/myFolder/myFile.f
在网络浏览器中,如果他们指向这个,他们应该开始下载文件。
但实际上,当我尝试指向此位置时,会收到 404 错误。
我该如何解决或绕过它。
我正在 Tomcat 服务器中安装 SSL 证书,但无法在我的密钥库文件中找到密钥条目。
如果我不指定keyAlias="mykey"它会显示以下错误消息:
javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
Run Code Online (Sandbox Code Playgroud)
正如我在 Tomcat 文档http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html#Troubleshooting上看到的那样,它告诉我指定keyAlias.
但是,当我这样做时,我收到以下错误消息:
java.io.IOException: Alias name mykey does not identify a key entry
Run Code Online (Sandbox Code Playgroud)
如果 I keytool -list -keystore .keystore -v,我会得到三个关键条目,两个来自证书公司,最后一个:
Alias name: mykey
Creation date: Dec 17, 2011
Entry type: trustedCertEntry
Run Code Online (Sandbox Code Playgroud)
也就是key的入口在那里,但是Tomcat找不到。该keystoreFile修正设置为密钥存储文件。
它可以是什么?
我买了一个 1gb 内存的虚拟服务器来运行 java 网站应用程序。我已经安装了 Tomcat 6.0.33 。每次我运行 tomcat 时,它都会占用大约 450 mb 的内存。
我尝试了一切来减少它,我将 CATALINA_OPS 设置为
export CATALINA_OPTS="-Xms256m -Xmx256m"
Run Code Online (Sandbox Code Playgroud)
我已经创建了 set setenv.sh 文件,你把它放进去:
JAVA_HOME="/usr/local/java"
export JAVA_HOME
JAVA_OPTS="-Xmx256m -Xms256m"
export JAVA_OPTS
CATALINA_HOME="/usr/local/tomcat"
export CATALINA_HOME
Run Code Online (Sandbox Code Playgroud)
当我通过此命令时: ps -ef | 我有 grep tomcat:
root 3150 1 5 15:32 pts/0 00:00:18 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Xmx256m -Xms256m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms256m -Xmx256m -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 3217 2041 0 15:37 pts/0 00:00:00 grep tomcat
Run Code Online (Sandbox Code Playgroud)
这表明我的参数确实被使用了。
有没有什么方法可以减少tomcat消耗的内存?谢谢你。
我有几个 Tomcat 服务器,在 NetScaler 负载平衡器后面,它执行 SSL 卸载。我已将以下行添加到所有服务器的 server.xml 中:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for" protocolHeader="x-forwarded-proto" />
Run Code Online (Sandbox Code Playgroud)
这适用于除 2 个(相同)服务器之外的所有服务器。我正在努力让它在这两个上工作。
我已经嗅探了流量,它包含x-forwarded-proto标头,其值为https,应该是。的返回结果request.getHeader("x-forwarded-proto")是https。然而,request.getScheme()返回http并request.isSecure()返回false。
我怎样才能让 remoteIpValve 工作?
谢谢。
我正在使用 apache bench 为在 tomcat 上运行的 java 应用程序运行一些基准测试。
说我运行一个测试,如:
ab -c 10 -n 10000 http://localhost:8080/hello/world
Run Code Online (Sandbox Code Playgroud)
它会运行得很好。如果我遵循它:
ab -c 50 -n 50000 http://localhost:8080/hello/world
Run Code Online (Sandbox Code Playgroud)
再次它会运行良好,但如果我再试一次,它可能会在 3500 个完成的请求后开始变慢。
我需要帮助来尝试调试此问题的根本原因。
我跑到了上面,我有一些未使用的内存,所以内存似乎不是问题。
tomcat6 进程确实达到了 70-80 甚至 107%。
似乎重新启动 tomcat 可以解决问题,但有时需要重新启动服务器。
这是在分配了 200 个线程的默认 tomcat 安装上。
Tomcat 日志为空。
更新
因此,我将 tcp_tw_recycle/reuse 都更改为 1,并且现在运行 netstat 显示的计数非常低。
在更改 tcp_tw_recycle/reuse 之前,我注意到事情变慢并运行 netstat 并且我有 32400 个 tcp TIME_WAIT 连接。
所以现在运行基准测试的更新,使用 -k 开关,我看到了更多的吞吐量。但是,在某些时候事情又开始变慢了,但是现在重新启动 tomcat 使事情恢复正常。之前,即使我重新启动tomcat,运行ab 的响应时间也会非常非常慢。 现在更改 tcp_tw_recycle/reuse 后,重新启动 tomcat 使事情恢复正常。运行 top 显示只有大约 20% 的 cpu 的 tomcat,所以现在看来问题出在 tomcat 上,但我怎么知道是什么?
我不使用 AJP 进行负载平衡;我有一个单一的Apache 2.2实例代理某些URL的单一通过AJP的Tomcat 7的实例。
当 Tomcat 关闭时,AJP 代理在第一个失败的请求时被禁用,并且在 Tomcat 恢复时不会重新启用。
是否可以指示 Apache不禁用AJP 连接,即使后端已关闭,以便代理在后端重新联机时开始工作?
这是我的 httpd.conf 的摘录:
ProxyPass /my-web-app ajp://localhost:8009/my-we-app-1.0.2
Run Code Online (Sandbox Code Playgroud)
这是后端关闭时的日志文件:
[error] (OS 10061)No connection could be made because the target machine actively refused it.
[error] ap_proxy_connect_backend disabling worker for (localhost)
[error] proxy: AJP: failed to make connection to backend: localhost
Run Code Online (Sandbox Code Playgroud) 在我的 HAProxy 负载均衡器中,我有以下配置块:
defaults
mode http
log global
option httplog clf
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
frontend main_http *:80
option forwardfor except 127.0.0.1
option httpclose
default_backend backend_http
backend backend_http
balance roundrobin
option httpchk
server node1 10.0.0.64:80 check port 80
server node2 10.0.0.65:80 check port 80
server node3 10.0.0.66:80 check port 80
Run Code Online (Sandbox Code Playgroud)
在节点 (Tomcat) 上,我以这种格式记录请求(与第一个字段中的 x-forwarded-for 和真正的 REMOTE_ADDR 相结合):
pattern='%{X-Forwarded-For}i - %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i" %a'
Run Code Online (Sandbox Code Playgroud)
这似乎适用于大多数请求,但在某些情况下,我假设客户端位于代理后面,我看到第一个字段包含这些值的请求(每行代表一个真实请求,我破坏了真实 IP隐私):
10.83.103.44, 10.83.103.44
10.83.198.52, 10.83.198.52
10.53.109.36, …Run Code Online (Sandbox Code Playgroud) 我在 CentOS 上安装了tomcat5。配置为仅从 127.0.0.1 侦听。如何配置 Tomcat 以侦听所有接口。
连接器端口配置如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
address="0.0.0.0"
redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud) 我在停止和启动 tomcat6(来自 repos 的包)时遇到了这个问题。我见过几个 CentOS 6 和 RHEL 6 机器。
症状是当我想重新启动或停止 tomcat6 时,它只是失败了。这似乎只有在运行一段时间后才会发生。我有一个全新的 CentOS 6 安装并且能够重新启动它,但现在不能了。
这是我看到的:
# service tomcat6 restart
Stopping tomcat6: [FAILED]
Starting tomcat6: [FAILED]
Run Code Online (Sandbox Code Playgroud)
当我尝试通过时/usr/sbin/tomcat6:
# /usr/sbin/tomcat6 stop
/usr/sbin/tomcat6: line 60: /logs/catalina.out: No such file or directory
Run Code Online (Sandbox Code Playgroud)
和输出/var/log/tomcat6/catalina.out:
Oct 22, 2012 4:53:31 PM 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:327)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
at java.net.Socket.connect(Socket.java:546)
at java.net.Socket.connect(Socket.java:495)
at java.net.Socket.<init>(Socket.java:392)
at java.net.Socket.<init>(Socket.java:206)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:424)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native …Run Code Online (Sandbox Code Playgroud) 我首先在 StackOverflow 上问了这个问题,但似乎这个网站更合适。
我正在设置一个 Web 应用程序环境来运行 Java 应用程序。环境应该是:
我启动了 EC2 实例并安装了 java,然后按照本指南设置 Tomcat: https: //www.digitalocean.com/community/tutorials/install-tomcat-9-ubuntu-1804
systemctl现在,当尝试启动/重新启动 Tomcat 服务时,问题就会出现。这是我在检查 systemctl 日志时看到的内容:
12 月 19 日 13:35:25 ip-10-165-10-74 systemd[1]: tomcat.service: 服务延迟时间结束,计划重新启动。 12 月 19 日 13:35:25 ip-10-165-10-74 systemd[1]: tomcat.service: 计划重启作业,重启计数器为 5。 12 月 19 日 13:35:25 ip-10-165-10-74 systemd[1]:已停止 Apache Tomcat Web 应用程序容器。 12 月 19 日 13:35:25 ip-10-165-10-74 systemd[1]:启动 Apache Tomcat Web 应用程序容器... 12 月 19 日 13:35:25 ip-10-165-10-74startup.sh[1705]:Tomcat 已启动。 12 月 19 日 13:35:25 …