Trato de configurar una jsbc origen de datos para mi aplicación dentro de

-tomcat_home-\conf\Catalina\localhost

Mi aplicación es «reportExport».la guerra por lo que he creado reportExport.xml con este contenido:

<Context>
    <Resource name="jdbc/mssql" auth="Container" type="javax.sql.DataSource"
    username="user"
    password="pass"
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://localhost:52015;databaseName=rewe;integratedSecurity=false;"
    maxActive="20"
    maxIdle="10"
    validationQuery="select 1" />
</Context>

He añadido a web.xml este:

<resource-ref>
    <description>
        This app requires a ms sql connection.
    </description>
    <res-ref-name>
        jdbc/mssql
    </res-ref-name>
    <res-type>
        javax.sql.DataSource
    </res-type>
    <res-auth>
        Container
    </res-auth>
</resource-ref>

Probablemente me puede omitir los campos que ya se dio en reportExport.xml?!

en Java que tratar de conseguir una conexión como este:

((DataSource) (new InitialContext()).lookup("java:comp/env/jdbc/mssql")).getConnection()

La conexión está funcionando de la aleta en java, pero hay 2 problemas.

El primer problema es: Si pongo reportExport.xml en la ruta correcta antes de implementar la aplicación tomcat lanza excepciones:

 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].Sta
ndardContext[/reportExport]]
...
Caused by: java.lang.IllegalArgumentException: The main resource set specified [C:\Users\moritz\entwicklung\apache-tomca
t-8.0.18\webapps\reportExport] is not valid
...

11-Feb-2015 14:15:38.303 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Error de
ploying configuration descriptor C:\Users\moritz\entwicklung\apache-tomcat-8.0.18\conf\Catalina\localhost\reportExport.x
ml
...

Después de la implementación de la webapp el inicio está muy bien.
El segundo problema es el reportExport.xml se elimina en la anulación de la implementación de la aplicación web.

Así que algo está mal con mi configuración: quiero que el administrador del sistema para configurar el origen de datos específico para mi aplicación. Me gusta la idea de que con un archivo separado por web app, pero la excepción en la primera instalación y la eliminación de anulación de la implementación son malos.
Por otro lado es probablemente bueno para la configuración de origen de datos en server.xml pero cómo configurar el «contexto» elemento», » hay que hacer datasource sólo disponible para la aplicación específica?

InformationsquelleAutor dermoritz | 2015-02-11

1 Comentario

  1. 7

    ACEPTAR,
    la manera más fácil:
    – en el server.xml declarar de recursos mundiales (casi en la parte superior), utilizando el mismo syntaxt como en su reportExport.xml archivo.
    Si el nombre de cada origen de datos differenlty, por ejemplo jdbc/reportExport
    de cada uno de sus webapps pueden utilizar distintos tipos de conexión que usted sólo tiene que actualizar el código para llamar la ‘nombre personalizado’.
    Así que dentro de usted .la guerra en MET-INF/context.xml archivo (antes de construir la guerra en el web/META_INF/context.xml) que usted necesita para refrence los recursos globales:

    <ResourceLink global="jdbc/reportExport" name="jdbc/reportExport" type="javax.sql.DataSource"/>

    y, a continuación, acceder normalmente a partir de código.

    Si quieres incluso puedes cambiar el nombre de la context.xml a jdbc/mssql, por lo que el código java se ven como antes, pero que se apuntan a la derecha de la fuente de datos. Pero yo recomendaría mantener diferentes nombres en cada aplicación, de manera que ver directamente lo que está accediendo (gusto personal).

    El principal problema con esta solución es que una aplicación web puede hacer referencia a cualquiera de los recursos globales en su context.xml y obtiene acceso a ellos. Sin embargo, si usted está a cargo de el/los código /servidor no debería ser un gran problema.

    Si es así, usted no poner manualmente .archivo xml en la carpeta webapps pero de agregar su contenido al contexto de la descripción en virtud de host predeterminado elemento (algunos al final de la server.xml).
    Pero tomcat siempre en busca de aplicaciones refrenced hay (por lo que recibirá los mensajes de error cuando se anula la implementación de la aplicación), además, si se agrega nuevo recurso para el elemento (una variable no un global de origen de datos) de su lado del servidor contexto descripción tendría que ser actualizado de nuevo.

    Así que si no es crucial desde el punto de vista de seguridad, a continuación, GlobalResources además de volver a hacer referencia a ellos en el context.xml de su web-app es la manera más fácil.

    • En el momento que tengo «resource-ref» en mi web.xml ¿cuál es el lidiar con esto en contraste con ResourceLink en context.xml? Ya que no hay ningún elemento de Contexto en server.xml debo agregar o debo agregar solo el recurso?
    • Como yo sé que usted necesita el resourcelink en su contexto el elemento en web.xml son para fines de documentación (o thye no hace referencia java:comp/env ya que no son del entorno). Pero puedo estar equivocado ya que yo no juego mucho con ella. Comience con algo que funciona y, a continuación, usted puede ajustar. a) declarar el origen de los recursos globales, b) agregar context.xml a su archivo war, c) describir resourcelink en su context.xml. Si funciona mover el contexto de la descripción del elemento host de server.xml si no te va como el contexto en el archivo de la guerra (pero, ¿por qué no wante ahí???)

Dejar respuesta

Please enter your comment!
Please enter your name here