【问题标题】:Diagnosing an EclipseLink connection delay?诊断 EclipseLink 连接延迟?
【发布时间】:2012-04-10 10:37:49
【问题描述】:

我正在使用 GlassFish 3.1.2 服务器,并且我的 Web 应用程序使用 EclipseLink 3.1.2 作为 JPA 提供程序。 GlassFish 在本地运行,MySQL 服务器在远程。

问题是,当我启动服务器时,服务器挂了很长时间,日志中的最后一行是以下行。

[#|2012-03-26T14:37:31.765-0700|INFO|glassfish3.1.2|org.eclipse.persistence.session.file:/Users/alan/NetBeansProjects/MyApp/target/MyApp/WEB-INF/classes/_com.myapp|_ThreadID=10;_ThreadName=Thread-3;|EclipseLink, version: Eclipse Persistence Services - 2.3.2.v20111125-r10461|#]

在这里等待2-3分钟后,它通常会继续,然后一切正常。我的网络应用程序以我期望的方式使用数据库。

如果 NetBeans 尝试启动服务器,它通常会超时,认为启动失败。如果我使用 asadmin 命令启动域,它会花费相同的时间,但它会成功。

我家有一个相同的系统,它连接到不这样做的同一个 MySQL 服务器。

那么我如何告诉 EclipseLink 告诉我更多关于它在等待什么的信息?

更新:

这是我的 persistence.xml 文件——没什么了不起的。是否有 EclipseLink 特定的命令可以提供帮助?

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="com.myapp" transaction-type="JTA">
    <jta-data-source>jdbc/MyApp</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
</persistence-unit>

【问题讨论】:

  • 最后记录的行之前延迟一定不是原因。也许日志条目延迟之后是原因。

标签: eclipselink glassfish-3


【解决方案1】:

如果您在 Windows 上运行 kill 或 ctrl break,Java 应该转储当前线程,这样您就可以看到它在等待什么。或者在调试器中暂停线程。

包括您的 persistence.xml。检查您的连接池的大小,以及您的网络是否可以正确访问您的数据库。你的 jar 文件中有多少个类?您是否尝试过禁用编织或列出类?

【讨论】:

  • 添加了评论。我没有使用 Windows,但 MacOS 将允许我发送信号以查看是否可以获得线程转储。感谢您的建议。
猜你喜欢
  • 2012-01-19
  • 2023-02-14
  • 1970-01-01
  • 2011-11-03
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多