在此页面上:http : //tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html描述了如何为 DataSource 资源设置 JNDI 名称。它告诉您 Tomcat 的标准数据源工厂是 org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory,但是在 Fedora 17 上安装 Tomcat 后,我搜索了系统上的每个 jar 文件,但找不到包含此类的文件。
它在哪里?
我正在为一个拥有大约 20 台 Windows XP PC 的小型非营利组织做一些系统管理员工作。我正在执行标准维护以及其他一些工作。我对 java 7 感到困惑。为了一致性起见,我宁愿每个系统上只有一个版本的 java。如果我在所有系统上安装 java 7 并删除 java 6,基于 java 6 的 java 应用程序是否仍然有效?java 7 可能会导致任何问题吗?
在我的 VPS (CentOS) 4GB ram(2 + 2 需要时动态分配)上,我让 tomcat 运行以下选项 JAVA_OPTS="-Xms256m -Xmx2048m -XX:MaxPermSize=256m"。
现在,当我尝试启动其他基于 Java 的应用程序(如 hudson 服务器)时,出现以下错误:
没有足够的内存供 Java 运行时环境继续使用。 本机内存分配 (malloc) 未能为 Chunk::new 分配 664080 字节 包含更多信息的错误报告文件保存为: /server/hs_err_pid26476.log
似乎系统无法分配 650KB 的内存,但它应该有 1.2 GB 的空闲空间。
自由 -m
缓存的已用空闲共享缓冲区总数
内存:4096 2816 1279 0 0 0
-/+ 缓冲区/缓存:2816 1279
交换:0 0 0
我发现在某个地方我还应该检查 /proc/user_beancounters,它在 privvmpages 上显示了 failcnt。我不知道这意味着什么(提供商是否按预期提供了 4GB 内存?还是他在作弊?)
# cat /proc/user_beancounters
版本:2.5
uid 资源持有 maxheld 屏障限制 failcnt
70692271:kmemsize 15371949 15388993 41943040 46137344 0
锁定页面 0 0 1024 1024 0
privvmpages … 当我们将 Domino 开发服务器从 8.5.3 升级到 9 时,从 Java 代码到具有GoDaddy证书的站点的 HTTPS 连接停止工作。与具有DigiCert证书的服务器的连接工作正常。这发生在代理和 XPage 中。
这是一个 XPage 示例代码:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.beforePageLoad>
<![CDATA[#{javascript:new java.net.URL("https://www.sslshopper.com/").openStream();]]>
</xp:this.beforePageLoad>
</xp:view>
Run Code Online (Sandbox Code Playgroud)
我也试过UrlConnection。这是例外:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: 3659
com.ibm.jsse2.o.a(o.java:15)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:460)
com.ibm.jsse2.kb.a(kb.java:294)
com.ibm.jsse2.kb.a(kb.java:533)
com.ibm.jsse2.lb.a(lb.java:55)
com.ibm.jsse2.lb.a(lb.java:581)
com.ibm.jsse2.kb.s(kb.java:11)
com.ibm.jsse2.kb.a(kb.java:394)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:44)
com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:496)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:528)
com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:505)
com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:83)
com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:31)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184)
com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:40)
java.net.URL.openStream(URL.java:1022)
Run Code Online (Sandbox Code Playgroud)
...
java.security.cert.CertificateException: 3659
com.ibm.domino.napi.ssl.DominoX509TrustManager.checkServerTrusted(DominoX509TrustManager.java:98)
com.ibm.jsse2.lb.a(lb.java:468)
com.ibm.jsse2.lb.a(lb.java:581)
com.ibm.jsse2.kb.s(kb.java:11)
com.ibm.jsse2.kb.a(kb.java:394)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:44)
com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:496)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:528)
com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:505)
com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:83)
com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:31)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184)
com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:40)
java.net.URL.openStream(URL.java:1022)
Run Code Online (Sandbox Code Playgroud)
我根据以下说明将 GoDaddy 证书导入到 domino_path\jvm\lib\security\cacerts 密钥库:
http://drcs.ca/blog/adding-godaddy-intermediate-certificates-to-java-jdk/
但这并没有帮助,我还导入了gd-class2-root.crt 却没有结果。我还尝试重命名 …
我已经安装了 JDK 7 和 tomcat 7 并设置了以下环境变量:
PATH: ......C:\Progra~1\Java\jdk1.7.0_51;F:\apache-tomcat-7.0.52-windows-x86\apache-tomcat-7.0.52\bin;
CATALINA_HOME: F:\apache-tomcat-7.0.52-windows-x86\apache-tomcat-7.0.52;
JAVA_HOME: C:\Progra~1\Java\jdk1.7.0_51;
JRE_HOME: C:\Progra~1\Java\jre7;
Run Code Online (Sandbox Code Playgroud)
当我尝试运行命令时catalina.bat,它会引发以下错误:
The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program.
Run Code Online (Sandbox Code Playgroud)
执行命令时setclasspath.bat,它抛出以下错误:
The JRE_HOME environment variable is not defined correctly
This environment variable is needed to run this program.
Run Code Online (Sandbox Code Playgroud)
当我尝试执行命令时service.bat,错误是:
The tomcat7.exe was not found...
The CATALINA_HOME environment variable is not defined correctly.
This environment variable is needed to run this program". …Run Code Online (Sandbox Code Playgroud) 我正在运行带有 Tomcat 和一个 Web 应用程序的 CentOS 6.5 64 位操作系统。我使用 Apache (httpd) 作为应用程序的反向代理 (ProxyPass)。直到最近,它 (Tomcat) 一直运行良好,没有崩溃。最近,我向 http 服务器添加了一个 Joomla 站点和 PHP(显然)。在那之后不久,我开始让 Tomcat 崩溃。
当它崩溃时,Tomcat 不会在Catalina.out. 我终于在/var/log/messages. 我希望有人可以粗略地看一下并指出我正确的方向:
============
Jul 23 01:19:31 myservername kernel: httpd invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Jul 23 01:19:31 myservername kernel: httpd cpuset=/ mems_allowed=0
Jul 23 01:19:31 myservername kernel: Pid: 6104, comm: httpd Not tainted
2.6.32-431.1.2.0.1.el6.x86_64 #1
Jul 23 01:19:31 myservername kernel: Call Trace:
Jul 23 01:19:31 myservername kernel: [<ffffffff810d05c1>] ? cpuset_print_task_mems_allowed+0x91/0xb0
Jul …Run Code Online (Sandbox Code Playgroud) 我们有一个运行各种无头应用程序的服务器,例如 Java。它处理流数据、日常 python 脚本等。我们的一些应用程序有时会收到out of memory errors.
我们遇到的问题是监控显示内存充足。我们把它从128GB升级到192GB,但并没有解决问题。我们的监控每 20 秒读取一次读数,并显示过去 2 天内的最小可用内存为 132GB。但今天早上我们发现一些应用程序因内存不足错误而失败。内存充足的情况下是否有可能发生 OOM?
编辑:回答大卫的问题
我想补充一点,多个进程同时失败。对我来说,这表明这不是流程本身的问题,而是与系统有关。一些失败的应用程序每天都在做同样的事情,即处理相当一致的数据流。他们不可能被大量的请求淹没。
我开始从事 Java Web 开发,然后我想问一下,最好的服务器是什么,例如 Apache Tomcat、Resin 等。请记住,我使用的是 Linux Ubuntu。谢谢!
安装 Tomcat 6(最新版本)时,它要求提供 Java 安装目录,这很公平。但它似乎想要 Java 版本 5,Sun 显然已经停止使用该版本,因此对于我们的环境来说,这不是一件好事。
这是它的提示,你可以看到它要求版本 5.0:

我想我要问的是,我可以针对 Java 6 运行它吗?我查看了 tomcat 网站,没有提到兼容的 java 版本。
非常感谢
是否可以在 Linux(特别是 RH 7.x)上安装 JDK,使其仅存在于特定用户的空间中?