1

嗨,伙计们,

我在使用 sql 驱动程序时遇到了一个非常“常见”的问题。但是不知道怎么解决。已经尝试了几乎所有的解决方案。

环境是:

-Principal JAR:这包含通过 Hibernate 进行的所有登录和数据库访问

-WebService WAR:这有 2 行代码,只调用 Principal JAR

-Jboss:在 Jboss AS 7.1 上运行 WebService

我的问题是:

启动服务器后,当我调用它的方法时,我收到以下错误:

20:39:20,948 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-localhost-127.0.0.1-8080-1) SQL Error: 0, SQLState: 08001
20:39:20,949 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-localhost-127.0.0.1-8080-1) No suitable driver found for jdbc:sqlserver://localhost;databaseName=SIPAAM;

我的 JAR 也有一个测试类,如果我执行该类所有工作正常。它访问数据库并毫无问题地获取所有数据。但是当我在我的 WebService 上引用它时,它会给出这个错误。还有我的 Persistence xml(位于 .JAR 项目中)

在此处输入图像描述


附加信息:

我的网络服务代码:

@WebMethod
    public List<DadosPreProcessamento> getDadosPreProcessamento()
    {
        DadosPreProcessamentoController dadosPreProcessamentoController = DadosPreProcessamentoController.getInstance();
        return dadosPreProcessamentoController.getLista_dadosPreProcessamento();
    }

我的休眠查询(JAR 内部):

Query listQuery = em.createQuery("select object(c) from "
                    + entityClassName + " as c");
return listQuery.getResultList();

错误发生在 getResultList() 方法上。


我已经尝试在我的 WS 项目中添加 sqljdbc4 库,如下图所示:

WS 库配置

WS 部署配置

4

3 回答 3

0

您还需要将 sqljdbc.jar 文件添加到您的类路径中。您可以通过单击包资源管理器中的 Java 资源并在包中找到类来验证驱动程序是否在 jar 中。

于 2013-10-09T01:04:02.423 回答
0

验证JAR 库中包含Class-Path的文件中字段的值;manifest.mf如果它没有声明它确实包含sqljdbc.jar,则无法从 JAR 外部访问该依赖项。

您还可以做一个小实验:解压 JAR,Class-Path从清单中删除字段并重新打包;该应用程序将强制检查内容,因此它应该可以工作。

于 2013-10-09T02:58:38.770 回答
0

解决了!

将 sql jar 添加到:

~\jboss7\modules\org\hibernate\main

此行位于上面“主”文件夹中 module.xml 中标记的底部。

<resource-root path="sqljdbc4.jar"/>
于 2013-10-22T22:17:47.307 回答