我最近通过 apache solr Typ3 社区的安装脚本安装了 tomcat,并在过去的 3 天里试图弄清楚为什么它不起作用,直到偶然我注意到当我通过“ lsof -i”查询侦听端口的进程时,它被绑定到ipv6协议。
我到处搜索,大多数人说0.0.0.0在 tomcat 连接器中设置地址可以解决这个问题,其他人说设置JAVA_OPTS="-Djava.net.preferIPv4Stack=true".
我试过前者不起作用,但后者我不确定把它放在哪里。我在某处读到的一种解决方案建议将其放入,setenv.sh但在我的 tomcat 安装中找不到此文件。目前我将不胜感激。
tomcat 版本为 6.x,操作系统为 ubuntu 11.10。
谢谢
我使用 apt-get install tomcat6 在 Ubuntu 9.04 服务器上安装了 Tomcat6。我使用管理器界面上传了一个 WAR 并尝试启动应用程序,但在 Web 界面上收到一个非常普遍的错误,说它无法启动。
我试图找到日志以确定为什么我的战争不会开始(我怀疑内存不足,因为我在一个小型 VPS 上)但我不知道它们在哪里。
/var/lib/tomcat6/logs 是空的。我的 Tomcat 启动页面可靠地通知我以下内容;
Tomcat is installed with CATALINA_HOME in /usr/share/tomcat6
CATALINA_BASE in /var/lib/tomcat6,
following the rules from /usr/share/doc/tomcat6-common/RUNNING.txt.gz.
Run Code Online (Sandbox Code Playgroud)
更新
我试过跑步;
$ ps -ax
/usr/bin/jsvc -user tomcat6 -cp /usr/share/java/commons-daemon.jar:/usr/share/tomcat6/bin/bootstrap.jar -outfile SYSLOG -errfile SYSLOG -pidfile /var/run/tomcat6.pid
Run Code Online (Sandbox Code Playgroud)
但是 /var/log/syslog 中没有任何内容
也在运行
$ losof -p PID
没有显示任何日志文件...
$ for PID in $(pgrep jsvc);do sudo ls -l /proc/$PID/fd|grep ' 1 -> ';done
l-wx------ 1 root 500 64 2010-03-30 …Run Code Online (Sandbox Code Playgroud) 环境是 Ubuntu 10.04.1 LTS,运行来自 repos 的 Tomcat 6 和 Apache 2.2。Apache配置为将请求代理到Tomcat,所以我真的很想关闭Tomcat对外部IP地址的请求的监听。
我发现了如何使用连接器标记更改 /etc/tomcat6/server.xml 中的端口号,但这不是我需要的。
在 Ubuntu 10.04.3 LTS 上,安装 Tomcat 6 后,添加 manager/admin 帐户的方法是将这样的记录添加到/etc/tomcat6/tomcat-users.xml:
<role rolename="manager"/>
<role rolename="admin"/>
<user username="user" password="password" roles="manager,admin"/>
Run Code Online (Sandbox Code Playgroud)
该密码是明文形式,我对此感到不舒服。有没有办法改用散列之类的东西?如果您有非 Ubuntu 解决方案,我可能可以翻译它。
操作系统:Windows Server 2008,SP2(在 EC2 Amazon 上运行)。
使用 Apache httpd 和 tomcat 服务器 6.02 运行 Web 应用程序,并且 Web 服务器具有保持活动设置。
大约有 69,250 个(http 端口 80)+ 15000 个(端口 80 除外)处于 TIME_WAIT 状态的 TCP 连接(使用 netstat 和 tcpview)。即使停止 Web 服务器(等待 24 小时),这些连接似乎也没有关闭
性能监视器计数器:
HKEY_LOCAL_MACHINE\System \CurrentControlSet\Services\Tcpip\Parameters 没有 TcpTimedWaitDelay 键,所以值应该是默认值(2*MSL,4 分钟)
即使有数千个连接请求同时到来,为什么 Windows OS 最终无法清除它们?
这种情况背后的原因可能是什么?
有没有办法在不重新启动 Windows 操作系统的情况下强行关闭所有这些 TIME_WAIT 连接?
几天后,我们的应用程序停止接受任何新连接。
最近我将我的 tomcat 服务器从 6.x 版本升级到了最新的 7.x 版本。
我想出了一点麻烦,希望得到帮助。
我有一个应用程序调用 MyApp
在 tomcat6 上,当我访问http://www.example.com/MyApp/page/ 时, 我通常会得到想要的结果。
现在,在 tomcat7 上,访问相同的确切 url(带有尾部斜杠)我收到错误:“资源不可用”,因为 tomcat 认为 /MyApp/page/ 是一个完整的 webapp 名称而不是请求名称MyApp webapp 下的页面。
我需要在我的 url 末尾加上斜杠,否则我会收到错误:“HTTP 状态 405 - 不支持请求方法‘GET’”,这没关系,因为我真的不允许“页面”请求的 GET 方法.
如果有人知道如何告诉 tomcat 在现有 webapp 路径之后的斜杠不应该假设将它重定向到新的 webapp 调用整个“字符串”并像在 tomcat6 上那样处理请求,那就太好了!
我在 ubuntu 10 下以远程调试模式设置 Tomcat 变得很疯狂。基本上我将它添加到 /etc/init.d/tomcat6(在开始时):
JAVA_OPTS="-Djava.awt.headless=true -Xmx256M -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Run Code Online (Sandbox Code Playgroud)
但我看不到任何效果......实际上我看不到端口 8000 用 netstat -a 打开,Eclipse 远程调试器说它无法连接。如果我做 ps -A u| 我得到的 grep java:
tomcat6 9612 3.1 13.1 470560 154168 ? Sl 15:24 0:17 /usr/lib/jvm/java-6-sun/bin/java -Djava.util.logging.config.file=/var/lib/tomcat6/conf/logging.properties -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/share/tomcat6/endorsed -classpath /usr/share/tomcat6/bin/bootstrap.jar -Dcatalina.base=/var/lib/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.io.tmpdir=/tmp/tomcat6-tmp org.apache.catalina.startup.Bootstrap start
Run Code Online (Sandbox Code Playgroud)
请注意,它甚至没有设置堆大小(如果这有意义的话)。
所以有什么提示吗?
我在 Windows 服务器上安装了 Tomcat,但无法启动。我启动服务并看到进度条,但它失败了。
我安装了 Java 运行时环境版本 6 并创建了 JRE_HOME 环境变量。(C:\Program Files\Java\jre6)
以下是 jakarta_serviceYYYMMDD.log 条目:
[2010-04-08 14:22:42] [info] Commons Daemon procrun (1.0.2.0) started
[2010-04-08 14:22:42] [info] Running Service...
[2010-04-08 14:22:42] [info] Starting service...
[2010-04-08 14:22:42] [info] Error occurred during initialization of VM
[2010-04-08 14:22:42] [info] java/lang/NoClassDefFoundError
[2010-04-08 14:22:42] [info] : java/lang/Object
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我想通过常规网站 URL 运行 Tomcat 应用程序,例如www.xyz.com. 我希望此域的根目录充当 Web 应用程序的基本目录,因此每个请求都www.xyz.com/a/b/c变为www.abc.com:8080/myApp/a/b/c. 理想情况下,我将能够透明地执行此操作,并且仅适用于某些 Web 应用程序。
www.abc.com:8080 仍应响应请求。
我需要做什么才能实现这一点?
我目前正在https我们的生产环境中实施,但我在这里为一件小事而挠头。
SSL 在负载均衡器中终止,我们堆栈中的流程基本上是这样的:
生产:浏览器 <- https-> 负载均衡器 <- http-> Apache <- http-> 负载均衡器 <- http-> Tomcat
测试:浏览器 <- https-> nginx <- http-> 负载均衡器 <- http-> Tomcat
当我通过 HTTPS 访问我们的登录页面时:
请求头
POST /login/form HTTP/1.1
Host: www.example.org
Connection: keep-alive
Content-Length: 74
Cache-Control: max-age=0
Origin: https://www.example.org
Content-Type: application/x-www-form-urlencoded
Referer: https://www.example.org/login
Accept-Encoding: gzip,deflate,sdch
Accept-Language: nb,en-US;q=0.8,en;q=0.6
Run Code Online (Sandbox Code Playgroud)
响应头
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Fri, 17 Jan 2014 11:16:50 GMT
Content-Length: 0
Connection: keep-alive …Run Code Online (Sandbox Code Playgroud) tomcat6 ×10
tomcat ×6
ubuntu ×3
apache-2.2 ×2
amazon-ec2 ×1
https ×1
java ×1
localhost ×1
nginx ×1
scripting ×1
solr ×1
typo3 ×1
ubuntu-9.04 ×1
windows ×1
windows-xp ×1