2009-09-15 81 views
2

将一堆数据库从sql server 2000移到2008.其中一个 应用程序位于JBoss 3.2.2上,现在无法连接到 数据库。特别的错误是“传入的表格数据流 (TDS)远程过程调用(RPC)协议流不正确 参数1(”“):数据类型0x38未知。 我环顾了一下谷歌已经确定这是因为我是 使用MS SQL Server 2000驱动程序的JDBC和此驱动程序将无法与MSSql服务器2008的 。它将连接,但将无法正常工作。JBoss 3.2.2和JDBC升级

所以我的问题是怎么做的,我得到了JBoss使用新的MSSQL服务器的JDBC驱动程序 版本2

我并不熟悉的JBoss。新的驱动程序附带JAR 文件,但我不知道如何告诉JBoss使用该文件,而不是旧的驱动程序 。

非常感谢您的帮助。

+0

你应该知道的一件事是JBoss 3真的很老了(在** 2004 ** iirc发布)。也许你应该考虑升级。 – cletus 2009-09-15 00:16:06

+0

这是真的,但它不会解决JDBC配置问题:) – 2009-09-15 00:30:42

+0

我们正在将所有内容都转移到新系统中,因此目前升级无法解决。 – Tigran 2009-09-15 00:39:50

回答

4

通常,为了使JDBC驱动程序类可用于JBoss,驱动程序的jar被复制到默认服务器配置的lib目录(当然,假设这是您正在运行的配置)。因此,为了让JBoss使用新的驱动程序,请从lib目录中删除旧的jar(如果它不在那里查看启动脚本并找到它添加到$ CLASSPATH的位置),请将其替换为新驱动程序,如果需要更新您的mssql-ds.xml(特别是<connection-url><driver-class>,检查驱动程序文档),重新启动Jboss。

+0

我认为这使我走上了正确的道路。我在jboss \ server \ all \ lib中找到了一个mssqlserver.jar,但是没有在默认或最小的情况下找到它。我不确定这是不是老司机是否有我能确定的方式? 我使用Eclipse作为IDE你能告诉我如何检查$ CLASSPATH吗? 谢谢 – Tigran 2009-09-15 00:38:53

+0

是的,这是它(jboss/server/all/lib被所有配置共享)。确保一种方法是删除jar并检查在JBoss启动时是否得到ClassNotFoundException(换句话说,根本不应该能够访问数据库)。但我相信它是你要找的那个罐子。 – 2009-09-15 00:52:58

+0

删除msbase.jar,mssqlserver.jar和msutil.jar会导致连接错误。然后我将新的sqljdbc.jar复制到lib文件夹中并出现以下错误。无法创建连接; - 嵌套的throwable:(org.jboss.resource.JBossResourceException:无法注册以下驱动程序:com.microsoft.jdbc.sqlserver.SQLServerDriver; - 嵌套的throwable:(java.lang.ClassNotFoundException:找不到ClassLoaders:com.microsoft.jdbc .sqlserver.SQLServerDriver)。 复制新驱动程序后,我会修改mssql-ds.xml文件来读取新驱动程序。谢谢 – Tigran 2009-09-15 16:42:10