Tag: tomcat

与jpa和eclipselink的jndi数据库连接

我尝试在Java中使用JNDI在Tomcat 5.5上结合eclipseLink / JPA设置数据库连接。 我已经在web.xml和context.xml中配置了JNDI资源。 数据库连接与JNDI一起使用,而不使用JPA和eclipseLink。 在为eclipseLink配置persistence.xml之后,我得到了以下exception。 我不知道如何正确配置persistence.xml以使用JNDI数据源进行数据库连接。 例外 WicketMessage: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at component [MarkupContainer [Component id = loginForm]] threw an exception Root cause: javax.naming.NamingException: This context must be accessed throught a java: URL at org.apache.naming.SelectorContext.parseName(SelectorContext.java:686) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:121) at javax.naming.InitialContext.lookup(InitialContext.java:396) at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:110) at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:94) at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:16 2) at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(Datab aseSessionImpl.java:579) at […]

什么可以导致TCP / IP丢弃数据包而不丢弃连接?

我有一个基于Web的应用程序和一个客户端,都是用Java编写的。 对于它的价值,客户端和服务器都在Windows上。 客户端通过Apache HttpClient发出HTTP GET。 服务器阻塞最多一分钟,如果在该分钟内没有消息到达客户端,则服务器返回HTTP 204 No Content。 否则,只要为客户端准备好消息,就会返回HTTP 200正文的正文。 这让我感到困惑:间歇性地为特定的客户端子集 – 总是客户端具有明显不稳定的网络连接 – 客户端发出GET,服务器接收并处理GET,但客户端永远坐着。 启用客户端的调试日志,我看到HttpClient仍在等待响应的第一行。 服务器上没有抛出exception,至少没有任何记录,不是由Tomcat,而是由我的webapp。 根据调试日志,服务器成功响应客户端的每一个迹象都表明。 但是,客户没有显示收到任何东西的迹象。 客户端无限期挂起在HttpClient.executeMethod中 。 在会话超时并且客户端采取导致另一个线程发出HTTP POST的操作后,这变得很明显。 当然,POST失败,因为会话已过期。 在某些情况下,会话到期和客户端发出POST并发现此事实之间已经过了几个小时 。 在整个时间里, executeMethod仍在等待HTTP响应行。 当我使用WireShark查看线路级别的实际情况时,不会发生此故障。 也就是说,对于特定客户端,这种故障将在几个小时内发生,但是当WireShark在两端运行时,这些相同的客户端将在一夜之间运行14小时,而不会出现故障。 还有其他人遇到过这样的事吗? 世界上有什么可以导致它? 我认为即使在短期网络故障中,TCP / IP也可以保证数据包传输。 如果我设置SO_TIMEOUT并在超时后立即重试请求,则重试始终成功。 (当然,我首先中止超时请求并释放连接以确保将使用新的套接字。) 思考? 想法? 是否有一些TCP / IP设置可用于Java或Windows中的注册表设置,以便在丢失的数据包上启用更积极的TCP / IP重试?

在Jetty和Tomcat中运行Web应用程序

我有一个网络应用程序,我在Tomcat上运行生产。 它使用MySQL连接器,但它没有与war捆绑在一起,而是包含在Tomcat的公共lib目录下,因此我可以通过JNDI访问数据源。 我想做一些与Jetty(开发时)类似的东西,更确切地说是Jetty + Maven。 有没有办法让我在通过Maven运行Jetty时在类路径中包含mysql-connector jar(即没有将它捆绑在war文件中)? 另外我应该注意到我在构建过程中使用Maven并将mysql-connector指定为“提供”范围。

java.net.SocketException:管道损坏

我每天都会收到此错误或我的jsp页面: java.net.SocketException 消息:管道破裂 堆栈跟踪: java.net.SocketException: Broken pipe at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) at java.net.SocketOutputStream.write(SocketOutputStream.java:136) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2637) …. 重新启动tomcat服务后,它工作正常。 (我使用hibernate连接到mysql数据库)

如何使用Eclipse调试servlet

有一个servlet,它可以在TomCat内运行。 但是,我不确定如何在Eclipse(Java标准版)中调试它。 有什么建议么?

SSLContext.getInstance(“TLS”)是否也支持TLS v1.1和TLS v1.2?

在我的java代码中,我正在使用命令创建一个SSL Context实例 SSLContext ctx = SSLContext.getInstance(“TLS”); 但在我的tomcat服务器中,我正在设置TLSv1.2并且我收到握手错误。 我们如何使用这种方法支持所有TLS协议,就像在cpp中一样,我们有SSLV23客户端方法,它将支持所有协议。

如何识别JNI全局引用内存泄漏的原因?

我正在使用Tomcat,在停止我的Web应用程序之后,仍然会引用我的Web应用程序的类加载器实例。 结果是不会释放大量的内存(主要与静态数据相关)。 迟早会导致OutOfMemoryError 。 我进行了heap dump ,我意识到它由JNI全局引用保存 , 可以防止类加载器被垃圾回收 。 我的应用程序不使用JNI 。 我也没有使用Apache Tomcat Native Library 。 我正在使用Sun / Oracle JDK。 我想跟踪这个全球参考的原因/来源。 (我的猜测是JVM内部引用了类加载器 – 但是为什么/在哪里?)。 题: 有哪些方法/工具集可以实现这一目标? UPDATE 似乎bestsss是正确的,jvm调试模式引入了JNI全局引用。 这帮助了我,但它没有回答这个问题所以我仍然很想回答一个可能对将来有帮助的问题。

如何使用eclipse调试JSP tomcat服务?

我想使用Eclipse IDE调试器调试我单独运行的JSP / Struts / Tomcat / Hibernate应用程序堆栈。 如何设置java JVM和eclipse以便我可以设置断点,监视变量值,并查看当前正在执行的代码?

Tomcat 6:如何在Web方法调用结束后删除临时文件?

我有一个临时文件,其中包含通过MTOM二进制附件作为SOAP响应的一部分返回的数据。 一旦方法调用“结束”(即完成转移),我想将其丢弃。 这对我来说最好的方法是什么? 我可以弄清楚如何执行此操作的最佳方法是在会话被销毁时删除它们,但我不确定是否有更“直接”的方法来执行此操作。 仅供参考,我不使用Axis,我正在使用jax-ws,如果这很重要的话。 更新:我不确定答案者是否真的理解这个问题。 我知道如何删除java中的文件。 我的问题是: @javax.jws.WebService public class MyWebService { … @javax.jws.WebMethod public MyFileResult getSomeObject() { File mytempfile = new File(“tempfile.txt”); MyFileResult result = new MyFileResult(); result.setFile(mytempfile); // sets mytempfile as MTOM attachment // mytempfile.delete() iS WRONG // can’t delete mytempfile because it hasn’t been returned to the web service client // […]

第三方库在Tomcat中的最佳实践

我现在使用Tomcat来托管我的Java Web和Web Service应用程序很长一段时间。 主要用于Spring和Grails应用程序。 最近,在一个项目中,讨论了如何处理Tomcat生产环境中的依赖项/库: 在我的项目中,我正在部署大型WAR文件 ,其中包含WEB-INF / lib文件夹中应用程序的所有必需依赖项。 我在tomcat / lib文件夹中放置的唯一内容是由tomcat管理的JDBC连接的JAR文件。 客户与WebSphere有着悠久的历史,并认为容器应该包含大部分所需的依赖项。 因此,他们希望将已使用的框架或WebService API(如Metro)的JAR文件放在tomcat / lib文件夹中,并具有瘦的WAR文件 。 我认为该解决方案的问题在于,如果您的应用程序需要已包含在tomcat / lib文件夹中的其他版本的依赖项,则可能会出现错误和奇怪的行为。 是否有一些最佳实践或官方文件谈论这个问题? 你对此有何看法?