hibernate throws exception:session is currently disconnected

解决WebLogic连接池问题
本文描述了一个关于WebLogic连接池中出现Sessioniscurrentlydisconnected错误的问题,该问题导致客户端操作失败。作者通过排查网络、代码及服务器状态等方式未找到原因,最终怀疑可能由木马引起。
:) 系统已经运行4年,框架为strtus1.2 + hibernate2.0 + weblogic812 + oracle817, 并利用了weblogic的连接池.
最近在weblogic的日志中开始濒繁的出现"Session is currently disconnected",每当出现这个错误的时候就必然会导致客户端的操作失败,但当没有打印这个错误的时候操作是成功的,就说明连接池的connection有些是null有些不是null,根据提示的错误分析,并翻阅了hibernate的源码,发现session中的connection=null会报这个错误.
这个时候开始怀疑是否网络的间歇的经常的中断导致,仔细分析后给排除;
在怀疑代码的问题,仔细分析后还是排除;
服务器是否有病毒,还是排除;
.....,在排除一系列的问题后,上网搜查很少有这类问题的描述,即使有,也不是同一个原因产生的,然后利用google,在hibernate.org的论坛上有人提示:
if (!hsession.isConnected())
hsession.reconnect();
在最初看了这段代码的时候,就发现如果在一个事务的中间过程发生connection=null,在利用该代码就会在一个事务中产生两个及以上connection,就会导致成个事务的操作失败,不可取.

还有一个重要的现象就是周末两天当访问的人不是很多的时候没有这个错误产生,加之联想到以前发生的一些事情给了些许启发(以前做过一套系统,有客户端一访问就会导致tomcat服务器停止工作,但有的客户端就没有问题,在对有问题的客户端杀毒后,该问题解决),就开始怀疑是不是有木马?同时今天联想到可以利用程序不断的访问weblogic的连接池,看什么时候会有connection=null,这个时候根据日志去抓取导致产生这个错误的电脑.
希望高手可以指点迷津!!
在 Java 中出现 `org.openqa.selenium.SessionNotCreatedException: session not created: cannot connect to chrome at 127.0.0.1:9222` 错误,可尝试以下解决办法: ### 版本兼容性 确保 ChromeDriver 版本与 Chrome 浏览器版本兼容。若版本不匹配,会出现如 `org.openqa.selenium.WebDriverException: unknown error: cannot connect to chrome at 127.0.0.1:1100 from session not created: This version of ChromeDriver only supports Chrome version 110 Current browser version is 112.0.5615.138` 这样的错误[^1]。可前往 ChromeDriver 下载页面(https://chromedriver.storage.googleapis.com/index.html ),下载与浏览器版本兼容的 ChromeDriver。 ### 配置 ChromeDriver 路径 确保 ChromeDriver 的路径已正确配置。可以通过 `System.setProperty` 方法设置 ChromeDriver 的路径,示例代码如下: ```java import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ChromeDriverExample { public static void main(String[] args) { // 设置 ChromeDriver 的路径 System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); // 打开网页 driver.get("https://www.example.com"); // 关闭浏览器 driver.quit(); } } ``` ### 检查浏览器实例 确保没有其他 Chrome 浏览器实例正在运行,或者 WebDriver 正在尝试连接到一个已存在的浏览器实例。可关闭所有 Chrome 浏览器窗口,然后重新运行脚本。 ### 安全软件检查 防火墙、杀毒软件或其他安全软件可能阻止了 WebDriver 的正常运行。需检查安全软件设置,确保其没有阻止 WebDriver 的执行。 ### 端口占用问题 `127.0.0.1:9222` 端口可能被其他程序占用,导致无法连接。可通过命令查看端口占用情况,若端口被占用,可结束占用该端口的进程,或者更改 Chrome 的远程调试端口。以下是更改端口的 Java 代码示例: ```java import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import java.io.IOException; public class ChromeDriverWithCustomPort { public static void main(String[] args) throws IOException { // 启动 Chrome 并指定远程调试端口 Runtime.getRuntime().exec("cmd /c start chrome.exe --remote-debugging-port=9223"); // 设置 ChromeDriver 的路径 System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); // 配置 ChromeOptions ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("debuggerAddress", "127.0.0.1:9223"); // 创建 ChromeDriver 实例 WebDriver driver = new ChromeDriver(options); // 打开网页 driver.get("https://www.example.com"); // 关闭浏览器 driver.quit(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值