Aiuto su Webapps Tomcat

Ciao a tutti gli esperti del forum, scusatemi per la lunghezza del messaggio. Vorrei un grande aiuto per la pubblicazione del mio webapps.

Ho creato sul mio apache tomcat un sito raggiungibile tramite l’indirizzo
http://localhost:8080/OsteriaORistorante/CercaRistorante.htm
Il tutto funziona correttamente:

  • Tomcat viene avviato senza errori
  • Il sito funziona e non da errori
  • E soprattutto, le mie pagine gestite tramite framework Spring funzionano perfettamente
    (@RequestMapping(value="/CercaRistorante.htm", method=RequestMethod.GET)
    public ModelAndView CercaRistorante……………….
    ………………………………………)

Quanto sopra funziona sia in Eclipse con server Tomcat, sia copiando l’intero folder WebContent nel folder webapps di Tomcat5
Il mio casino nasce nel momento in cui ho pubblicato il WebContent nel hosting acquistato su mondoserver.com (hosting con java, mysql, apache tomcat).
In pratica ho pubblicato il tutto sotto il folder /osteriaoristorante.it/html, ho riavviato Tomcat ma stranamente sembra non caricare nulla del folder WEB-INF. Di seguito trovate il catalina.log:
[SIZE=1]
Oct 16, 2012 6:20:15 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/i386:/lib:/usr/lib
Oct 16, 2012 6:20:15 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘debug’ to ‘0’ did not find a matching property.
Oct 16, 2012 6:20:15 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler “ajp-bio-9024”]
Oct 16, 2012 6:20:15 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 901 ms
Oct 16, 2012 6:20:15 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Oct 16, 2012 6:20:15 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.27
Oct 16, 2012 6:20:37 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [20,795] milliseconds.
Oct 16, 2012 6:20:37 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /nfs_home/oster588/osteriaoristorante.it/html/modalfiles
Oct 16, 2012 6:20:37 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /nfs_home/oster588/osteriaoristorante.it/html/windowfiles
Oct 16, 2012 6:20:37 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /nfs_home/oster588/osteriaoristorante.it/html/res
Oct 16, 2012 6:20:37 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /nfs_home/oster588/osteriaoristorante.it/html/img2
Oct 16, 2012 6:20:37 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /nfs_home/oster588/osteriaoristorante.it/html/images
Oct 16, 2012 6:20:37 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler “ajp-bio-9024”]
Oct 16, 2012 6:20:37 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 21675 ms
[/SIZE]
Di seguito la struttura presente sul dominio:
[SIZE=1]/osteriaoristorante.it/html
/images
/img2
/res
….
/WEB-INF
Web.xml
OsteriaORistorante-servlet.xml
/classes
/jsp
/lib
a.html
b.html
[/SIZE]
Invece se tramite l’interfaccia messa a disposizione di mondoserver.com, pubblico il sito tramite il deploy del war generato da eclipse, viene creata nel folder /osteriaoristorante.it/html un folder chiamato OsteriaORistorante con ovviamente tutta la struttura sopra esposta al suo interno. Magicamente Tomcat vede tutto il contenuto di /osteriaoristorante.it/html/osteriaoristorante/WEB-INF con annesse classi
A questo punto il sito è raggiungibile solo tramite l’indirizzo http://www.osteriaoristorante.it/OsteriaORistorante/ e soprattutto tutte le mie pagine gestite tramite spring (RequestMapping) NON FUNZIONANO. Credo bisognerebbe riconfigurare un po’ di classi java. Ma la mia domanda è: cosa devo fare per far funzionare il tutto partendo dall’indirizzo http://www.osteriaoristorante.it/??
Se può esservi utile il web.xml:

[SIZE=1]

<?xml version="1.0" encoding="UTF-8"?> OsteriaORistorante
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext-security.xml
        classpath:applicationContext-common-business.xml
        classpath:applicationContext-common-authorization.xml
    </param-value>
</context-param>

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>

<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>OsteriaORistorante.root</param-value>
</context-param>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<servlet>
    <servlet-name>OsteriaORistorante</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet>
    <servlet-name>remoting</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>OsteriaORistorante</servlet-name>
    <url-pattern>*.htm</url-pattern>
 </servlet-mapping>

<servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/remoting/*</url-pattern>
</servlet-mapping>

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

<error-page>
    <error-code>403</error-code>
    <location>/error.html</location>
</error-page>

[/SIZE]
Se avete bisogno di altre info, fatemi sapere
Grazie ovviamente!

Quando carichi il war su tomcat, ti crea un sottodirectory dove va a leggere il tutto, es: localhost:8080/miosito, quindi anche quando pubblichi in host ti crea questa sottodirectory dove punta la tua applicazione.
Quindi per farlo puntare sulla root del sito devi fare un virtual hosting. Prova a vedere nelle impostazioni del tuo host se c’è questa possibilità.
Una volta fatto ciò bisognerebbe riconfigurare il web.xml perché si carichi in modo giusto tutti i file di configurazione e le servlet. Poi inviare i log della pubblicazione con war??

Ciao,
“devi fare un virtual hosting”: se chiedo una cosa del genere al help desk del dominio, sicuramente mi chiederanno: cosa dobbiamo fare? quali file di configurazione dobbiamo modificare? Mi occorrono più dettagli se vuoi aiutarmi.
La stessa cosa sul file web.xml

I log del deploy del war non posso averli

Grazie per l’interessamento

[quote=pagnolo]Quando carichi il war su tomcat, ti crea un sottodirectory dove va a leggere il tutto, es: localhost:8080/miosito, quindi anche quando pubblichi in host ti crea questa sottodirectory dove punta la tua applicazione.
Quindi per farlo puntare sulla root del sito devi fare un virtual hosting. Prova a vedere nelle impostazioni del tuo host se c’è questa possibilità.
Una volta fatto ciò bisognerebbe riconfigurare il web.xml perché si carichi in modo giusto tutti i file di configurazione e le servlet. Poi inviare i log della pubblicazione con war??[/quote]

praticamente devi far si che l’indirizzo principale http://www.osteriaoristorante.it/ punti alla cartella OsteriaORistorante creata dal web server. Ci deve essere un’impostazione di tomcat che fa questo.
Per i log servirebbero quelli di tomcat subito dopo il deploy del war, per vedere se tutti è caricato a dovere o ci sono errori.
Ho letto anche le faq del hosting, e dice che bisogna pubblicare in maniera esplosa, tramite ftp, l’applicazione nel context predefinito inviato via mail.
Questo significa che http://www.osteriaoristorante.it/ vede sempre e solo un context.
Mentre pubblicando con il war il context contiene anche il nome dell’applicazione.

Ciao,
ma perché l’applicazione deve rispondere alla root di tomcat? Il virtualhosting su tomcat è un casino. Se invece viene mantenuto un Apache come reverse proxy, è possibile riscrivere le URL tramite semplici direttive di ProxyPass.

Magari è una cagata, ma la trovo la soluzione più semplice ed immediata.

Tutto dipende dal hosting dove è ospitato il sito.
Sono andato a leggere le faq su mondoserver.com, e diceva che si ha solo una root context e che quindi bisogna deployare l’applicazione esplosa in questa root.
Apache è sempre la soluzione da preferire…