2010-11-18 6 views
11

Tengo dos aplicaciones web que deben ejecutarse en Tomcat 6, MS SQL 2008 y JTDS-1.2.2 como controlador.java.sql.SQLException: error de E/S: error de SSO: biblioteca SSPI nativa

Si comienzo a una sola aplicación web todo está funcionando bien, pero tan pronto como comience la segunda me sale el siguiente error (no importa el orden):

java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library 

Por supuesto, el la biblioteca ntlmauth.dll está bajo C:\WINDOWS\system32

Parece que la segunda aplicación que se inicia no puede encontrar el ntlmauth.dll para el inicio de sesión único.

+0

Parece que la DLL aún puede estar cargada y no puede volver a cargarse en la otra instancia en ejecución. Puede probar esto, colocando el archivo DLL en la carpeta de instalación de sus tomcat (s) y proporcionando la ruta de ese determinado archivo DLL a su aplicación. –

Respuesta

17

Esta es la solución:

Descargar el jTDS driver, descomprimirlo y copiar x86\SSO\ntlmauth.dll-jdk\jre\bin.

Esto debería resolver su problema.

Editar:

Sin el JDK instalado el camino para mí fue C:\Program Files\Java\jre7\bin\ntlmauth.dll

jTDS deben ser capaces de cargar la biblioteca SPPI nativa (ntlmauth.dll). Coloque esta DLL en cualquier lugar de la ruta del sistema (definida por la variable del sistema PATH) y ya está todo listo.

+0

gracias! esto resuelve mi problema :) – Deiwys

17

llegué allá de esto cambiando la url de

jdbc:jtds:sqlserver://host_server:1433/Database_name 

a

jdbc:jtds:sqlserver://host_server:1433/Database_name;user=XXX;password=YYY 

Al parecer, "Cuando el URL [no] no contiene las propiedades de usuario y contraseña, los sistemas utiliza el método de autenticación de Windows, y aparece el error "No se encontró la biblioteca nativa SSPI".

+3

Acabas de poner fin a 3 horas de depuración infructuosa. ¡Hurra! – reinierpost

+0

Sí, creo que me tomó tanto tiempo encontrar la configuración mágica. – Speck

+2

downvoted porque el padre está preguntando por SSO y esta respuesta no usa SSO (autenticación de Windows) sino autenticación de SQL Server, por lo que no resuelve el problema principal – Jacob

2

Si está intentando ejecutar dos (o más) aplicaciones Tomcat en el mismo servidor que acceden a SQL Server utilizando el controlador JTDS y la autenticación de Windows, una respuesta muy útil cortesía de Chris White es here.

respuesta de Chris tiene que ver con sqljdbc_auth.dll, pero las recomendaciones son las mismas para el conductor y jTDS ntlmauth.dll:

  1. Ponga ntlmauth.dll en el directorio tomcat 7.0\bin. En realidad, creo que puede poner ntlmauth.dll en cualquier directorio en la ruta del sistema, o en el directorio Java jre\bin.
  2. Es importante destacar que, no agrupe el contenedor JTDS en el archivo war de ninguna aplicación Tomcat utilizando el controlador JTDS. En su lugar, coloque una copia en el directorio Tomcat\lib, donde Tomcat la cargará y la pondrá a disposición de todas las aplicaciones.
2

Si está en Windows de 64 bits pero el funcionamiento de Java de 32 bits (el que está en los archivos de programa x86), entonces usted necesita la DLL ntlmauth de 32 bits y no el 64 bits que se podría haber esperado.

+1

Sí: hay más información aquí sobre la implementación de 32 y 64, pero DLL en sus ubicaciones correctas: http://stackoverflow.com/a/16429490/1073262 – perlyking

Cuestiones relacionadas