Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> настройка tomcat 5.5 realm, в контексте приложения 
:(
    Опции темы
le_chat
Дата 8.5.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



Доброго времени суток.

Пытаюсь настроить realm под кота через DataSource в контексте приложения. DataSource тоже локальный. кот 5.5

файл META-INF/context.xml

Код

<?xml version="1.0"  encoding="UTF-8"?>
<Context>
    <Resource name="holidays/dataSource" type="javax.sql.DataSource"
              maxActive="100" maxIdle="30" maxWait="10000"
              username="tomcat" password="catpass" driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://site.loc:3306/holidays_base?autoReconnect=true"/>

    <Realm  className="org.apache.catalina.realm.DataSourceRealm"
            dataSourceName="java:comp/env/holidays/dataSource"
            localDataSource="true"

            userTable="users"
            userNameCol="user_name"
            userCredCol="user_pass"

            userRoleTable="user_roles"
            roleNameCol="role_name"
        />
</Context>


файл WEB-INF.xml/web.xml
большой получился smile

Код

<?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" >

<!--<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">-->
<!--<web-app>-->

    <display-name>Holidays application</display-name>

    <description>This is database of holidays</description>



    <context-param>
        <description>
            Values: "false", or another. If value is "false" application will not write loggin in container log (Tomcat log)
        </description>
        <param-name>logInContainer</param-name>
        <param-value>true</param-value>
    </context-param>

    <context-param>
        <description>
            Values: Log file path (from context path) . If value is "" application will not write loggin in log file
        </description>
        <param-name>logInFile</param-name>
        <param-value>WEB-INF/logs/log.txt</param-value>
    </context-param>

    <context-param>
        <description>
            Values: DEBUG, ERROR. Param define level of loggin
        </description>
        <param-name>logLevel</param-name>
        <param-value>DEBUG</param-value>
    </context-param>



    <filter>
        <filter-name>logginFilter</filter-name>
        <filter-class>holidays.filters.LogginFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>logginFilter</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>



    <listener>
        <listener-class>holidays.listeners.ContextListener</listener-class>
    </listener>



    <servlet>
        <servlet-name>holidays</servlet-name>
        <jsp-file>/jsp/holidays.jsp</jsp-file>
    </servlet>

    <servlet>
        <servlet-name>controller</servlet-name>
        <servlet-class>holidays.Controller</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>holidays</servlet-name>
        <url-pattern>/holidays</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>holidays</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>controller</servlet-name>
        <url-pattern>/controller</url-pattern>
    </servlet-mapping>



    <!--<taglib>-->
        <!--<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>-->
        <!--<taglib-location>/WEB-INF/lib</taglib-location>-->
    <!--</taglib>-->



    <resource-ref>
        <res-ref-name>holidays/dataSource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

    <!--<resource-ref>-->
        <!--<res-ref-name>library</res-ref-name>-->
        <!--<res-type>javax.sql.DataSource</res-type>-->
        <!--<res-auth>Container</res-auth>-->
    <!--</resource-ref>-->



    
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>holidays</web-resource-name>
            <description>Only autorizated users can request application</description>
            <!--<url-pattern>/controller</url-pattern>-->
            <!--<url-pattern>/jsp/*</url-pattern>-->
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>user</role-name>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>HolidaysRealm</realm-name>
        <form-login-config>
            <form-login-page>/login.jsp</form-login-page>
            <form-error-page>/login.jsp?error=1</form-error-page>
        </form-login-config>
    </login-config>

    <security-role>
        <description>admin</description>
        <role-name>admin</role-name>
    </security-role>

    <security-role>
        <description>common user</description>
        <role-name>user</role-name>
    </security-role>



    <env-entry>
        <description>url for SQL server</description>
        <env-entry-name>db</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>jdbc:mysql://localhost:3306</env-entry-value>
    </env-entry>

    <env-entry>
        <description>user name for SQL server</description>
        <env-entry-name>user</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>tomcat</env-entry-value>
    </env-entry>

    <env-entry>
        <description>password for SQL server</description>
        <env-entry-name>password</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>12345678</env-entry-value>
    </env-entry>

</web-app>


в результате обращения site.loc:8080/holidays/
получаю форму авторизации, заполняю поля user и pass и отправляю.

кот ругается так:

Код

08.05.2007 14:55:16 org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
08.05.2007 14:55:16 org.apache.catalina.startup.Catalina start
INFO: Server startup in 8078 ms
08.05.2007 14:55:22 org.apache.catalina.realm.DataSourceRealm open
SEVERE: Exception performing authentication
javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:769)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:152)
    at org.apache.catalina.realm.DataSourceRealm.open(DataSourceRealm.java:401)
    at org.apache.catalina.realm.DataSourceRealm.authenticate(DataSourceRealm.java:282)
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:257)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:416)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
08.05.2007 14:55:25 org.apache.catalina.realm.DataSourceRealm open
SEVERE: Exception performing authentication
javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:769)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:152)
    at org.apache.catalina.realm.DataSourceRealm.open(DataSourceRealm.java:401)
    at org.apache.catalina.realm.DataSourceRealm.authenticate(DataSourceRealm.java:282)
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:257)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:416)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
08.05.2007 14:55:39 org.apache.catalina.realm.DataSourceRealm open
SEVERE: Exception performing authentication
javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:769)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:152)
    at org.apache.catalina.realm.DataSourceRealm.open(DataSourceRealm.java:401)
    at org.apache.catalina.realm.DataSourceRealm.authenticate(DataSourceRealm.java:282)
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:257)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:416)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
08.05.2007 14:55:44 org.apache.coyote.http11.Http11BaseProtocol pause


судя по всему realm он просто не находит DataSource в JNDI. загадочной для него является начало имени в строке в первом файле:

dataSourceName="java:comp/env/holidays/dataSource"

пока что ничего путного ни придумать ни найти не смог.  I need help smile


PM MAIL   Вверх
le_chat
Дата 9.5.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



я нашел неправильный ответ, который работает
в файле META-INF/context.xml следует заменить строчку
Код

            dataSourceName="java:comp/env/holidays/dataSource"    

на строчку
Код

            dataSourceName="holidays/dataSource"

согласно документации по tomcat эта строка вообще должна выглядеть как
Код

            dataSourceName="java:/comp/env/holidays/dataSource"

но этот вариант тоже не работает...

теперь появилась новая проблема. при следующем мапинге
Код

<?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" >

    <display-name>Holidays application</display-name>
    <description>This is database of holidays</description>

    <filter>
        <filter-name>logginFilter</filter-name>
        <filter-class>holidays.filters.LogginFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>logginFilter</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>

    <servlet>
        <servlet-name>holidays</servlet-name>
        <jsp-file>/private/holidays.jsp</jsp-file>
    </servlet>

    <servlet>
        <servlet-name>controller</servlet-name>
        <servlet-class>holidays.Controller</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>holidays</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>controller</servlet-name>
        <url-pattern>/controller</url-pattern>
    </servlet-mapping>


    <security-constraint>
        <web-resource-collection>
            <web-resource-name>holidays</web-resource-name>
            <description>only autorizated users can request application</description>
            <!--<url-pattern>/jsp/*</url-pattern>-->
            <url-pattern>/</url-pattern>
            <url-pattern>/controller</url-pattern>
            <url-pattern>/private/*</url-pattern>
            <url-pattern>/private/include/*</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
            <http-method>HEAD</http-method>
        </web-resource-collection>
        
        <auth-constraint>
            <role-name>user</role-name>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>

<!--deny access by following methods-->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>holidays</web-resource-name>
            <description>nobody have access</description>

            <url-pattern>/*</url-pattern>

            <http-method>DELETE</http-method>
            <http-method>PUT</http-method>
            <http-method>OPTIONS</http-method>
            <http-method>TRACE</http-method>
        </web-resource-collection>

        <auth-constraint/>
        
    </security-constraint>

    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/login.jsp</form-login-page>
            <form-error-page>/login.jsp?error=1</form-error-page>
        </form-login-config>
    </login-config>

    <security-role>
        <description>admin</description>
        <role-name>admin</role-name>
    </security-role>

    <security-role>
        <description>common user</description>
        <role-name>user</role-name>
    </security-role>
</web-app>

и обращению по адресу http://site.loc:8080/holidays/
я получаю форму на авторизацию, ввожу имя и пароль, сабмичу и получаю
Код

HTTP Status 408 - The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser

в META-INF/context.xml для контекста установлено не использовать куки
Код

<?xml version="1.0"  encoding="UTF-8"?>
<Context path="/holidays" cookies="false">
...

первое впечатление - либо не создается либо в процесс отваливается сессия.   smile 
но почему так происходит понять не могу. буду благоданен за указание правильного направления 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.4054 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.