|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
JSP e IIS
Salve a tutti!
Volevo chiedere a qualche luminare qui presente se e come è possibile risolvere questo problema. Ho installato IIS, che mi fa da web server, sulla classica porta 80. Vorrei fare in modo che collegandomi a questa porta vengano anche visualizzate correttamente le pagine jsp. Sostanzialmente quello che NON voglio è avere due porte aperte, una con Tomcat e una con IIS. Vorrei invece che IIS chiedesse a tomcat di elaborare le pagine jsp, la passasse a IIS che poi me la fa vedere... Oppure se questo non è possibile, almeno vorrei sapere come fare a creare una pagina che tramite IIS (porta 80) non mi visualizzi (per fare un esempio) miosito.com:8080/path1 (se 8080 è la porta di tomcat), ma sempre miosito.com/path2 (sulla porta 80). Questo "semplicemente" per una questione di firewall... Non voglio sia accessibile direttamente dall'esterno, per esempio, il Tomcat, e perchè voglio avere una sola porta per il web che fa tutto (anche se sotto sotto, per i fatti suoi, delega alcune cose ad altri...). Ringrazio in anticipo per il supporto!! Grazie! Ciauuuuuu! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
in breve:
- ti procuri (non mi ricordo se di default e' incluso in tomcat ) jk2 sul sito di tomcat e lo installi - configuri in tomcat un connettore ajp13 che risponderà alle richiste del plugin che hai installato in IIS - configuri IIS per ridirigere le url che desideri sul connettore tomcat - disabiliti il connettore http in tomcat (coyote), in modo da non rendere accessibile le jps anche accedendo direttamente a tomcat, "saltando" IIS |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
|
__________________
---> Lombardp CSS Certified Expert (Master Level) at Experts-Exchange Proud user of LITHIUM forum : CPU technology Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Scusa, ma non riesco proprio a far funzionare il tutto... ho provato e riprovato... ma non funziona.
Ho installato il JK2 (a mano, seguendo le istruzioni trovate sull'installazione, perchè lanciando install4iis.js mi da errore "Unable to find Web Server ROOT direcrory" [direcrory, proprio così!]... ma forse ora da questo errore perchè è già installato... boh!) ma non so se effettivamente con successo. Tomcat è configurato sulla porta 81, e vedo che c'è anche un'altra porta aperta da Tomcat, e cioè la 8009, quella che è configurata come porta standard per il connettore. E questo è un buon segno. Ma non riceve, non trasmette... Su IIS ho creato la cartella virtuale jakarta che punta a quella di tomcat/bin (dove c'è isapi_redirector2.dll) e ho settato che accetta l'esecuzione. Poi sul sito ho inserito fra le proprietà sotto ISAPI Filters il filtro chiamato jakarta che risulta "loaded" con priorità alta (il pulsante Enabled non è selezionabile, segno che è funzionante). Provo a caricare un qualsiasi file messo nella root di tomcat o in qualche sottocartella, e non me lo mappa, a quanto pare... ma chissà dov'è (o dove sono) gli errori!! Se magari puoi darmi qualche suggerimento, o provare a dirmi magari un po' più passo passo come fare, magari è meglio... oppure magari se ho dimenticato qualcosa, o se c'è qualche file di configurazione che non modificato e che avrei dovuto... Grazie mille!!! Ciauuuu! |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
e' vecchia, usa tomcat 3.2 e ajp12 che ormai non e' piu' supportato. sullo stesso sito c'e' documentazione piu' recente |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
purtroppo io l'ho sempre fatto con apache, mai con IIS (infatti ti ho scritto la procedura a grandi linee perche' non avevo idea di eventuali dettagli su IIS). arrivi a visualizzare qualcosa nel log di tomcat? e in quello di IIS? |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Non funziona!!
Questo è quello che dice il log di iis:
2004-09-23 01:53:29 127.0.0.1 - 127.0.0.1 80 GET /jakarta/isapi_redirector2.dll - 500 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0) Tomcat invece non dice nulla... penso ci sia un errore (mio, ovviamente) nella configurazione dei files jk2.properties, workers2.properties e server.xml Potresti dirmi come vanno configurati questi files? Io veramente le ho provate tutte... ma non riesco ad uscirne! Poi non riesco a capire come funziona il meccanismo [uri:] per mappare... mappi l'url o l'indirizzo che metti dopo i due punti, ma dove mappi sul webserver?? Grazie mille ancora! |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
se non arriva a tomcat (e se non leggi niente nei log non ci arriva) il problema e' probabilmente nel workers.proprties.
nel server.xml devi abilitare un connettore ajp13, ma dato che ha aperto la porta 8009 sicuramente l'hai fatto. nel workers2.properties devi mappare le url che verranno ridirette verso tomcat. nel mio ho ad esempio: [uri:/axis/*] info=Axis worker=ajp13:localhost:8009 debug=1 che vuol dire che quando chiamero' apache con un url del tipo: https://localhost/axis/happyaxis.jsp la richiesta verrà ridiretta su tomcat N.B. la parte che segue l'host viene mantenuta tale e quale, quindi su tomcat arriva una richiesta a /axis/happyaxis.jsp |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Guarda, ti copio le configurazioni che ho io... secondo me dovrebbe andare... io ho seguito le indicazioni di un po' di guide su internet, però un paio erano in tedesco (e io il tedesco non lo so!), un altro po' parlavano di iis6 e versioni diverse di tomcat. Per la cronaca io uso iis5 (con win2000 server) e tomcat 5.5.2 (che usa java 1.5) e il jk2 (2.0.4).
Ecco il mio file workers2.properties : [shm] info=Scoreboard. Requried for reconfiguration and status with multiprocess servers. file=anon # Defines a load balancer named lb. Use even if you only have one machine. [lb:lb] # Example socket channel, override port and host. [channel.socket:127.0.0.1:8009] info=Ajp13 forwarding over socket port=8009 host=127.0.0.1 # define the worker [ajp13:127.0.0.1:8009] channel=channel.socket:127.0.0.1:8009 group=lb [status:] info=Status worker, displays runtime information [uri:/prova/*] group=lb [uri:/jkstatus/*] info=The Tomcat /jkstatus handler group=status: [logger.file:default] info=Konfiguration des unter workerEnv angegebenen logs fuer JK2 ver=200480501124 file=C:\Program Files\Tomcat\logs\jk2.log level=info Il file jk2.properties è questo: channelSocket.port=8009 Ma potrebbe anche non averlo, credo, tanto è il settaggio standard. Basterebbe il file vuoto, a quanto sembra... Questo invece è il file server.xml (riporto solo le cose non commentate, ovviamente): <Server port="8005" shutdown="SHUTDOWN" debug="0"> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/> <GlobalNamingResources> <!-- Test entry for demonstration purposes --> <Environment name="simpleValue" type="java.lang.Integer" value="30"/> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users --> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="81" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" /> <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" enableLookups="true" redirectPort="8443" debug="0" useURIValidationHack="false" protocol="AJP/1.3" /> <Engine name="Catalina" defaultHost="localhost" debug="0"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" debug="0" resourceName="UserDatabase"/> <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> </Engine> </Service> </Server> Che ci sia qualcosa di sbagliato nella dichiarazione/definizione nel connettore AJ3? Cosa devo mettere nella redirectPort? Quello 8443 è il valore standard, ma mi sembra un po' assurdo... ho provato sia a mettere la porta 81 in cui ho tomcat... ma niente... Grazie mille ancora! |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
hai fatto un casino spaventoso
inizia a modificare : [uri:/prova/*] group=lb con [uri:/prova/*] worker=ajp13:127.0.0.1:8009 debug=1 poi qui # define the worker [ajp13:127.0.0.1:8009] channel=channel.socket:127.0.0.1:8009 group=lb togli la riga con group e fai una prova |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Niente da fare... ho provato a fare come dici tu, ma così non funziona. Il problema è che a Tomcat (o al connettore) non arriva nulla... nei log non c'è segno di raggiungimento, e neppure nel traffico monitorato dal mio firewall non c'è alcuna segnalazione di trasferimento dati... c'è solo aperta la porta 81 (tomcat) e la 8009 del connettore, ma nulla da fare... Forse è sbagliata qualche qualche altra configurazione? Cosa potrei provare... ?!
Disperazione!!!! Grazie mille ancora! |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
nel worker2.properties inserisci in cima una sezione per loggare:
[logger] level=DEBUG logger.file=c:\jk2.log e guarda se ti dice qualcosa |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Niente da fare, come se non l'avessi scritto...
ti dico cosa mi dicono i due log principali, quello di tomcat jakarta_service_20040924.log: [2004-09-24 13:04:31] [1176 prunsrv.c] [debug] Procrun log initialized [2004-09-24 13:04:31] [info] Running Service... [2004-09-24 13:04:31] [1028 prunsrv.c] [debug] Inside ServiceMain... [2004-09-24 13:04:31] [info] Starting service... [2004-09-24 13:04:32] [405 javajni.c] [debug] Jvm Option[0] -Dcatalina.home=C:\Program Files\Tomcat [2004-09-24 13:04:32] [405 javajni.c] [debug] Jvm Option[1] -Djava.endorsed.dirs=C:\Program Files\Tomcat\common\endorsed [2004-09-24 13:04:32] [405 javajni.c] [debug] Jvm Option[2] -Djava.io.tmpdir=C:\Program Files\Tomcat\temp [2004-09-24 13:04:32] [405 javajni.c] [debug] Jvm Option[3] -Xrs [2004-09-24 13:04:32] [405 javajni.c] [debug] Jvm Option[4] -Djava.class.path=C:\Program Files\Tomcat\bin\bootstrap.jar [2004-09-24 13:04:32] [405 javajni.c] [debug] Jvm Option[5] vfprintf [2004-09-24 13:04:34] [491 javajni.c] [debug] argv[0] = start [2004-09-24 13:04:35] [903 prunsrv.c] [debug] Java started org/apache/catalina/startup/Bootstrap [2004-09-24 13:04:36] [info] Service started in 4226 ms. [2004-09-24 13:04:36] [1102 prunsrv.c] [debug] Waitning worker to finish... e quello di standard output: Sep 24, 2004 1:04:39 PM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-81 Sep 24, 2004 1:04:40 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 2955 ms Sep 24, 2004 1:04:40 PM org.apache.catalina.core.StandardService start INFO: Starting service Catalina Sep 24, 2004 1:04:40 PM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/5.5.2 Sep 24, 2004 1:04:40 PM org.apache.catalina.core.StandardHost start INFO: XML validation disabled Sep 24, 2004 1:04:43 PM org.apache.catalina.core.ApplicationContext log INFO: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]] Sep 24, 2004 1:04:44 PM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextInitialized() Sep 24, 2004 1:04:44 PM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextInitialized() Sep 24, 2004 1:04:45 PM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextInitialized() Sep 24, 2004 1:04:45 PM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextInitialized() Sep 24, 2004 1:04:45 PM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-81 Sep 24, 2004 1:04:46 PM org.apache.jk.common.ChannelSocket init INFO: JK2: ajp13 listening on /0.0.0.0:8009 Sep 24, 2004 1:04:46 PM org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=10/151 config=C:\Program Files\Tomcat\conf\jk2.properties Sep 24, 2004 1:04:46 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 6319 ms Lo standard error è vuoto. |
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Scusa, forse non mi sono spiegato bene... il file che doveva creare non l'ha creato!!!
|
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Novità!!
Non so come, non so perchè... ma adesso funziona abbastanza. Ho configurato il /jkstatus nel workers2.properties così:
[uri:/jkstatus/*] info=The Tomcat /jkstatus handler group=status: e mi carica tramite iis questa pagina, per cui funziona (anche con tomcat spento... tra l'altro...). Avevo configurato un uri sulla cartella /prova, e questo ora funziona (cioè è tomcat che processa tutto, e poi passa a iis). Questo è quello che dice la tabella all'interno del /jkstatus: id name host uri group context inheritGlobals match_type servlet timing aliases path 0 /prova/* * /prova/* ajp13:127.0.0.1:8009 / 1 prefix null 0 null /prova/* 0 /jkstatus/* * /jkstatus/* status: / 1 prefix null 0 null /jkstatus/* 0 * * null lb:lb null 1 host null 0 null null 0 */ * / lb:lb / 1 context null 0 null / 0 /prova2/* * /prova2/* ajp13:127.0.0.1:8009 null 1 prefix null 0 null /prova2/* Il problema è che se modifico la cartella prova in prova2 si ricorda sempre di prova, e che pur avendo tolto alcuni settaggi di logging in modalità debug (quello che mi avevi detto tu, che riempie l'event viewer nel giro di pochi minuti...) questi rimangono attivi e ancora validi, anche se disattivo tomcat (che è un servizio)... Se spengo tomcat, appunto, i settaggi restano in memoria, e li posso sempre visualizzare tramite iis scrivendo http://localhost/jkstatus ... però non posso più accedere a /prova (il che mi sembra anche ovvio). Però il problema ora è che se configuro un'altro uri non me lo da buono... forse perchè (come si vede sopra nella "tabella") /prova/* ha context / e /prova2 ha context null? Cosa potrei fare per risolvere questo problema? Posso definire più uri con uno stesso worker? Del tipo... se scrivo [uri:/prova/*] worker=ajp13:127.0.0.1:8009 debug=1 posso scrivere la stessa identica cosa per prova2? [uri:/prova2/*] worker=ajp13:127.0.0.1:8009 debug=1 Se aggiungo la configurazione di prova2 /jkstatus se ne accorge subito anche con tomcat spento. Ma se tolgo /prova rimane sempre in memoria... Che fare? Grazie mille, comunque... ho fatto passi da gigante!! |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
non ho capito niente
naturalmente puoi definire piu' uri sullo stesso worker, ma non ho capito bene cos'e' che non ti funziona. |
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Scusa, ma a volte faccio un po' casino a spiegarmi (e non solo).
Il discorso è che, se decido di cambiare uri, il cambiamento viene rilevato ma non reso attivo, diciamo. Mi viene scritto che c'è il nuovo uri, ma non funziona. Per farlo funzionare, e per cambiare le varie configurazioni (quali ad esempio il settaggio dei log, per esempio), devo riavviare il server IIS perchè le modifiche funzionino attivamente. Sostanzialmente tutto quello che viene cambiato nella configurazione viene trovato in tempo reale, però viene reso attivo solo se riavvio IIS (il che, francamente, è molto seccante, soprattutto se devi aggiungere un uri e basta). Ho provato a mettere più uri con un solo worker, e funziona. All'inizio avevo appunto confuso il problema con questa cosa che ho poi verificato riavviando IIS, e cioè appunto che le modifiche vengono rese attive dopo il riavvio... Per farti un esempio: configuro che c'è l'uri:/prova/*, faccio partire IIS, cambio l'uri:/prova/* con uri:/prova2/*. Se provo ad accedere con il browser al server di iis sotto /prova funziona (anche se il settaggio modificato non lo dovrebbe più rendere accessibile), se provo /prova2 non va, come se non fosse configurato. Se però si utilizza la pagine di analisi interna /fkstatus che viene configurata di default, e che ti fa vedere statistiche, log, e i dati di accesso e successo delle richieste del connettore, questa ti mostra che ha letto il cambiamento di configurazione (nel senso che hai "aggiunto" /prova2), però non modifica la configurazione passata. Aggiunge, diciamo, ma non rendendo attivo (perchè /prova2 non funziona), e tiene buona la configurazione iniziale (perchè, anche dopo aver modificato il file di configurazione /prova è accessibile). Se si riavvia IIS succede che vede solamente /prova2, ovviamente. Però, ecco, la cosa poco soddisfacente è appunto che bisogna riavviare tutto IIS!!! E questo è abbastanza fastidioso... Mi chiedevo se era possibile rendere aggiornabile in tempo reale il cambiamento di configurazione, e eventualmente se questo stesso tipo di problema è lo stesso anche collegandosi, per esempio, con apache! Grazie! |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
lunedì faccio la prova con apache ma secondo me il comportamente che verifichi e' normale.
non riesco a capire la necessità di continuare a cambiare i mappaggi, se hai una webapp con due servlet con uri: http://www.ciovo.it/myapp/Servlet1 e http://www.ciovo.it/myapp/Servlet2 avrai solo un mapping per /myapp e non uno per servlet. diciamo che generalmente ne hai uno per ogni webapplicaton che tomcat ospita. i riavvi di IIS così facendo non dovrebbero essere frequenti. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:40.



















