标签: tomcat

如何从Tomcat webapps文件夹访问一个简单的文件或文件夹

我希望能够从我的 tomcat webapps 文件夹访问一个文件夹,以便我可以给某人一个 URL,如:

http://localhost:8080/myFolder/myFile.f

在网络浏览器中,如果他们指向这个,他们应该开始下载文件。

但实际上,当我尝试指向此位置时,会收到 404 错误。

我该如何解决或绕过它。

tomcat tomcat6

7
推荐指数
2
解决办法
7万
查看次数

Tomcat 无法在密钥库中找到密钥条目

我正在 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修正设置为密钥存储文件。

它可以是什么?

ssl tomcat https

7
推荐指数
1
解决办法
2万
查看次数

如何减少Tomcat使用的内存?

我买了一个 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 centos tomcat6

6
推荐指数
1
解决办法
1万
查看次数

RemoteIpValve 没有完成它的工作

我有几个 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()返回httprequest.isSecure()返回false

我怎样才能让 remoteIpValve 工作?

谢谢。

ssl tomcat

6
推荐指数
1
解决办法
4325
查看次数

使用 ab 运行一些基准测试,tomcat 开始真的变慢了

我正在使用 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 上,但我怎么知道是什么?

ubuntu tomcat java

6
推荐指数
1
解决办法
1628
查看次数

如何重新激活禁用的 Apache 2.2 AJP 连接?

我不使用 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)

tomcat ajp mod-proxy-ajp apache-2.2

6
推荐指数
1
解决办法
2万
查看次数

在 haproxy 中覆盖 X-Forwarded-For 标头?

在我的 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)

tomcat haproxy x-forwarded-for

6
推荐指数
1
解决办法
1万
查看次数

需要配置Tomcat5来监听所有接口

我在 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)

tomcat

6
推荐指数
1
解决办法
2万
查看次数

CentOS 6 上的 tomcat6:无法停止/重启服务

我在停止和启动 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)

tomcat tomcat6 centos6

6
推荐指数
2
解决办法
3万
查看次数

systemctl 启动后立即停止 Tomcat 服务

我首先在 StackOverflow 上问了这个问题,但似乎这个网站更合适。

我正在设置一个 Web 应用程序环境来运行 Java 应用程序。环境应该是:

  • AWS EC2 Ubuntu 18
  • 爪哇8
  • 雄猫9

我启动了 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 …

linux ubuntu tomcat amazon-web-services systemctl

6
推荐指数
1
解决办法
2万
查看次数