Tomcat Servlet hogyan

Fórumok

Sziasztok!

Most ismerkedek a Tomcat nevű szörnnyel (Windows alatt, de ez szerintem lényegtelen.

A következő a mappastruktúra:

  • WEB-INF
    • classes
      • org/stevengould/javaworld
        • RequestDetails.java
        • RequestDetails.class
      • web.xml

A Java kód biztos yó, mert copy-paste emeltem be egy weblapról.
A web.xml ilyen kis egyszerű:


<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
	<!-- Your servlet definitions go here  -->
    <servlet>
        <servlet-name>RequestDetails</servlet-name>
        <servlet-class>org.stevengould.javaworld.RequestDetails</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RequestDetails</servlet-name>
        <url-pattern>details</url-pattern>
    </servlet-mapping>
</web-app>

A jelenség: a war fájl megkreálása után első körben a localhost:8080/manager/html/list oldalon levő deploy formmal kideployoltam, meg is jelent a listában szépen, de elindulni nem tudott, mert egy szintaxishiba vollt az XML-be.
Amikor Undeploy-oltam, és a war fájlt is leszedtem, majd az xml bug fixálása után megint deployoltam (szintúgy a formmal), akkor már nem is látta a felcsapott webalkalmazást, hiába is frissítettem.

Valaki szájbarágósan el tudja mondani, hogyan kell deployolni és mit tolok el? Tudom, google, de azon már nagyon régen túl vagyunk, a deployolást minden tutor pár szóval intézi.

Esetleg az lehet gond, hogy a Servlet invoker funkció globálisan engedélyezésre került?

Hozzászólások

Hogy én mekkora marha vagyok...

Megoldás:

  • invoker szolgáltatást minden további nélkül tiltani (ez vitte el a dolgokat odáig, hogy a végén semmilyen webservice nem volt, csak a /manager mega /host-manager
  • ${WEBAPPNAME}\WEB-INF\classes -be a megfelelő stuffok kreálása (mintha sima java dolog lenne).
  • web.xml:
    
    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <!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>
     
      <displayname>Request Detail stuffz</displayname>
      <servlet>
        <servlet-name>
            RequestDetails
        </servlet-name>
    
        <servlet-class>
            RequestDetails
        </servlet-class>
      </servlet>
    
      <servlet>
        <servlet-name>
            HelloWWW
        </servlet-name>
    
        <servlet-class>
            com.coreservlets.examples.HelloWWW
        </servlet-class>
      </servlet>
    
    
      <servlet-mapping>
        <servlet-name>
            RequestDetails
        </servlet-name>
        <url-pattern>
            /servlet/RequestDetails
        </url-pattern>
      </servlet-mapping>
    
      <servlet-mapping>
        <servlet-name>
            HelloWWW
        </servlet-name>
        <url-pattern>
            /servlet/HelloWWW
        </url-pattern>
      </servlet-mapping>
    
    </web-app>
    

A topicnyitóban beírt konfigban két hiba is volt:

  • Az url-pattern relatív volt, és innentől értelmezés kérdése, ki-mit ért alatta. Az abszolút a webalkalmazás gyökerétől számol, az új konfiggal ez http://localhost:8080/${WEBAPPNAME}/servlet/RequestDetails volt.
  • Az invoker szervlet minden ilyesmit felülvág. Akkor már inkább Gentoo-s módszerrel konfigoljunk mindent mi magunk.