2012-09-25 4 views
23

Sto dando a JAX-WS una panoramica elevata e ho notato alcuni riferimenti a sun-jaxws.xml (insieme a com.sun.xml.ws.transport.http.servlet.WSServletContextListener e com.sun.xml.ws.transport.http.servlet.WSServlet).sun-jaxws.xml - Quando è necessario e quando no?

In quali situazioni è necessario? (Credo JSR 109 server ?!)

+0

Esattamente dove hai trovato quei riferimenti? – Puce

+0

@Puce: per esempio qui: http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/, e in alcuni altri posti – JohnDoDo

+0

Correlati: http: //stackoverflow.com/questions/16537821/jax-ws-web-service-on-tomcat-without-sun-jaxws-xml –

risposta

32

sun-jaxws.xml è un descrittore di deployment proprietaria necessari quando i servizi web sono distribuite come un archivio di serie WAR su un servlet container non-Java EE5 utilizzando l'implementazione di riferimento del sole.

Sun's RI utilizza WSServletContextListener come listener per eventi contesto servlet e WSServlet come servlet dispatcher; entrambi devono essere dichiarati in web.xml. Il file sun-jaxws.xml viene quindi richiesto per definire gli endpoint del servizio Web per WSServlet per comunicare a quale punto finale deve essere inviata una richiesta di servizio.

In questo modo, i servizi Web possono essere eseguiti in qualsiasi contenitore servlet abilitato RI JAX-WS, sebbene non siano portatili.

Java EE 5 + application server compatibili come Glassfish, the reference implementation, conformi al JSR 109 (Web services 1.2/1.3) e JSR 224 (JAX-WS 2.0/2.1/2.2) e non richiedono non standard sun-jaxws.xml descrittori di deployment.

Si prega di consultare qui per maggiori informazioni:

http://jax-ws.java.net/nonav/2.2.1/docs/UsersGuide.html#1.0_Introduction

http://www.ibm.com/developerworks/java/library/j-jws9/index.html

+1

Grazie per la risposta. Una domanda però, che cosa significa "contenitore servlet EE5 non Java"? Una certa versione dell'api servlet o cosa? – JohnDoDo

+1

Non sono sicuro che sia solo la versione della servlet api a fare la differenza; anche se è sicuramente importante (ad esempio il supporto delle annotazioni). La mia comprensione dei "contenitori servlet non J2EE" - nella misura di questo contesto - è che in un ambiente J2EE 5+ come JBoss AS 7, il supporto JAX-WS 2.0 è garantito automaticamente, ma se è necessario creare servizi Web in altri ambienti come i contenitori legacy del servlet, è ancora possibile fare il lavoro e questa è un'opzione. Certamente, oggi, ci sono altre buone e migliori implementazioni disponibili (ad esempio Apache CFX) tra le quali è possibile scegliere. – RGO

+0

@JohnDoDo - ecco una spiegazione sulla differenza tra il servlet container e il server di applicazioni Java EE completo: http://stackoverflow.com/questions/17181292/java-ee-containers-vs-web-containers/17184620#17184620 –