Announcement Announcement Module
Collapse
No announcement yet.
DBRE MSSQL JDBC driver not available for 'net.sourceforge.jtds.jdbc.Driver' Loop Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • DBRE MSSQL JDBC driver not available for 'net.sourceforge.jtds.jdbc.Driver' Loop

    I'm having trouble starting a simple project with the goal for seeing how DBRE would work with my database.

    Expected Result: After setting up persistence to communicate with a MS SQL db, I should be able to run DBRE and connect to the database.
    Actual Result: After setting up persistence to communicate with MS SQL db, roo continually tells me "JDBC driver not available for 'net.sourceforge.jtds.jdbc.Driver'"

    Details:
    Roo Versions: 1.1.5 and 1.2

    What I've done so far:
    1.) I got started by downloading the SpringSource Tool Suite Version 2.8.1.RELEASE. (Build Id: 201111221000)
    2.) I created a new Spring Roo Project in the Tool Suite.
    3.) I ran
    Code:
    roo>persistence setup --database MSSQL --provider HIBERNATE
    Roo seemed to do its thing and setup my pom file

    Code:
    Created SRC_MAIN_RESOURCES\META-INF\spring\database.properties
    Please update your database details in src/main/resources/META-INF/spring/database.properties.
    Updated ROOT\pom.xml [added dependencies net.sourceforge.jtds:jtds:1.2.4, org.hibernate:hibernate-core:3.6.4.Final, org.hibernate:hibernate-entitymanager:3.6.4.Final, org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.0.Final, org.hibernate:hibernate-validator:4.1.0.Final, javax.validation:validation-api:1.0.0.GA, cglib:cglib-nodep:2.2, javax.transaction:jta:1.1, org.springframework:spring-jdbc:${spring.version}, org.springframework:spring-orm:${spring.version}, commons-pool:commons-pool:1.5.4, commons-dbcp:commons-dbcp:1.3; added repository https://repository.jboss.org/nexus/content/repositories/releases]
    Updated SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xml
    Created SRC_MAIN_RESOURCES\META-INF\persistence.xml
    4.) I went to the indicated database.properties file and added/updated the properties for my database.
    5.) I wanted to see if my settings and connection were good so I ran
    Code:
    roo> database introspect --schema dbo
    As expected, per most of the help documentation, roo tells me I need to get the add-on:

    Code:
    Located add-on that may offer this JDBC driver
    1 found, sorted by rank; T = trusted developer; R = Roo 1.1 compatible
    ID T R DESCRIPTION -------------------------------------------------------------
    01 Y Y 1.2.4.0010 #jdbcdriver driverclass:net.sourceforge.jtds.jdbc.Driver....
    --------------------------------------------------------------------------------
    [HINT] use 'addon info id --searchResultId ..' to see details about a search result
    [HINT] use 'addon install id --searchResultId ..' to install a specific search result, or
    [HINT] use 'addon install bundle --bundleSymbolicName TAB' to install a specific add-on version
    JDBC driver not available for 'net.sourceforge.jtds.jdbc.Driver'
    6.)So as per the documentation I run
    Code:
    roo> addon install id --searchResultId 01
    I get this as a response:
    Code:
    roo> Target resource(s):
    -------------------
       Spring Roo - Wrapping - jtds (1.2.4.0010)
    
    Deploying...done.
    So I figured, now I'm ready to introspect my db and run the following again:

    Code:
    roo> database introspect --schema dbo
    Roo tells me the following after I run that:

    Code:
    Located add-on that may offer this JDBC driver
    1 found, sorted by rank; T = trusted developer; R = Roo 1.1 compatible
    ID T R DESCRIPTION -------------------------------------------------------------
    01 Y Y 1.2.4.0010 #jdbcdriver driverclass:net.sourceforge.jtds.jdbc.Driver....
    --------------------------------------------------------------------------------
    [HINT] use 'addon info id --searchResultId ..' to see details about a search result
    [HINT] use 'addon install id --searchResultId ..' to install a specific search result, or
    [HINT] use 'addon install bundle --bundleSymbolicName TAB' to install a specific add-on version
    JDBC driver not available for 'net.sourceforge.jtds.jdbc.Driver'
    7.) This looks familiar, better check the Googles and figure out what I'm doing wrong. I found several posts from 2010 that seemed to indicate there were some bugs with the wrong drivers being associated with MSSQL.

    I found the following:
    • http://forum.springsource.org/showth...-MSSQL-problem - this thread mentions running script install-jdbc-drivers.roo. I tried that and get file not found. After digging into that, it seems the use of that script was deprecated and removed.
    • https://jira.springsource.org/browse/ROO-1354 - JIRA ticket related to the wrong driver being included and the resolution seems to indicate that 1.1.5 should contain the fix.
    • http://forum.springsource.org/showth...ion-with-MSSQL -> A post on configuring the pom file and the properties file to use the MS JDBC driver instead of the JTDS driver. Andrew Swan indicates in this post that the JTDS driver provied by roo out of the box should just work and that install the MS JDBC driver should not be necessary. (I tried it for kicks, and roo complains that the driver isn't available either).

    8.) Thinking maybe that bug linked above didn't actually make it into 1.1 release, I downloaded Roo 1.2 and created a new project just from the command line. After setting up persistence I get the following different result from roo
    Code:
    roo> database introspect --schema dbo
    Unable to get connection from driver: I/O Error: SSO Failed: Native SSPI library
     not loaded. Check the java.library.path system property.
    So, what I am doing wrong? It seems other people have gotten roo to work with MSSQL. I'm not sure what I'm missing. Any help would be greatly appreciated.

    Thanks in advance,

    Ryan

  • #2
    For anyone that runs into this problem, I was finally able to figure out the issue using the JTDS driver. I haven't used JDBC drivers too much, so maybe this information is implied, but for the JTDS driver I had to copy a dll from the 1.2.4 distro to by jdk/bin directory. I followed the instructions here: http://social.msdn.microsoft.com/For...7-c3e28ba1be48 from Chebbinator

    1. You are using jDTS JDBC drivers.

    2. SQL Server and Ora appserver are running on windows in the same domain.

    findout the version of the jDTS driver you are using. Then download the jDTS driver form the jDTS site "http://sourceforge.net/projects/jtds/files/jtds/" in the zip you will see the ntlm.dll file in the folder x86/SSO. take that dll and put it in the jre\bin or jdk\bin of the JVM that your appserver you are using.. then re-start the appserver.
    I used the 64 bit driver as that was my JVM version. What's interesting is that in my testing I had to copy the dll for two different Windows 7 64 bit machines, but my MBP OSX Lion machine seemed to be able to use the driver "right out of the box." I'm not sure I would expect Roo to copy a dll to my jdk/bin directory but at least some info regarding needing a dll would be nice.

    Once I copied the DLL into my jdk/bin directory 1.2 and 1.1.5 of Roo could both access my MSSQL db.

    If someone that is experienced with JDBC on Windows can confirm that this behavior(copying the dll around) is typically required, I'd be happy to add something to the documentation.

    Comment

    Working...
    X