Could not obtain connection to any of these urls:

本文介绍了解决JBoss远程访问异常的方法。当尝试从非本地主机访问JBoss部署的EJB时,可能会遇到连接拒绝错误。文章详细解释了如何通过修改JBoss启动参数来允许来自特定或任意IP地址的远程请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误:
Exception in thread "main" javax.naming.CommunicationException: Could not obtain connection to any of these urls: 192.168.17.105:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server /192.168.17.105:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server /192.168.17.105:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]]
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1725)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:689)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:682)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at test.Client.main(Client.java:29)
处理:
在本文中将编写一个简单的无状态SessionBean。在发布EJB时,一般需要将EJB程序以jar文件的形式进行发布。这些jar文件将被放在<JBoss安装目录>/server/default/deploy目录中。如果在Eclipse中开发EJB程序,需要进行一些配置。首选需要在首选项(Preferences)对话框中设置JBoss的安装目录(如D:/jboss5)。然后在运行配置对话框中添加jboss的运行项。在jboss4.2及以后的版本中,默认情况下jboss只接收来自localhost或127.0.0.1的请求,也就是只接收本地的访问。为了使jboss接收来自其他地址的请求,在启动jboss时需要使用-b命令行参数进行设置。如下面的启动命令所示:

run.bat -b 200.200.200.123
run.bat -b 
0.0.0.0


    上面的第一行命令表示jboss可以接收来自200.200.200.123的请求。第二条命令表示jboss可以接收来自任意地址的请求。如果不设置-b参数,以非本机方式访问EJB时,JBoss会抛出如上异常:

### 数据库连接问题分析 当遇到无法创建到数据库服务器的连接时,可能涉及多种原因。以下是针对不同情况的具体解决方案: #### 1. **SQL Server 连接问题** 如果当前尝试建立与 SQL Server 的连接失败,则可能是由于网络配置、驱动程序兼容性或身份验证设置不正确引起的[^1]。建议执行以下操作: - 验证目标 SQL Server 是否正在运行并接受远程连接。 - 检查防火墙规则是否允许客户端访问指定端口(默认为 1433)。 - 使用正确的用户名和密码进行登录测试。 ```sql -- 测试SQL Server连接状态 SELECT @@VERSION; GO ``` #### 2. **Oracle 客户端软件错误** 对于 `oraoledb.oracle` 和 `Error 7311` 错误消息表明未能成功获取来自 OLE DB 提供商模式行集的情况[^2]。可以采取如下措施来解决问题: - 确认已安装最新版 Oracle 客户端组件,并匹配操作系统架构(即 x86 或 x64)。 - 设置环境变量 TNS_ADMIN 到 tnsnames.ora 文件所在目录路径下。 ```cmd :: 设置TNS_ADMIN环境变量 set TNS_ADMIN=C:\oracle\product\instantclient_19_8\network\admin tnsping ORCL ``` #### 3. **MySQL InnoDB 锁定文件冲突** 关于 MySQL 中出现 “InnoDB: Unable to lock ./ibdata1, error: 11”,通常意味着另一个进程已经占用了该共享表空间文件[^3]。处理方式包括但不限于以下几个方面: - 停止所有其他实例的服务后再启动新的服务; - 修改 my.cnf/my.ini 配置文件中的 datadir 参数指向不同的存储位置; ```ini # 调整my.cnf配置示例 [mysqld] datadir=/var/lib/mysql_new/ innodb_data_home_dir= innodb_log_group_home_dir= ``` #### 4. **MySQL 版本过旧引发的功能缺失** 提到远端机器上的 MySQL 版本较低 (5.7.x),而某些特性仅支持更高版本(如8.0+)的情形[^4]。此时应考虑升级至较新稳定发行版以获得更好的性能表现以及新增功能的支持度。具体步骤参见官方文档指南完成迁移过程即可。 ```bash # Linux平台更新yum源命令样例 sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum update mysql-server service mysqld restart mysql_upgrade -u root -p ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值