SOA - Anfänger, Funktionalität Testen

Decrayer

Mitglied
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

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">
<soap:eek:peration 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:

Decrayer

Mitglied
Ich habs hinbekommen!

Lösungsweg:

Die Software SoapUI (Freeware Version) ist ziemlich gut darin, wenn man seinen Webservice testen möchte. Ich hab es ausprobiert und wenn ich das WSDL einlese und einen Test definiere, wird oben auch die verwendete URI angezeigt. Und wenn ich diese angebe, dann erhalte ich auch eine ordentliche Antwort.
 

Ähnliche Java Themen

Neue Themen


Oben