TomCat e DataSourceRealm

3 respostas
P

Pessoal estou tendo dificuldades em implementar um Datasource realm. Apesar de seguir alguns tutoriais que achei ainda não consegui fazê-lo funcionar na mimha aplicação.

Ao invés de resgatar os dados no Mysql recebo uma janela de login para o tomcat manager application

server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Server>
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
    <GlobalNamingResources>
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
        <Resource name="jdbc/oaso" type="javax.sql.DataSource"/>
        <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
        <ResourceParams name="jdbc/oaso">
            <parameter>
                <name>maxWait</name>
                <value>5000</value>
            </parameter>
            <parameter>
                <name>maxActive</name>
                <value>4</value>
            </parameter>
            <parameter>
                <name>password</name>
                <value>xxxx</value>
            </parameter>
            <parameter>
                <name>url</name>
                <value>jdbc:mysql://localhost:3306/renatovivacqua</value>
            </parameter>
            <parameter>
                <name>driverClassName</name>
                <value>com.mysql.jdbc.Driver</value>
            </parameter>
            <parameter>
                <name>maxIdle</name>
                <value>2</value>
            </parameter>
            <parameter>
                <name>username</name>
                <value>root</value>
            </parameter>
        </ResourceParams>
        <ResourceParams name="UserDatabase">
            <parameter>
                <name>factory</name>
                <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
            </parameter>
            <parameter>
                <name>pathname</name>
                <value>conf/tomcat-users.xml</value>
            </parameter>
        </ResourceParams>
    </GlobalNamingResources>
    <Service name="Catalina">
        <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443">
        </Connector>
        <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
        </Connector>
        <Connector acceptCount="100" className="org.apache.coyote.tomcat5.CoyoteConnector" clientAuth="false" debug="0" disableUploadTimeout="true" enableLookups="true" maxProcessors="75" minProcessors="5" port="8443" scheme="https" secure="true" sslProtocol="TLS">
        </Connector>
        <Engine defaultHost="localhost" name="Catalina">
            <Host appBase="webapps" name="localhost">
                <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
                
                <Context path="/jdbc/oaso" docBase="jdbc/oaso"
                         debug="5" reloadable="true" crossContext="true">
                    
                    <Logger className="org.apache.catalina.logger.FileLogger"
                            prefix="localhost_RealmJdbcTeste_log." suffix=".txt"
                            timestamp="true"/>
                    
                    <Resource name="jdbc/oaso"
                              auth="Container"
                              type="javax.sql.DataSource"/>
                    
                    <ResourceParams name="jdbc/oaso">
                        <parameter>
                            <name>factory</name>
                            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                        </parameter>
                        <parameter>
                            <name>maxActive</name>
                            <value>4</value>
                        </parameter>
                        <parameter>
                            <name>maxIdle</name>
                            <value>2</value>
                        </parameter>
                        <parameter>
                            <name>maxWait</name>
                            <value>5000</value>
                        </parameter>
                        <parameter>
                            <name>username</name>
                            <value>root</value>
                        </parameter>
                        <parameter>
                            <name>password</name>
                            <value>xxxx</value>
                        </parameter>
                        <parameter>
                            <name>driverClassName</name>
                            <value>com.mysql.jdbc.Driver</value>
                        </parameter>
                        <parameter>
                            <name>url</name>
                            <value>jdbc:mysql://localhost:3306/renatovivacqua?autoReconnect=true</value>
                        </parameter>                   
                    </ResourceParams>                    
                </Context>                
            </Host>
            <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
                       
            <Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99"
                   dataSourceName="jdbc/oaso"
                   userTable="users" userNameCol="user_name" userCredCol="user_pass"
                   userRoleTable="user_roles" roleNameCol="role_name"/>
            
            
        </Engine>
    </Service>
</Server>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   <session-config>
       <session-timeout>
           30
       </session-timeout>
   </session-config>
   <welcome-file-list>
       <welcome-file>
           index.jsp
       </welcome-file>
   </welcome-file-list>
   <security-constraint>
       <display-name>Constraint1</display-name>
       <web-resource-collection>
           <web-resource-name>testeJdbc</web-resource-name>
           <description/>
           <url-pattern>/index.jsp</url-pattern>
           <http-method>GET</http-method>
           <http-method>POST</http-method>
           <http-method>HEAD</http-method>
           <http-method>PUT</http-method>
           <http-method>OPTIONS</http-method>
           <http-method>TRACE</http-method>
           <http-method>DELETE</http-method>
       </web-resource-collection>
       <auth-constraint>
           <description>admin</description>
           <role-name>admin</role-name>
           <role-name>tomcat</role-name>
           <role-name>member</role-name>
       </auth-constraint>
       <user-data-constraint>
           <description/>
           <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
   </security-constraint>

   <security-constraint>
       <display-name>Constraint2</display-name>
       <web-resource-collection>
           <web-resource-name>pagina1</web-resource-name>
           <description/>
           <url-pattern>/pagina1.jsp</url-pattern>
           <http-method>GET</http-method>
           <http-method>POST</http-method>
       </web-resource-collection>
       <auth-constraint>
           <description/>
           <role-name>admin</role-name>
           <role-name>member</role-name>
       </auth-constraint>
       <user-data-constraint>
           <description/>
           <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
   </security-constraint>

   <login-config>
       <auth-method>FORM</auth-method>
       <realm-name/>
       <form-login-config>
           <form-login-page>/Login.jsp</form-login-page>
           <form-error-page>/ErrorPage.jsp</form-error-page>
       </form-login-config>
   </login-config>
   <security-role>
       <description/>
       <role-name>admin</role-name>
   </security-role>
   <security-role>
       <description/>
       <role-name>guest</role-name>
   </security-role>
   <security-role>
       <description/>
       <role-name>member</role-name>
   </security-role>
   <security-role>
       <description/>
       <role-name>tomcat</role-name>
   </security-role>

       <resource-ref>
       <description>jdbc:mysql://localhost:3306/oaso</description>
       <res-ref-name>jdbc/oaso</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
       <res-sharing-scope>Shareable</res-sharing-scope>
   </resource-ref>
</web-app>

3 Respostas

_Renatu

É meio sacal ler o xml por aqui… mas eu chutaria isso:

&lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"/&gt;
 
            &lt;Realm className="org.apache.catalina.realm.DataSourceRealm"
                        debug="99"
                        dataSourceName="jdbc/oaso"
                        driverName="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/renatovivacqua?autoReconnect=true"
                        connectionName="root"
                        connectionPassword="MinhaSenha"
                        userTable="user" userNameCol="use_name" userCredCol="use_password"
                        userRoleTable="user_role" roleNameCol="user_rolename"
                /&gt;

Aqui voce implementou dois Realms… parece que o que você quer que funcione é o segundo…

Então tente tirar esta linha do seu server.xml:

<Realm className=“org.apache.catalina.realm.UserDatabaseRealm”/>

P

Renato,
Valeu pela dia mais infelizmente não é isso. Quando retiro o

o tomcat dá um erro e nem inicializa.

P

Segui o tutorial do site da apache e fiz as seguintes modificacoes no web.xml e server.xml no entanto o problema persiste:

web.xml

&lt?xml version="1.0" encoding="UTF-8"?&gt
&lt;web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;                
    &lt;session-config&gt;
        &lt;session-timeout&gt;
            30
        &lt;/session-timeout&gt;
    &lt;/session-config&gt;
    &lt;welcome-file-list&gt;
        &lt;welcome-file&gt;
            index.jsp
        &lt;/welcome-file&gt;
    &lt;/welcome-file-list&gt;  
    &lt;security-constraint&gt;
        &lt;display-name&gt;Constraint1&lt;/display-name&gt;
        &lt;web-resource-collection&gt;
            &lt;web-resource-name&gt;testeJdbc&lt;/web-resource-name&gt;
            &lt;description/&gt;
            &lt;url-pattern&gt;/index.jsp&lt;/url-pattern&gt;
            &lt;http-method&gt;GET&lt;/http-method&gt;
            &lt;http-method&gt;POST&lt;/http-method&gt;
            &lt;http-method&gt;HEAD&lt;/http-method&gt;
            &lt;http-method&gt;PUT&lt;/http-method&gt;
            &lt;http-method&gt;OPTIONS&lt;/http-method&gt;
            &lt;http-method&gt;TRACE&lt;/http-method&gt;
            &lt;http-method&gt;DELETE&lt;/http-method&gt;
        &lt;/web-resource-collection&gt;
        &lt;auth-constraint&gt;
            &lt;description&gt;admin&lt;/description&gt;
            &lt;role-name&gt;admin&lt;/role-name&gt;
            &lt;role-name&gt;tomcat&lt;/role-name&gt;
            &lt;role-name&gt;member&lt;/role-name&gt;
        &lt;/auth-constraint&gt;
        &lt;user-data-constraint&gt;
            &lt;description/&gt;
            &lt;transport-guarantee&gt;CONFIDENTIAL&lt;/transport-guarantee&gt;
        &lt;/user-data-constraint&gt;
    &lt;/security-constraint&gt;
    
    &lt;security-constraint&gt;
        &lt;display-name&gt;Constraint2&lt;/display-name&gt;
        &lt;web-resource-collection&gt;
            &lt;web-resource-name&gt;pagina1&lt;/web-resource-name&gt;
            &lt;description/&gt;
            &lt;url-pattern&gt;/pagina1.jsp&lt;/url-pattern&gt;
            &lt;http-method&gt;GET&lt;/http-method&gt;
            &lt;http-method&gt;POST&lt;/http-method&gt;
        &lt;/web-resource-collection&gt;
        &lt;auth-constraint&gt;
            &lt;description/&gt;
            &lt;role-name&gt;admin&lt;/role-name&gt;
            &lt;role-name&gt;member&lt;/role-name&gt;
        &lt;/auth-constraint&gt;
        &lt;user-data-constraint&gt;
            &lt;description/&gt;
            &lt;transport-guarantee&gt;CONFIDENTIAL&lt;/transport-guarantee&gt;
        &lt;/user-data-constraint&gt;
    &lt;/security-constraint&gt;
    
    &lt;login-config&gt;
        &lt;auth-method&gt;FORM&lt;/auth-method&gt;
        &lt;realm-name/&gt;
        &lt;form-login-config&gt;
            &lt;form-login-page&gt;/Login.jsp&lt;/form-login-page&gt;
            &lt;form-error-page&gt;/ErrorPage.jsp&lt;/form-error-page&gt;
        &lt;/form-login-config&gt;
    &lt;/login-config&gt;
    &lt;security-role&gt;
        &lt;description/&gt;
        &lt;role-name&gt;admin&lt;/role-name&gt;
    &lt;/security-role&gt;
    &lt;security-role&gt;
        &lt;description/&gt;
        &lt;role-name&gt;guest&lt;/role-name&gt;
    &lt;/security-role&gt;
    &lt;security-role&gt;
        &lt;description/&gt;
        &lt;role-name&gt;member&lt;/role-name&gt;
    &lt;/security-role&gt;
    &lt;security-role&gt;
        &lt;description/&gt;
        &lt;role-name&gt;tomcat&lt;/role-name&gt;
    &lt;/security-role&gt;
    
    &lt;resource-ref&gt;
        &lt;description&gt;JdbcRealmTeste&lt;/description&gt;
        &lt;res-ref-name&gt;jdbc/oaso&lt;/res-ref-name&gt;
        &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;
        &lt;res-auth&gt;Container&lt;/res-auth&gt;
    &lt;/resource-ref&gt;   
&lt;/web-app&gt;

server.xml

&lt?xml version="1.0" encoding="UTF-8"?&gt
&lt;Server&gt;
    &lt;Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/&gt;
    &lt;Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/&gt;
    &lt;GlobalNamingResources&gt;
        &lt;Environment name="simpleValue" type="java.lang.Integer" value="30"/&gt;
        &lt;Resource name="jdbc/oaso" type="javax.sql.DataSource"/&gt;
        &lt;Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/&gt;
        &lt;ResourceParams name="jdbc/oaso"&gt;
            &lt;parameter&gt;
                &lt;name&gt;maxWait&lt;/name&gt;
                &lt;value&gt;5000&lt;/value&gt;
            &lt;/parameter&gt;
            &lt;parameter&gt;
                &lt;name&gt;maxActive&lt;/name&gt;
                &lt;value&gt;4&lt;/value&gt;
            &lt;/parameter&gt;
            &lt;parameter&gt;
                &lt;name&gt;password&lt;/name&gt;
                &lt;value&gt;xxxxx&lt;/value&gt;
            &lt;/parameter&gt;
            &lt;parameter&gt;
                &lt;name&gt;url&lt;/name&gt;
                &lt;value&gt;jdbc:mysql://localhost:3306/renatovivacqua&lt;/value&gt;
            &lt;/parameter&gt;
            &lt;parameter&gt;
                &lt;name&gt;driverClassName&lt;/name&gt;
                &lt;value&gt;com.mysql.jdbc.Driver&lt;/value&gt;
            &lt;/parameter&gt;
            &lt;parameter&gt;
                &lt;name&gt;maxIdle&lt;/name&gt;
                &lt;value&gt;2&lt;/value&gt;
            &lt;/parameter&gt;
            &lt;parameter&gt;
                &lt;name&gt;username&lt;/name&gt;
                &lt;value&gt;root&lt;/value&gt;
            &lt;/parameter&gt;
        &lt;/ResourceParams&gt;
        &lt;ResourceParams name="UserDatabase"&gt;
            &lt;parameter&gt;
                &lt;name&gt;factory&lt;/name&gt;
                &lt;value&gt;org.apache.catalina.users.MemoryUserDatabaseFactory&lt;/value&gt;
            &lt;/parameter&gt;
            &lt;parameter&gt;
                &lt;name&gt;pathname&lt;/name&gt;
                &lt;value&gt;conf/tomcat-users.xml&lt;/value&gt;
            &lt;/parameter&gt;
        &lt;/ResourceParams&gt;
    &lt;/GlobalNamingResources&gt;
    &lt;Service name="Catalina"&gt;
        &lt;Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443"&gt;
        &lt;/Connector&gt;
        &lt;Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443"&gt;
        &lt;/Connector&gt;
        &lt;Connector acceptCount="100" className="org.apache.coyote.tomcat5.CoyoteConnector" clientAuth="false" debug="0" disableUploadTimeout="true" enableLookups="true" maxProcessors="75" minProcessors="5" port="8443" scheme="https" secure="true" sslProtocol="TLS"&gt;
        &lt;/Connector&gt;
        &lt;Engine defaultHost="localhost" name="Catalina"&gt;
            &lt;Host appBase="webapps" name="localhost"&gt;
                &lt;Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/&gt;
                
                &lt;Context path="/jdbc/oaso" docBase="jdbc/oaso"
                         debug="5" reloadable="true" crossContext="true"&gt;
                    
                    &lt;Logger className="org.apache.catalina.logger.FileLogger"
                            prefix="localhost_RealmJdbcTeste_log." suffix=".txt"
                            timestamp="true"/&gt;
                    
                    &lt;Resource name="jdbc/oaso"
                              auth="Container"
                              type="javax.sql.DataSource"/&gt;
                    
                    &lt;ResourceParams name="jdbc/oaso"&gt;
                        &lt;parameter&gt;
                            &lt;name&gt;factory&lt;/name&gt;
                            &lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;
                        &lt;/parameter&gt;
                        &lt;parameter&gt;
                            &lt;name&gt;maxActive&lt;/name&gt;
                            &lt;value&gt;4&lt;/value&gt;
                        &lt;/parameter&gt;
                        &lt;parameter&gt;
                            &lt;name&gt;maxIdle&lt;/name&gt;
                            &lt;value&gt;2&lt;/value&gt;
                        &lt;/parameter&gt;
                        &lt;parameter&gt;
                            &lt;name&gt;maxWait&lt;/name&gt;
                            &lt;value&gt;5000&lt;/value&gt;
                        &lt;/parameter&gt;
                        &lt;parameter&gt;
                            &lt;name&gt;username&lt;/name&gt;
                            &lt;value&gt;root&lt;/value&gt;
                        &lt;/parameter&gt;
                        &lt;parameter&gt;
                            &lt;name&gt;password&lt;/name&gt;
                            &lt;value&gt;xxxx&lt;/value&gt;
                        &lt;/parameter&gt;
                        &lt;parameter&gt;
                            &lt;name&gt;driverClassName&lt;/name&gt;
                            &lt;value&gt;com.mysql.jdbc.Driver&lt;/value&gt;
                        &lt;/parameter&gt;
                        &lt;parameter&gt;
                            &lt;name&gt;url&lt;/name&gt;
                            &lt;value&gt;jdbc:mysql://localhost:3306/renatovivacqua?autoReconnect=true&lt;/value&gt;
                        &lt;/parameter&gt;                   
                    &lt;/ResourceParams&gt;                    
                &lt;/Context&gt;                
            &lt;/Host&gt;
            &lt;Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/&gt;
            &lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"/&gt;
        &lt;/Engine&gt;
    &lt;/Service&gt;
&lt;/Server&gt;
Criado 23 de maio de 2007
Ultima resposta 24 de mai. de 2007
Respostas 3
Participantes 2