Hallo,
Ich versuche mich gerade in Webservices via SOAP Protokoll. Dazu habe ich das Tutorial von "Java ist auch eine Insel" genutzt und für meine eigene, größere Anwendung angepasst. Allerdings bin ich jetzt auf ein Problem bzw. eine Frage gestoßen:
Ich würde gerne die generelle Funktionalität meines Webservices per Browser überprüfen. Wenn ich das "Driver" Program starte, welches einen primitiven lokalen Webservice Server darstellt, dann kann ich unter localhost:8023 auch wirklich eine einfache Seite aufrufen. Unter "http://localhost:8023/?wsdl" wird mir auch das entsprechende wsdl file angezeigt. Allerdings scheitere ich daran, meine Methode auch über den Browser aufzurufen.
Was ich bisher z.B. probiert habe:
http://127.0.0.1:8023/LegacyDataCon...ternalDataIntoStandardProject?a=test1&b=test2
http://127.0.0.1:8023/LegacyDataConnector/importExternalDataIntoStandardProject?a=test1&b=test2
http://127.0.0.1:8023/LegacyDataCon...ternalDataIntoStandardProject?a=test1&b=test2
Aber alle drei Versuche bringen mich immer nur auf die Startseite des Servers zurück, auf der die laufenden Services und ein Link zum wsdl file aufgeführt sind. Kann mir da jemand weiterhelfen? Was mir unklar ist:
Wie lautet die richtige URL um die Methode importExternalDataIntoStandardProject in meinem Webservice LegacyDataConnector aufzurufen?
Wieso steht in der WSDL "http://webservice.iprod"? Das habe ich nirgendwo angegeben, wird das automatisch aus dem package-namen generiert? Kann man das irgendwie abstellen? Hat das vielleicht einen Einfluss darauf, dass ich es nicht aufrufen kann? Und wieso gibt es unten bei Port-Binding dann noch einmal eine soap:address?
Wofür genau ist die Port-Bezeichnung im WSDL gut? Muss ich die beachten, wenn ich den Service aufrufen möchte?
Nachfolgend: Java-Code & WSDL
[XML]<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. -->
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. -->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.iprod/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webservice.iprod/" name="LegacyDataConnectorWebserviceService">
<types/>
<message name="importExternalDataIntoStandardProject">
<part name="a" type="xsd:string"/>
<part name="b" type="xsd:string"/>
</message>
<message name="importExternalDataIntoStandardProjectResponse">
<part name="result" type="xsd:string"/>
</message>
<portType name="LegacyDataConnector">
<operation name="importExternalDataIntoStandardProject" parameterOrder="a b">
<input wsam:Action="http://webservice.iprod/LegacyDataConnector/importExternalDataIntoStandardProjectRequest" message="tns:importExternalDataIntoStandardProject"/>
<output wsam:Action="http://webservice.iprod/LegacyDataConnector/importExternalDataIntoStandardProjectResponse" message="tns:importExternalDataIntoStandardProjectResponse"/>
</operation>
</portType>
<binding name="LegacyDataConnectorPortBinding" type="tns:LegacyDataConnector">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="importExternalDataIntoStandardProject">
<soapperation soapAction=""/>
<input>
<soap:body use="literal" namespace="http://webservice.iprod/"/>
</input>
<output>
<soap:body use="literal" namespace="http://webservice.iprod/"/>
</output>
</operation>
</binding>
<service name="LegacyDataConnectorWebserviceService">
<port name="LegacyDataConnectorPort" binding="tns:LegacyDataConnectorPortBinding">
<soap:address location="http://localhost:8023/"/>
</port>
</service>
</definitions>[/XML]
Ich versuche mich gerade in Webservices via SOAP Protokoll. Dazu habe ich das Tutorial von "Java ist auch eine Insel" genutzt und für meine eigene, größere Anwendung angepasst. Allerdings bin ich jetzt auf ein Problem bzw. eine Frage gestoßen:
Ich würde gerne die generelle Funktionalität meines Webservices per Browser überprüfen. Wenn ich das "Driver" Program starte, welches einen primitiven lokalen Webservice Server darstellt, dann kann ich unter localhost:8023 auch wirklich eine einfache Seite aufrufen. Unter "http://localhost:8023/?wsdl" wird mir auch das entsprechende wsdl file angezeigt. Allerdings scheitere ich daran, meine Methode auch über den Browser aufzurufen.
Was ich bisher z.B. probiert habe:
http://127.0.0.1:8023/LegacyDataCon...ternalDataIntoStandardProject?a=test1&b=test2
http://127.0.0.1:8023/LegacyDataConnector/importExternalDataIntoStandardProject?a=test1&b=test2
http://127.0.0.1:8023/LegacyDataCon...ternalDataIntoStandardProject?a=test1&b=test2
Aber alle drei Versuche bringen mich immer nur auf die Startseite des Servers zurück, auf der die laufenden Services und ein Link zum wsdl file aufgeführt sind. Kann mir da jemand weiterhelfen? Was mir unklar ist:
Wie lautet die richtige URL um die Methode importExternalDataIntoStandardProject in meinem Webservice LegacyDataConnector aufzurufen?
Wieso steht in der WSDL "http://webservice.iprod"? Das habe ich nirgendwo angegeben, wird das automatisch aus dem package-namen generiert? Kann man das irgendwie abstellen? Hat das vielleicht einen Einfluss darauf, dass ich es nicht aufrufen kann? Und wieso gibt es unten bei Port-Binding dann noch einmal eine soap:address?
Wofür genau ist die Port-Bezeichnung im WSDL gut? Muss ich die beachten, wenn ich den Service aufrufen möchte?
Nachfolgend: Java-Code & WSDL
Java:
package iprod.webservice;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.soap.SOAPBinding;
@WebService(name="LegacyDataConnector")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class LegacyDataConnectorWebservice {
@WebMethod(operationName="importExternalDataIntoStandardProject")
@WebResult(name = "result")
public String importExternalDataIntoStandardProject( @WebParam(name="a") String standardProjectID, @WebParam( name="b") String externalSystemAdapterID) {
System.out.println("Check OK");
return "OK";
}
}
[XML]<?xml version="1.0" encoding="UTF-8"?>
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. -->
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. -->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.iprod/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webservice.iprod/" name="LegacyDataConnectorWebserviceService">
<types/>
<message name="importExternalDataIntoStandardProject">
<part name="a" type="xsd:string"/>
<part name="b" type="xsd:string"/>
</message>
<message name="importExternalDataIntoStandardProjectResponse">
<part name="result" type="xsd:string"/>
</message>
<portType name="LegacyDataConnector">
<operation name="importExternalDataIntoStandardProject" parameterOrder="a b">
<input wsam:Action="http://webservice.iprod/LegacyDataConnector/importExternalDataIntoStandardProjectRequest" message="tns:importExternalDataIntoStandardProject"/>
<output wsam:Action="http://webservice.iprod/LegacyDataConnector/importExternalDataIntoStandardProjectResponse" message="tns:importExternalDataIntoStandardProjectResponse"/>
</operation>
</portType>
<binding name="LegacyDataConnectorPortBinding" type="tns:LegacyDataConnector">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="importExternalDataIntoStandardProject">
<soapperation soapAction=""/>
<input>
<soap:body use="literal" namespace="http://webservice.iprod/"/>
</input>
<output>
<soap:body use="literal" namespace="http://webservice.iprod/"/>
</output>
</operation>
</binding>
<service name="LegacyDataConnectorWebserviceService">
<port name="LegacyDataConnectorPort" binding="tns:LegacyDataConnectorPortBinding">
<soap:address location="http://localhost:8023/"/>
</port>
</service>
</definitions>[/XML]
Zuletzt bearbeitet: