Tomcat i RMI

0

Witam,

map projekt ktory jest jest zdeployowany do jarow. Uruchamiam rmregistry w katalogu nadrzednym od lib gdzie sa wszystkie pliki

set CLASSPATH=.\lib\a.jar;.\lib\b.jar;;.\lib\c.jar;.\lib\projekt.jar;
rmiregistry

uruchamiam projekt, ktory jest serwerem:
java -Xms64m -Xmx256m -classpath .\lib\projekt.jar;.\lib\a.jar;.\lib\b.jar;.\lib\c.jar -Djava.rmi.server.codebase=file:/C:\mojprojekt\lib\ -Djava.security.debug=access,failure org.mpdev.test.ProjektImpl

serwer startuje

do katalogow Tomcata wrzucam pliki servletow, probuje wywolac jakas strone i dostaje wyjatek:

 1: exception: java.rmi.ServerError: Error occurred in server thread; nested exception is: 
  2:    java.lang.NoClassDefFoundError: com/samples/other/BestProject
  3: sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
  4: sun.rmi.transport.Transport$1.run(Unknown Source)
  5: java.security.AccessController.doPrivileged(Native Method)
  6: sun.rmi.transport.Transport.serviceCall(Unknown Source)
  7: sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
  8: sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
  9: sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
 10: java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
 11: java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 12: java.lang.Thread.run(Unknown Source)

gdzie com/samples/other/BestProject mam w b.jar, ale Tomcat tak jakby tego nie widzial dlaczego?

0

Dokladnie nie pamietam dlaczego i po co, ale w tutku Suna do rmi bylo napisane zdaje sie, ze startujac rmiregistry nie powinno sie miec ustawionego classpatha, i nie powinno sie robic tego w katalogu w ktorym sa klasy (czyli domyslny classpath .). Ty robisz zdaje sie dokladnie to, przed czym oni przestrzegaja. Sprawdz to, ale jesli pieprze glupoty to sory.
Poza tym lepiej jest tworzyc i startowac rejestr w aplikacji servera, wieksza kontrola i takie tam. LocaleRegistry.createRegistry czy cos podobnego.

0

Sprawdzilem i jest takie cos (RMI Trail -> Running The Example Programs -> Starting The Server):
"Before you execute rmiregistry, you must make sure that the shell or window in which you will run rmiregistry either has no CLASSPATH environment variable set or has a CLASSPATH environment variable that does not include the path to any classes that you want downloaded to clients of your remote objects. "

0

Bez ustawionego CLASSPATHA nie startuje serwer, próbowałem już tą metoda

0

Zaraz zaraz, ja powiedzialem (i Sun) ze tylko rmiregistry ma byc startowane bez classpatha. Server naturalnie musi miec classpath. Przeczytaj jeszcze raz to co napisalem, i skocz do tego miejsca w tutku ktore podalem.

0

Tak rozumiemem:)

Po zrobenieniu

set CLASSPATH=
rmregistry

i

uruchomieniu:

java -Xms64m -Xmx256m -classpath .\lib\projekt.jar;.\lib\a.jar;.\lib\b.jar;.\lib\c.jar -Djava.rmi.server.codebase=file:/C:\mojprojekt\lib\ -Djava.security.debug=access,failure org.mpdev.test.ProjektImpl

otrzymuję

ClassNotFound: org.mpdev.test.ProjektImpl

0

Czyli blad masz ze nie moze zlanezc klasy main serwera. Zauwazylem ze w classpath uzywasz ; jako separator dla jarow - jaki system operacyjny uzywasz? Napisz rowniez jaka masz strukture katalogow, by po prostu zle ustawiasz classpath dla servera.

0

Ok widze ze windows po url do codebase ;d Ale strukture katalogow zapodaj.

0

Problem tak trywialny, że aż wstyd się przyznać... [wstyd]
w classpath brakowało tego jara, który był potrzebny, ale nie zwracałem na to uwagi bo od samego początku było dla mnie oczywiste, że on tam jest

0

I podaj w ktorym jarze jest ta klasa glowna z metoda main o ktora sie pluje java.

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