Perché Restlet esecuzione in Tomcat sotto JBoss 5.1 tornare la mia pagina index.html come tipo “application / octet-stream” invece di “text / html”?
Domanda
Ho una home page home.html all'interno di un file di guerra chiamato "webapp-1.0.war". Quando le richieste del browser " http: // dominio / myapp " Voglio che il home.html servito, ma voglio che la barra degli indirizzi browswer di continuare a visualizzare " http: // dominio / myapp ". NON voglio " http: //domain/myapp/home.html " nella barra degli indirizzi.
Così ho messo questo in web.xml:
<welcome-file-list>
<welcome-file>home.html</welcome-file>
</welcome-file-list>
E ho aggiunto un jboss-web.xml con il seguente:
<jboss-web>
<context-root>myapp</context-root>
</jboss-web>
Questo funziona quasi. Quando le richieste del browser " http: // dominio / myapp " il home.html viene inviato, ma il tipo MIME è l'applicazione / octet-stream invece di text / html, e questo rende Firefox credo che sia un file di download.
Soluzione
"octet-stream" è il mime-type di default in Restlet. Il "html" è definito nella mappatura predefinita. Sembra che avete il vostro MetaDataService. È possibile aggiungere i mapping di estensione di questo tipo,
getMetadataService().addExtension("html", MediaType.TEXT_HTML, true);
Altri suggerimenti
Questo non è il comportamento di default.
tipi MIME sono normalmente definied in web.xml
. In caso di Tomcat e cloni, i tipi MIME appserver-default sono definied in /conf/web.xml
.
Questo può tuttavia essere sovrascritto voci di mapping MIME personalizzato in /WEB-INF/web.xml
del webapp o da un HttpServletResponse#setContentType()
in un servlet o un filtro nella catena richiesta-risposta. Posso immaginare che ci sia una sorta di scarsa ascolto filtro su /*
che annusa in modo errato e imposta il tipo di contenuto in base l'URL della richiesta. Vedere se qualcosa di simile esiste nel vostro webapp.
E in effetti sembra essere il comportamento predefinito di Restlet. Dopo averci pensato un po ', suppongo che mi piace il comportamento. Pensando restfully, suppongo che l'applicazione web nel suo complesso (che è ciò che è implicita l'url root) non è proprio la risorsa mio browser è interessato a recuperare. Il browser è veramente interessato a una rappresentazione HTML della risorsa "casa", che è una parte del web app. Quindi credo che lascio. Ma io vado avanti upvote voi, BalusC per aver trovato il tempo di rispondere per me.