[servlet] tomcat webapp deployen

Pagina: 1
Acties:

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
Ik ben bezig met cocoon2, een supercool xml-based webapplication framework. Daarin heb ik alleen een probleempje met een maken van een mysql-connectie. Om te testen of m'n jdbc:mysql connectie uberhaupt wel werkt, wilde ik eventjes een simpel servletje (MySQLtest.class) bouwen zonder cocoon. Het lukt me alleen niet om die in een andere directory te deployen als $CATALINA_HOME/webapps/ROOT/WEB-INF/classes. Die is dan te vinden onder http://barrie:8080/servlet/MySQLtest (de tomcat server heet "barrie"). Volgens veel online tutorials moet het ook goed mogelijk zijn om te deployen in een subdir van $CATALINA_HOME/webapps, zo werkt m'n cocoon2 app immers ook. Ik had het volgende gedaan:

dirs aanmaken:

$CATALINA_HOME/webapps/mysqltest
$CATALINA_HOME/webapps/mysqltest/WEB-INF
$CATALINA_HOME/webapps/mysqltest/WEB-INF/classes
$CATALINA_HOME/webapps/mysqltest/WEB-INF/lib

MySQLtest.class gaat in de /classes directory
m'n appje is nu nog niet echt af, maar als ie af is moet mm.mysql-2.0.14-bin.jar in de /lib directory

filetje aanmaken:

$CATALINA_HOME/webapps/mysqltest/WEB-INF/web.xml

met daarin:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<web-app>
        <display-name>MySQLtest</display-name>
        <session-timeout>30</session-timeout>
        <servlet>
                <servlet-name>mysqltest</servlet-name>
                <servlet-class>MySQLtest</servlet-class>
                <load-on-startup>1</load-on-startup>
                <init-param>
                        <param-name>name</param-name>
                        <param-value>value</param-value>
                </init-param>
        </servlet>
</web-app>


die name, value params zijn een beetje overbodig geloof ik, ik heb dit maar gewoon uit de (dus niet-werkende) tutorial gecopypaste.

war maken:

$ cd $CATALINA_HOME/webapps
$ jar cvf mysqltest.war ./mysqltest

als ik deze war-file in $CATALINA_HOME/webapps laat staan en de uitgepakte dir weghaal, zou de war bij een restart van Tomcat zichzelf uit moeten pakken. Dat gebeurt dus mooi niet (gebeurde wel toen ik cocoon2 ging installeren). Dus maar weer handmatig uitgepakt.

dan schijn je ook nog iets in je $CATALINA_HOME/conf/server.xml te moeten zetten:

code:
1
2
3
4
5
6
<!-- deze voor servlets onder http:/barrie:8080/servlet, werkt prima -->
<Context path="" docBase="ROOT" debug="0"/>

<!-- MySQLtest  -->
<Context path="/mysqltest" docBase="mysqltest" 
crossContext="false" debug="0" reloadable="true"/>


in een tutorial stond er ipv docBase="mysqltest" docBase="webapps/mysqltest", maar aangezien de context voor de tomcat examples als volgt is:

code:
1
2
3
<!-- Tomcat Examples Context -->
<Context path="/examples" docBase="examples" debug="0"          
reloadable="true" crossContext="true">


heb ik maar aangenomen dat dat webapps er niet zo voor hoeft te staan (het werkt overigens toch niet in beide gevallen).

De servlet zou bereikbaar moeten zijn onder http://barrie:8080/mysqltest/servlet/MySQLtest, maar ik krijg gewoon niets anders dan een 404 error.

Kan iemand me hier bij helpen?

sys: Debian 3.0/woody , Blackdown j2sdk1.3.1-FCS, Tomcat4.0.4

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Tomcat maakt bij het starten een log van de gehele opstart procedure. kijk eens in die log of er iets gemeldt wordt over het inladen van die WAR file die je zelf gemaakt hebt.

Signature van nature


  • Juup
  • Registratie: Februari 2000
  • Niet online
Als je tomcat herstart, komt er dan in de log iets vreemds te staan? Bv dat je server.xml corrupt is?
kijk eens in je logs dir.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
uit $CATALINA_HOME/logs/catalina.out:


Starting service Tomcat-Standalone
Apache Tomcat/4.0.4
PARSE error at line 1 column 10
org.xml.sax.SAXParseException: Element type "web-app" must be declared.
Server 1.6 is running
Press [Ctrl]+[C] to abort
Starting service Tomcat-Apache
Apache Tomcat/4.0.4

dit is precies het stuk wat er bij komt als ik 1 keer het startup script draai. ik heb geen idee over WELKE file hij nu loopt te klagen.

  • Juup
  • Registratie: Februari 2000
  • Niet online
Waarschijnlijk over je server.xml.

Post hier eens wat je in de server.xml hebt toegevoegd.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
dit stond uitgecomment, en heb ik aangezet (omdat tutorial x dat zei):
maar als het goed is gaat dit alleen om servlets in de root context mogelijk te maken:
code:
1
2
<!-- Tomcat Root Context -->
<Context path="" docBase="ROOT" debug="0"/>


dit hebbik toegevoegd, om de servlets in de subdir "mysqltest" een context te geven...dat werkt dus niet.
code:
1
2
3
<!-- MySQLtest tutorial -->
<Context path="/mysqltest" docBase="mysqltest" 
crossContext="false" debug="0" reloadable="true"/>

Verwijderd

Ben je niet de DOCTYPE vergeten te definieren in web.xml???:

Voorbeeld web.xml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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/j2ee/dtds/web-app_2_3.dtd">

<web-app>

<servlet>
        <servlet-name>MyServlet</servlet-name>
</servlet>

  <!-- Define the Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
  </servlet-mapping>

</web-app>
Pagina: 1