Tomcat problem ze sterownikiem jdbc

0

Witam,

Stworzyłem prosty serwlet w Eclipse realizujący funkcjonalność logowania. Nazwa użytkownika pobierana jest z bazy danych a następnie wyświetlana jest odpowiednia strona JSP. Jako kontener serwletów wybrałem Tomcat 5.5. Zintegrowałem go sobie z Eclipse aby łatwo uruchamiać i debugować projekt. Jako bazę danych wybrałem PostgreSQL 8.3. Skonfigurowałem odpowiednio źródło danych w plikach XML i wszystko działa bez zarzutu z poziomu Eclipse. Zachęcony pozytywnymi wynikami pracy postanowiłem wdrożyć projekt na Tomcat i uruchomić go bezpośrednio z przeglądarki internetowej.

  • skopiowałem odpowiedni plik war do katalogu webapps w Tomcat
  • uruchomiłem serwer
  • wywołałem serwlet w przeglądarce i w momencie nawiązywania połączenia z bazą danych dostałem wyjątek: Cannot load JDBC driver class 'org.postgresql.Driver'.

Sterownik znajduje się w katalogu conf/lib oraz webapps/{nazwa_projektu}/WEB-INF/lib. Nie mam pojęcia dlaczego Tomcat go nie widzi! To co jest dla mnie najbardziej zaskakujące to, że jeżeli uruchomię serwer Tomcat poprzez Eclipse to wszystko działa z poziomu przeglądarki [!!!] [!!!] [!!!] Jeżeli natomiast uruchamiam go z poziomu systemu operacyjnego dostaję wyjątekj jak wyżej. Pliki konfiguracyjne wskazujące źródło danych:

contex.xml

<Context path="/Web1" docBase="Web1"
        debug="5" reloadable="true" crossContext="true">        
        <Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="user_name" password="password" driverClassName="org.postgresql.Driver"
               url="jdbc:postgresql://localhost:5432/db"/>       
</Context>

web.xml

<description>Web1</description>
	<resource-ref>
		<res-ref-name>jdbc/postgres</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>

Czy ktoś z szanownych forumowiczów może zasugerować na czym plega problem?? Dlaczego wyjątek pokazuje się tylko wtedy gdy serwer uruchamiany jest bezpośrednio przez skrypt startowy Tomcat?? Może ktoś z Was wie w jaki "specjalny" sposób Eclipse uruchamia serwer Tomcat?? Z góry dziękuję za pomoc.

0

Czy na pewno w obu podanych przez ciebie miejscach jest ta sama biblioteka? Jak ruszasz aplikację z Eclipse to ona nie działa tak naprawdę na pełnym tomcacie, ale w trybie lite. Nie ma tam ładowania wszystkich jarów. IMO jest konflikt sterowników.

0

Biblioteka jest ta sama bankowo na bank. Jeżeli chodzi o Eclipse to cały bajer polega na tym, że wystarczy że uruchomię sam serwer Tomcat w Eclipse i cała moja aplikacja działa z poziomu przeglądarki, natomiast uruchomienie serwera w konsoli = Exception. Tego nie mogę pojąć...

0

Powyższy problem rozwiązany. Jak w większości przypadków to oczywiście banał. Problem polegał na braku uprawnień do odczytu dla grupy i "others" pliku sterownika. Teraz borykam się z następbym wyjątkiem:

Cannot create PoolableConnectionFactory (Your security policy has prevented the connection from being attempted. You probably need to grant the connect java.net.SocketPermission to the database server host and port that you wish to connect to.)

Czy wiecie który plik Tomcat'a odpowiada za zezwalanie na połączenie z bazą danych?

0

security.xml czy jakoś tak.

0

Udało się, uruchomienie mojej aplikacji zajęło mi tylko 3 dni :-D :-D :-D

Zamieszczam rozwiązanie ostatniego problemu, może kiedyś się komuś przyda

W pliku 04webapps.policy należy zezwolić na dostęp do naszej aplikacji oraz strownika jdbc

// Grand permission for database driver
grant codeBase "file:${catalina.home}/webapps/{nazwa-aplikacji}/WEB-INF/lib/{nazwa_pliku_sterownika_jdbc}" {
	permission java.net.SocketPermission "127.0.0.1:{nr_portu_na_ktorym_nasluchuje_db}", "resolve,listen,accept,connect";
	permission java.security.AllPermission ;
};

// Grand permission for application to access data source
grant codeBase "file:${catalina.home}/webapps/{nazwa_aplikacji}/-" {
	permission java.net.SocketPermission "127.0.0.1:{nr_portu_na_ktorym_nasluchuje_db}", "resolve,connect,listen,accept";
	permission java.security.AllPermission;
};

Pozdrawiam.

0

Witam odświeżę troche stary temat ale mam podobny problem co kolega z tym ze ja nie moge znaleźć tego pliku: '04webapps.policy'. Czy ktos mógłby mi pomoc i napisać gdzie ten plik może sie znajdować.

0

Poszukaj pliku catalina.policy.

0

Nie wiem czy dobrze robiłem ale wpisałem po prostu w windows wyszukaj i nic nie znalazło. Może jakieś mała podpowiedz. Acha mam jeszcze jedno pytanie (pewnie głupie) ale dopiero zacząłem zabawę z appletami, a mianowicie mam aplikacje którą przenoszę na applet i ona sie łączy z postgresem i pobiera sobie z niego dane. Co muszę zrobić albo co zainstalować żeby taką aplikacje wrzucić na stronę html (pliczek index.html mam już uzupełniony aplet sie w nim pokazuje tylko że pusty bo właśnie nie może sie połączyć do postgresa) aby potem skopiować taki link i wysłać np koledze? :) tylko sie nie śmiejcie głośno :)

0

A masz zainstalowanego Tomcata?

0

Nie:) to pewnie musze zainstalowac:)

0

Omg, Ten wątek dotyczy Tomcata. Czy musisz go instalować? Nie wiem, zależy co chcesz robić.

0

Chce uruchomić aplikacje w przeglądarce czyli, applet który bedzie sie łączył do bazy postgresql i z której bedzie mógł korzystać mój kolega przez internet. Jak to zrobić?

0
  1. Czy pisałeś już i uruchamiałeś jakieś aplety?
  2. Czy pisałeś aplikacje desktopowe korzystające z bazy danych?
0

nie dużo, ale tak. Obecie ten aplet już mi sie uruchamia i łączy sie z bazą i pobiera dane ale tylko na localhost. Próbowałem połączyć sie z innego komputera i za pierwszym razem sie nie połączył wieć odblokowałem port 8080, za drugim już sie połączył tylko że wyskoczył błąd z połączeniem z baza postgresql i wyskakuje mi taki bład jak koledze wyżej. Bede próbował użyć tego wpisu co kolega może sie uda a jak nie to bede jeszcze prosił o pomoc. Tylko mam pytanie ja by mi sie dało połączyć z innego komputera w sieci lokalnej to bede mógł łączyć sie do tej strony z innego komputera po za moją siecią, czy bede musiał wystawić komputer n świat na routerze czy coś jeszcze innego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1