2009-04-10 7 views
4

Ich versuche, eine Web-Service-Methode über JAX-WS-Annotationen verfügbar zu machen. Viele Beispiele, die ich gesehen habe, verweisen auf die EndPoint.publish() Methode, um schnell den Service in einer Standalone-Anwendung (zB von Java Web Services: Up and Running, 1. Auflage): Stand upServlets + JAX-WS

public class TimeServerPublisher { 
public static void main(String[ ] args) { 
    // 1st argument is the publication URL 
    // 2nd argument is an SIB instance 
    Endpoint.publish("http://127.0.0.1:9876/ts", new TimeServerImpl()); 
} 

}

Eine Sache, die ich vermisse ist, wie im Wesentlichen das Gleiche zu erreichen, aber in einer bestehenden App. Würde ich ein Servlet dafür machen? Wie kann dieser Dienst in einer vorhandenen WAR-Datei ordnungsgemäß veröffentlicht werden?

Antwort

3

In einem Container müssen Sie nicht so veröffentlichen. Der Container wird die Veröffentlichung vornehmen. Wenn Sie JBossServer auf JBoss Server verwenden möchten, versuchen Sie JBossWS, andernfalls ist Axis2 für Tomcat oder einen anderen Server die bessere Wahl.

Lesen Sie mehr von den folgenden Links.

http://jbossws.jboss.org/mediawiki/index.php?title=JBossWS

http://ws.apache.org/axis2/

+1

Oder CXF: http://cwiki.apache.org/CXF20DOC/servlet-transport.html –

+0

Ja, ich habe CXF verpasst :-) –

1

Wie @Jerrish und @andri coments, gibt es verschiedene Ansätze und Lösungen, je nach Ihren Bedenken.

Die Idee dahinter ist, dass Sie die Konfiguration (Port usw.) nicht festlegen müssen, wenn Ihr Webdienst veröffentlicht wird. Der beste Ansatz könnte sein, dies über Konfigurationsdateien (XML, Eigenschaften usw.) oder mithilfe von @Annotations festzulegen. Wenn Sie beispielsweise Frameworks wie Guice oder Spring verwenden, wissen Sie, dass es möglich/empfohlen ist, den Kontext Ihrer Anwendung zu starten, um Objekte, Factories, Datenquellen usw. zu veröffentlichen oder zu initialisieren, und Webservices zu veröffentlichen Aufgabe, die in dieser Zeit erledigt werden kann, weil sie verfügbar sein wird, wenn Sie Ihre Anwendung starten, nicht ?.

Übrigens, ich habe gute Erfahrungen mit CXF und eine andere Lösung könnte Spring Web Services eine weitere leistungsstarke Lösung für die Erstellung von Web-Services sein.