Gå til innhold

apache med tomcat som servletcontainer


Anbefalte innlegg

Har nettopp satt opp web-server på en ny maskin, men sliter litt med at apache ikke vil samarbeide med tomcat...

Jeg har en context som heter teller. Når jeg skriver http://localhost/teller, så sender apache meg til tomcat som viser meg innholdet i riktig context, men hvis jeg prøver å bruke en servlet: http://localhost/teller/servlet/teller? så sender apache request servlet/teller? til tomcat. Tomcat vet selvsagt ikke hva servlet skal så for og returnerer bare 404.

 

Hva har jeg glemt? Husker at jeg rotet mye med oppsettet mellom apache og tomcat forrige gang, men da fikk jeg det jo til

 

PS, os er w2k

Lenke til kommentar
Videoannonse
Annonse

Har du laget en riktig servlet-mapping for den i web.xml da? Du trenger en pr servlet-kontekst. Tror det er et Tomcat og ikke et apache problem (apache sender bare videre forespørselen slik den får den, uten kjennskap til servlet-kontekst)

<?xml version="1.0" encoding="UTF-8" ?> 

<!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>



<servlet>

 <servlet-name>ServletNavn</servlet-name> 

 <servlet-class>DinServlet</servlet-class> 

</servlet>



<servlet-mapping>

 <servlet-name>ServletNavn</servlet-name> 

 <url-pattern>ServletURL</url-pattern> 

</servlet-mapping>



<session-config>

 <session-timeout>30</session-timeout> 

</session-config>

<welcome-file-list>

 <welcome-file>index.jsp</welcome-file> 

 </welcome-file-list>



</web-app>

Da skal http://dinHost/ServletURL gå til klassen du har oppgitt i serverkonteksten for ServletNavn. Du kan legge til så mange servlets og servlet-mappings du vil.

Lenke til kommentar

Har bare kopiert servlets som virket på den forrige serveren...

Sånn jeg ser det så er problemet sånn at apache krever at man skriver servlet[/b]/servletnavn"]http://www.domene.no/context/servlet[/b.../b]/servletnavn?

Apache sender servlet/servletnavn? videre til riktig context hos tomcat, men tomcat vet jo ikke hva servlet er. Det er ikke noe i contexten som heter servlet...

 

Skjønte du den?

 

feilmelding:

Ctx( /guestbook ): 404 R( /guestbook + /servlet/guestbook + null) null

Lenke til kommentar

Må inrømme at jeg ikke er helt på stø grunn nå, men det har nok noe med at du må ha en ApjServMount <fra> <til> i httpd.conf.

ApjServMount /servlet /

Skal etter det jeg kan skjønne en foresåørsel til servlet/etEllerAnnet gå videre til Tomcat som /etEllerAnnet, men nå er jeg som sagt på tynn is.

 

Eller du kan evt få Tomcat til å hoste alt og kaste ut Apache, sånn for å gjøre livet litt enklere. Da har du bare servlet-mapping i web.xml å sette opp baner etter.

 

Håper jeg ihvertfall skjønte hva problemet var.

Lenke til kommentar

Den har jeg ikke hørt om før. Rimelig sikker på at jeg ikke satte opp noe sånt forrige gang...

Det eneste jeg har lagt til thhpd.conf er: include mod_jk.auto-conf

Ifølge maualen var det alt...

Får lese litt om ApjServMount og se hva jeg finner ut., men akurat idag tror jeg jeg må lese til databaseeksamen neste uke... :(

 

Takk for forslag

Lenke til kommentar

Vanlig feil det derre...

 

Husk i senere tomcat versjoner er servlet mappingen tatt bort av sikkerhets hensyn. dvs alle requests som går til /servlet/* feiler. Du må eksplisitt mappe opp servleten (i web.xml) eller aktivere /servlet/* mappingen i taomcat sin web.xml

Lenke til kommentar

Ok, høres ut som noe jeg sliter med.

Prøvde examples servlettene gjennom apache, og de virker!

 

Litt slitsomt å mappe hver servlet i web.xml da jeg har endel av dem...

Hvordan aktiverer jeg /servlet/* mappingen i tomcat? syntax/plassering?

 

Mange takk så lang. BIG help :woot:

Lenke til kommentar

i filen conf/web.xml vil du finne denne blokken utkommentert....

 

<!-- The mapping for the invoker servlet -->

<servlet-mapping>

<servlet-name>invoker</servlet-name>

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

</servlet-mapping>

 

 

Fjern kommentar taggene og vips, så vil verden være et mye bedre sted å leve i...

Lenke til kommentar

Hmmm, da ble saken litt verre.... Har du sjekket tomcat loggen?! Sett på full logging på tomcat så kan du muligens se hva som går galt og hva den prøver å mappe requesten til....

 

Versjon 3.2.* (som er eldgammel og har endel bugs), har som du sier ikke disabled /servlet/* mappingen. Dette gjaldt kun for 4.*.*

Lenke til kommentar

Nei, absolutt ikke. Tror neppe problemet ditt ligger i at du kjører feil versjon. tomcat kan være litt vrang.. spesiellt for nybegynnere... Sliter selv hvis jeg skal sette opp en tomcat/apache config etter veldig lang tid (halveringstiden går visst fortere enn først antatt)...

 

Du kan prøve å kjøre requesten direkte mot tomcat for å avklare om det er et apache problem eller bare tomcat.... (konfigurer inn en http connector eller hva det heter på 3.2.* på en annen port i server.xml)...

Lenke til kommentar
Håper du nå vet bedre hvor du skal feilsøke...

 

Næh, bare mer forvirra... Begynner å få vondt i hodet av all tenkingen :)

Det som er mest merkelig er at jeg brukte akurat samme apache og tomcat versjon på en annen maskin, og da gikk det fint uten noe knot. Bare å legge til en liten linje i httpd.conf + å kopiere inn mod_jk.dll

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...