Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Создание 2х контекстов в TomCat


Автор: ReFLeXive 16.10.2009, 06:11
Всем доброго времени суток!
Возникла следующая проблема - не получается создать 2 контекста в web-приложении.
Суть вопроса: в папке webapps web-приложения находится 2 каталога: /webapps/dir1 и /webapps/dir2 -  они являются контекстами приложения и каждый из этих каталогов имеет index.jsp. Создаются эти контексты следующим образом:
Код

        rootContextV2 = (StandardContext)createContext( "/user", catalinaHome + "/webapps/dir1" );
        log.info( "create rootContextV2... Ok" );
        rootContextV2.setDefaultWebXml( catalinaHome + "/webapps/web.xml" );
        rootContextV2.setReloadable( false );
        rootContextV2.setWorkDir( "tmp" );
        rootContextV2.setCachingAllowed( true );
        rootContextV2.addFilterDef( filterDef );
        rootContextV2.addFilterMap( filterMap );

        JAASRealm realm = new JAASRealm();
    realm.setAppName( "user" );
    realm.setUserClassNames( UserLoginModule.UserPrincipal.class.getName() );
    realm.setRoleClassNames( UserLoginModule.RolePrincipal.class.getName() );
        
    rootContextV2.setRealm( realm );
        
        host.addChild( rootContextV2 );

        //Context for Customer
        rootContextCustomer = (StandardContext)createContext( "/customer", catalinaHome + "/webapps/dir2" ); 
        log.info( "create rootContextCustomer... Ok" );
        rootContextCustomer.setDefaultWebXml( catalinaHome + "/webapps/web.xml" );
        rootContextCustomer.setReloadable( false );
        rootContextCustomer.setWorkDir( "tmp" );
        rootContextCustomer.setCachingAllowed( true );
        rootContextCustomer.addFilterDef( filterDef );
        rootContextCustomer.addFilterMap( filterMap );

        JAASRealm realm1 = new JAASRealm();
    realm1.setAppName( "customer" );
    realm1.setUserClassNames( UserLoginModule.UserPrincipal.class.getName() );
    realm1.setRoleClassNames( UserLoginModule.RolePrincipal.class.getName() );
        
    rootContextCustomer.setRealm( realm1 );
        
        host.addChild( rootContextCustomer );


Проблема вот в чем: набрав в браузере http://127.0.0.1:8088/user я должен попасть на index.jsp, который лежит в папке dir1, но дело в том, что загружается index.jsp из папки dir2, т.е. из другого контекста...
Но вот прикол: если я набираю адрес http://127.0.0.1:8088/user/login.jsp, то загружается страничка login.jsp из нужного контекста (dir1), однако дальше этой страницы идти не получается....

Посоветуйте пожалуйста, как сделать так, чтобы при вводе http://127.0.0.1:8088/user или http://127.0.0.1:8088/customer я попадал на соответствующий index.jsp?

Автор: ReFLeXive 16.10.2009, 15:34
C проблемой вроде разобрались...
Оказалось, дело в каталоге временных файлов tmp... нужно было для каждого контекста создать свой каталог....
Сейчас нужно разобраться с относительными путями....

Автор: COVD 16.10.2009, 15:46
Цитата

Возникла следующая проблема - не получается создать 2 контекста в web-приложении.

Ваш IDE при компиляции каждого вэб-проекта создает war файл. Вы копируете файлы в папку webapp вебсервера. Остальное делает вебсервер. Зачем искать трудные пути?

Автор: ReFLeXive 16.10.2009, 16:04
Цитата(COVD @  16.10.2009,  15:46 Найти цитируемый пост)
Ваш IDE при компиляции каждого вэб-проекта создает war файл. Вы копируете файлы в папку webapp вебсервера. Остальное делает вебсервер. Зачем искать трудные пути?

Проект коммерческий, уже действует.... Нужно добавить новый функционал, а почему так поступили разработчики проекта - хороший вопрос))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)