Unable to get managed connection java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter when using sqljdbc42.jar/sqljdbc6.jar

Unable to get managed connection java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter when using sqljdbc42.jar/sqljdbc6.jar

book

Article ID: KB0075337

calendar_today

Updated On:

Products Versions
TIBCO MDM 9.1.0/9.1.2

Description

When sql server database is used, we need sqljdbc jar in the jboss modules location. But if we use sqljdbc42.jar/sqljdbc6.jar and specify the module.xml located at JBOSS_HOME\modules\system\layers\base\com\microsoft\sqlserver\mainas as below, it throws error Unable to get managed connection for java:jboss/eCMDataSource with Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter when we start the server


<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.3" name="com.microsoft.sqlserver">
    <resources>
        <resource-root path="sqljdbc42.jar"/> 
    </resources> 
    <dependencies> 
        <module name="javax.api"/> 
        <module name="javax.transaction.api"/>
    </dependencies> 
</module> 

Environment

OS: Linux, Windows Application Server: JBOSS EAP and Wildfly

Resolution

We need to add the dependency <module name="javax.xml.bind.api"/> in module.xml file to avoid this error. The updated module.xml will look as below.
<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.3" name="com.microsoft.sqlserver">
    <resources>
        <resource-root path="sqljdbc42.jar"/> 
    </resources> 
    <dependencies> 
        <module name="javax.api"/> 
        <module name="javax.transaction.api"/> 
        <module name="javax.xml.bind.api"/>
    </dependencies> 
</module> 

Issue/Introduction

Unable to get managed connection and NoClassDefFoundError: javax/xml/bind/DatatypeConverter when using sqljdbc42.jar or higher for sql server database