JAX-WS-Web-service auf dem Tomcat ohne sun-jaxws.xml
Ich versuche zu minimieren, die erforderliche Konfiguration, während die Bereitstellung von JAX-WS-basierte Web-service auf den Tomcat. Mit der Einführung der Servlet 3.0 (unterstützt von Tomcat 7+), web.xml
geworfen werden kann, aber es ist immer noch sun-jaxws.xml
. Diese blog-post ist interessant:
Natürlich, mit der Verwendung von jax-ws Annotationen, selbst-Konfiguration
Sonne-jaxws.xml kann optional sein, so dass es völlig descriptor
kostenlos, aber erfordert die Angabe einer Standard-url-Muster wie in
JSR-109 oder benutzerdefinierte Muster wie in Jersey-REST-services, in der JAX-WS
- Spezifikation.
Ist es möglich, zu vermeiden sun-jaxws.xml
auf Tomcat, und wie?
InformationsquelleAutor Miljen Mikic | 2013-05-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider ist die Konfiguration muss existieren irgendwo. Das ist obligatorisch, pro Quelle. Ob Sie es glauben oder nicht, die Lage des sun-jaxws.xml die Datei ist hart codiert /WEB-INF/sun-jaxws.xml (danke, Jungs @ U-Bahn).
Zu erreichen, benötigen Sie die Kontrolle in die folgenden Klassen
public final class WSServletContextListener
public class WSServlet
, Was geschehen muss:
WSServletContextListener
wird offensichtlich nicht verlängert werden. Dieser listener führt die meisten der Initialisierungen pro die sun-jaxws.xml und jaxws-Katalog-Datei. Wie ich bereits erwähnt, die Lage ist hart codiert. Damit Ihr Weg des geringsten Widerstandes ist hier zuimplementieren Sie Ihre eigenen Vanille-servlet-listener (mit
@WebListener
), und rufen Sie einenew WSServletContextListener()
. Sie werden dann delegieren Sie Ihre eigenencontextInitialized(ServletContext ctxt)
undcontextDestroyed()
Methoden, um diejenigen, die in Ihrer Instanz vonWSServletContextListener
.Generieren Sie die Datei auf Instanziierung der Hörer auf der fly, mit einem
@XmlRootElement
Klasse, werde repräsentieren die sun-jaxws-Datei(ich werde eine Probe geben von diesem in kurzer Zeit, nicht die Zeit jetzt 🙂 ).Es ist eine Menge ärger für so eine entbehrliche Bequemlichkeit, IMO, aber es sollte funktionieren, in der Theorie. Ich Schreibe einige Beispiele und sehen, wie Sie spielen kurz.
sun-jaxws.xml
ist hart codiert :), Was über die Standard-url-Muster, das solltesun-jaxws.xml
optional (siehe blog habe ich zitiert, in meiner Frage), wissen Sie etwas darüber?Lesen, dass die post sorgfältig durch, es scheint alles wie eine Menge Wunschdenken und nicht viel von einer Referenz: Der link in seinem blog-post ist tot. Ich habe es trotzdem geschafft, auf die Spur der Quellen, die er bezog sich auf hier und die readme.txt deutet immer noch auf eine sun-jaxws.xml notwendig ist
InformationsquelleAutor kolossus
Haben, JAX-WS Unterstützung in Tomcat müssen Sie konfigurieren:
Leider ist es schwer das weglassen der WEB-INF/sun-jaxws.xml - Datei, aber es ist einfacher Weg, um weglassen web.xml Konfiguration, da der Servlet 3.0 API.
Können Sie etwas wie das hier tun:
und
Habe ich es getestet, auf Tomcat-8.5.23 version und es funktioniert. Aber denken Sie daran, dass Sie immer noch müssen WEB-INF/sun-jaxws.xml Datei.
web.xml
- Datei, der bereits in den text der Frage. Die Frage ist, weglassensun-jaxws.xml
- Datei.Ahh okay aber ich habe die Lösung für andere Menschen, die vielleicht nicht wissen, wie man weglassen web.xml Datei für dieses problem. Zum Beispiel hatte ich dieses problem vor einigen Wochen.
InformationsquelleAutor Adrian Malik
Habe ich publised web-Dienste erfolgreich auf diesem Weg. Ich habe verwendet apache cfx für die Veröffentlichung in servletContextListener.
sun-jaxws.xml
ist im Zusammenhang mit diesen Implementierungen. Apache CXF ist die unterschiedliche Implementierung der JAX-WS, damit es nicht haben nichts mitsun-jaxws.xml
.InformationsquelleAutor yunus kula
Haben Sie zum veröffentlichen der web-service. Implementieren Sie einen ServletContextListener und veröffentlichen die Endpunkt:
sun-jaxws.xml ist nicht zwingend von Spezifikationen...Wenn Sie Hinweis, zum Beispiel, glassfish metro (U-Bahn) macht es optional. Auch, wenn Sie setzen eine EJB 3.1 als webservice (mit jaxws) Sie können sehen, keine sun-jaxws.xml Datei in die generierte build.
Tomcat nicht unterstützt EJB standardmäßig. Sollten Sie in Betracht ziehen, zum Beispiel, TomEE. Ich erwähnte EJB-nur als Beispiel um zu demonstrieren, keine Bedürfnisse sun-jaxws.xml (Es ist nicht obligatorisch).
Ich persönlich würde immer lieber full application server (z.B. Glassfish) über servlet-container (wie Tomcat). Aber unsere Kunden nutzen, Tomcat und ich bin neugierig, ob es möglich ist, zu vereinfachen, eine Konfiguration erforderlich für die Bereitstellung von Web-services Tomcat. Daher meine Frage speziell an Tomcat, nicht TomEE oder Glassfish.
InformationsquelleAutor Michael Henrique