Java Webservice mit JWS Bindingnamen customizen

ProChris

Mitglied
Hallo,

ich arbeite mich gerade in Webservices im Java Kontext ein. Hier mein bisheriger Quellcode:

Java:
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.xml.ws.Endpoint;

@WebService(name = "MySoapBinding", targetNamespace = "http://mynamespace")
@SOAPBinding(style=Style.RPC)
public class Main {
	public int add(int a, int b) {
		return a + b;
	}
	
	public static void main(String[] args) {
		Main main = new Main();
		Endpoint endpoint = Endpoint.publish("http://localhost:8086/cal", main);
	}
}

An sich ist der Service lauffähig. Lasse ich mit die WSDL Datei generieren und importiere diese dann in SoapUI, so fällt folgendes auf. Das WsdlInterface heisst "MainPortBinding". Ist es möglich den Bindingnamen irgendwie zu customizen? Ich möchte individuelle Bindingnamen vergeben. z.B. ohne den Suffix "PortBinding"

Viele Grüße

ProChris
 
Hallo,

ich hab zwar noch nicht so viel Erfahrungen mit der Bottom-Up Methode beim WebService erstellen, aber in der
Code:
@WebService
-Annotation kannst du auch den
Code:
portName
angeben und ihn ganz deinen Wünschen entsprechend benennen.

Also zum Beispiel so:
Code:
@WebService(name = "WebService",
    portName = "WebServiceSOAP",
    targetNamespace = "http://de/WebService")

Ob du dann noch irgendwo anders auch noch andere Einstellungen brauchst, weiß ich nicht genau. Für mich ist der Weg von der WSDL Datei zum vollständigen WebService einfacher. 😉

Aber schau mal hier. Da sind die Möglichkeiten zum Annotieren aufgelistet.

Grüße,
Jay
 
Hallo JayGabriel,

die Annotation kenne ich. Leider kann man darüber zwar den PortName setzen, es wird jedoch der Suffix "PortBinding" dahinter gesetzt.

Kennst Du sonst möglichkeiten?

Viele Grüße

ProChris
 
Hallo,

ich habe gerade einfach mal in einer default WSDL Datei geschaut, was dort alles beim Binding angegeben werden kann.

Zum einen ist mir da aufgefallen, dass man in den Binding Properties nur den Namen fürs Binding angeben und den Porttype auswählen kann. Per default steht bei mir in der WSDL Datei als Name für das Binding
Code:
NewWSDLFileSOAP
. Ob das mit dem Namen dein Problem behebt, weiß ich nicht und kann es morgen auch erst ausprobieren, wenn ich wieder an meinem Entwicklungsrechner bin.

Zum anderen ist mir aufgefallen, dass man den Binding Content ansich nur generieren lassen kann. Also was dann direkt in der WSDL Datei dann an Konfigurationen auftaucht:
[XML]
<wsdl:binding name="NewWSDLFileSOAP" type="tns:NewWSDLFile">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl😱peration name="NewOperation">
<soap😱peration soapAction="http://www.example.org/NewWSDLFile/NewOperation"/>
<wsdl:input>
<soap:body namespace="http://www.example.org/NewWSDLFile/" use="literal"/>
</wsdl:input>
<wsdl😱utput>
<soap:body namespace="http://www.example.org/NewWSDLFile/" use="literal"/>
</wsdl😱utput>
</wsdl😱peration>
</wsdl:binding>
[/XML]

Möglicherweise ist es das, was du suchst, aber diese Einstellungsmöglichkeiten hab ich halt nur beim Top-Down Vorgehen gesehen und welche Annotations dem entsprechen, weiß ich nicht.

Falls du dir das Top-Down Vorgehen mal anschauen möchtest, hier gibt es ein ziemlich gutes und ausführliches Tutorial (in deutsch) dazu, was Eclipse und jaxws benutzt.

Viele Grüße,
Jay

PS: ach ja, was mir da auch noch einfällt: es gibt die Möglichkeit beliebig viele Bindings zu den PortTypes anzugeben (habe ich irgendwo gelesen), also muss es eine Möglichkeit geben, diese selbst zu benennen. Hast du schon mal nach "multiple binding" oder so gegooglet?
 
Hallo Jay,

nein ich habe noch nicht nach "multiple binding" gegoogelt. Wenn alle Stränge reissen, dass werde ich mich wohl doch von der Bottom-Up-Methode verabschieden und die Top-Down-Methode probieren. Ich werde mir jetzt mal das Tutorial von Dir anschauen.

Viele Grüße

ProChris
 

Zurück
Oben