在jboss中部署应用程序时发生Xmlparserv2错误,正在jboss for Java web应用程序中安装Oracle ojdbc模块

在jboss中部署应用程序时发生Xmlparserv2错误,正在jboss for Java web应用程序中安装Oracle ojdbc模块,java,oracle,stored-procedures,jboss,xmltype,Java,Oracle,Stored Procedures,Jboss,Xmltype,就本条而言— [ojdbc6.jar、xdb6.jar、xmlparserv2-11.1.1.jar] 当应用程序部署在安装了JDK1.6的PC上的本地tomcat服务器上时,它可以完美地工作[能够毫无例外地检索数据],但当部署在运行JDK 1.7的JBOSS EAP 6.2服务器上时,它在尝试通过OJDBC桥检索XML时抛出异常 java.lang.NullPointerException 13:53:51,265 ERROR [stderr] (http-/0.0.0.0:8080-1)

就本条而言— [ojdbc6.jar、xdb6.jar、xmlparserv2-11.1.1.jar]

当应用程序部署在安装了JDK1.6的PC上的本地tomcat服务器上时,它可以完美地工作[能够毫无例外地检索数据],但当部署在运行JDK 1.7的JBOSS EAP 6.2服务器上时,它在尝试通过OJDBC桥检索XML时抛出异常

java.lang.NullPointerException
13:53:51,265 ERROR [stderr] (http-/0.0.0.0:8080-1)  at oracle.jdbc.driver.NamedTypeAccessor.getOracleObject(NamedTypeAccessor.java:320)
13:53:51,268 ERROR [stderr] (http-/0.0.0.0:8080-1)  at oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:217)
13:53:51,270 ERROR [stderr] (http-/0.0.0.0:8080-1)  at oracle.jdbc.driver.NamedTypeAccessor.getObject(NamedTypeAccessor.java:123)
13:53:51,273 ERROR [stderr] (http-/0.0.0.0:8080-1)  at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:2049)
13:53:51,275 ERROR [stderr] (http-/0.0.0.0:8080-1)  at oracle.jdbc.driver.OracleCallableStatementWrapper.getObject(OracleCallableStatementWrapper.java:818)
我尝试更改本地编译器设置,并将JRE从1.6安装到1.7,但本地运行良好

请输入我在远程PC中的JBOSS服务器上遇到的错误。JBOSS是否试图覆盖我已经放在应用程序war文件中的ojdbc jar


更新:在安装JBoss的远程服务器上将JDK版本从1.7降级到1.6。在JBoss服务器中运行时仍会出现此错误。寻找可能遇到此问题或知道此问题原因的人。请分享您的输入

以下是我如何声明Oracle数据源(用于调用pl或执行XQuery)

注入数据源(在无状态ejb中)

在standalone.xml中声明数据源

<datasource jndi-name="java:jboss/datasources/xmlDatasource" pool-name="xxx" enabled="true" use-java-context="true">
    <connection-url>jdbc:oracle:thin:@xxx:1521:xxx</connection-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <driver>oracle</driver>
    <pool>
        <min-pool-size>0</min-pool-size>
        <max-pool-size>10</max-pool-size>
    </pool>
    <security>
        <user-name>xxx</user-name>
        <password>xxx</password>
    </security>
</datasource>
<drivers>
    <driver name="oracle" module="oracle.jdbc">
        <xa-datasource-class>oracle.jdbc.OracleDriver</xa-datasource-class>
    </driver>
</drivers>

jdbc:oracle:thin:@xxx:1521:xxx
oracle.jdbc.driver.OracleDriver
神谕
0
10
xxx
xxx
oracle.jdbc.OracleDriver
模块定义

<module xmlns="urn:jboss:module:1.1" name="oracle.jdbc">

    <resources>
        <resource-root path="ojdbc6.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>

使用maven(或编辑manifest.mf并添加模块名称)将模块依赖项添加到my ear应用程序(其中包含无状态ejb…)


oracle.jdbc

我没有编辑这个问题,而是添加了对我的案例有效的答案;对@mendieta的赞誉

(1) 我尝试在MANIFEST.MF[
Dependencies:com.oracle
]中将驱动程序标记为依赖项; 并在/jboss/jboss-eap-6.2/modules/system/layers/base/com/oracle/main中创建module.xml 并将module.xml和ojdbc6.jar放在主目录中

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.oracle">
    <resources>
        <resource-root path="ojdbc6-11.2.0.4.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>

这起作用了:)

因此,问题在于引用正确的jdbc驱动程序。Tomcat可以[可能Tomcat有它的jdbc(?)版本],jetty可以,但是jboss需要这种方式来安装jdbc驱动程序

(2)

在pom.xml中添加以下条目,以在创建war文件时添加清单条目,并将ojdbc.jar从清单类路径中排除(如果将classpath设置为true,则我没有) 以及从WEB-INF/lib中排除


org.apache.maven.plugins


注意:从war文件中删除ojdbc.jar可能会阻止应用程序在tomcat服务器中运行。假设它将在jboss服务器上运行,我们已经将驱动程序作为jboss模块安装在那里,它将从war中删除。

您是否在war中部署oracle驱动程序?如果是这样的话,我将定义一个jboss模块来放置oracle驱动程序(我认为这是部署数据库驱动程序的标准方式),并将其从war库中删除。是的,我正在将xdb.jar、ojdbc.jar和xmlparserv2.jar打包为war的一部分。感谢你的建议。我找到了另一个和你说的相似的参考资料。让我试试看,然后再回到这。。谢谢另一个没有解决方案的参考:11g驱动程序的另一个参考问题-我没有任何数据源。我通过加载驱动程序并获得连接直接连接到数据库<代码>DriverManager.registerDriver(新的OracleDriver())
conn=DriverManager.getConnection(DB\u CONNECTION\u URL)祝你好运,希望有帮助!尝试您的初始注释:即:在MANIFEST.MF中将驱动程序标记为依赖项的初始步骤;在/opt/jboss/jboss-eap-6.2/modules/system/layers/base/com/oracle/main中创建module.xml,并将module.xml和ojdbc6.jar放在主目录中。仅此一项就解决了这个问题。我会补充细节作为一个单独的答案,但你会被接受的一个。你应该得到真正帮助的赏金。在尝试数据源后将接受答案,我确信它是正确的,尽管请注意,我没有从war文件中删除ojdbc.jar,尽管更新了我的答案,说明删除jar会阻止它在tomcat服务器中成功运行。是的,您的评论是正确的,仅针对jboss删除
<archive>
    <manifestEntries>
        <Dependencies>oracle.jdbc</Dependencies>
    </manifestEntries>
</archive>
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.oracle">
    <resources>
        <resource-root path="ojdbc6-11.2.0.4.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>
 <build>
       <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <archive>
                    <manifestEntries>
                        <Dependencies>com.oracle</Dependencies>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>

       </plugins>

    </build>



<dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0.4</version>
                <!-- excluded from manifest classpath, and excluded from WEB-INF/lib -->
                <scope>provided</scope>
            </dependency>