WebService Client: Parameterübergabe

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo

Ich möchte auf den hier beschriebenen StockQuote-WebService zugreifen mittels folgendem "Client":
Code:
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;

public class Client {

    public static void main(String[] args) throws Exception {
         URL url = new URL("http://www.webservicex.net/stockquote.asmx?WSDL");
        
         String ns = "http://www.webserviceX.NET/";
         QName qname = new QName(ns, "StockQuote");
         QName port = new QName(ns, "StockQuoteSoap");
         QName operation = new QName(ns, "GetQuote");
        
         ServiceFactory factory = ServiceFactory.newInstance();
         Service service = factory.createService(url, qname);
         Call call = service.createCall(port, operation);
         call.addParameter("symbol", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN);
         System.out.println("output:" + call.invoke(new Object[] { "IBM" }));
    }
}
Dabei erhalte ich folgende Fehlermeldung:
Error invoking operation:
javax.xml.rpc.JAXRPCException: Number of parameters passed in (1) doesn't match the number of IN/INOUT parameters (2) from the addParameter() calls

Kann mir jemand auf die Sprünge helfen, was ich falsch mache?

Herzlichen Dank
 
G

Gast

Gast
anscheinend musst du addParameter() weglassen, bei mir funktionierts dann ;)
 
G

Guest

Gast
@AlArenal:
Gemäss dem WSDL-File wird nur ein String, das Symbol der Aktie, erwartet.

@Gast:
Echt?!!? Wenn ich addParameter() auskommentiere erhalte ich diverse Fehlermeldungen:

Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:396)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.setProperty(SAXParserImpl.java:395)
usw...

Könntest du den Code posten, welcher bei dir funktioniert hat?

Gruss
 
S

SlaterB

Gast
tja, viel gibts von meiner Seite (ich war der zweite Gast) nicht zu posten:
einfach dein Code ohne addParameter()

Code:
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceFactory;

public class Test {

	public static void main(String[] args) throws Exception {
		p("start");
		try {
			URL url =
				new URL("http://www.webservicex.net/stockquote.asmx?WSDL");

			String ns = "http://www.webserviceX.NET/";
			QName qname = new QName(ns, "StockQuote");
			QName port = new QName(ns, "StockQuoteSoap");
			QName operation = new QName(ns, "GetQuote");

			ServiceFactory factory = ServiceFactory.newInstance();
			Service service = factory.createService(url, qname);
			Call call = service.createCall(port, operation);
			//			call.addParameter(
			//				"symbol",
			//				org.apache.axis.Constants.XSD_STRING,
			//				ParameterMode.IN);

			p("output:" + call.invoke(new Object[] { "IBM" }));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	public static void p(Object o) {
		System.out.println((o == null ? o : o.toString()));
	}
}
was du vielleicht testen könntest wäre ein Aufruf von invoke mit einem leeren Array,

mit addParameter() bekomme ich da die Fehlermeldung wie oben
Number of parameters passed in (0) doesn't match the number of IN/INOUT parameters (2)

ohne addParameter() logischerweise:
Number of parameters passed in (0) doesn't match the number of IN/INOUT parameters (1)


-------

wie siehts da bei dir aus?

--------

ansonsten benutze ich etwas veraltetes Eclipse 2.1, Java 1.4 und einen ganzen Berg an Bibliotheken damit Java das überhaupt kompiliert.., wenn du sagst welche andere neben jaxrpc.jar benötigt wird, kann ichs mal mit weniger versuchen

Code:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path=""/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="src" path="/Utilities"/>
    <classpathentry kind="lib" path="D:/Test/lib/mysql-connector-java-3.0.14-production-bin.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/log4j-1.2.8.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/jaxrpc.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/xmlsec.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/addressing-1.0.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/axis.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/axis-url.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/bootstrap.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/cog-axis.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/cog-jglobus.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/cog-tomcat.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/cog-url.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/commonj.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/commons-beanutils.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/commons-cli-2.0.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/commons-collections-3.0.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/commons-digester.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/commons-discovery.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/commons-logging.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/concurrent.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/cryptix32.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/cryptix.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/cryptix-asn1.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/db2jcc.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/db2jcc_license_cu.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/globus_usage_core.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/globus_usage_packets_common.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/globus_wsrf_tools_test.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/jakarta-oro-2.0.8.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/jce-jdk13-125.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/jgss.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/junit.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/lucene-1.4-final.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/naming-common.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/naming-factory.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/naming-java.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/naming-resources.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/ogsadai-activities.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/ogsadai-core.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/ogsadai-examples.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/ogsadai-tools.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/ogsadai-wsrf.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/ogsadai-wsrf-stubs.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/opensaml.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/postgresql-8.1dev-403.jdbc2.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/postgresql-8.1dev-403.jdbc2ee.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/postgresql-8.1dev-403.jdbc3.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/puretls.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/resolver.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/saaj.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/servlet.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsdl4j.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_common.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_registry.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_registry_stubs.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_samples_authzService.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_samples_authzService_stubs.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_samples_counter.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_samples_counter_stubs.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_samples_mgmt.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_samples_mgmt_stubs.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_core_stubs.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_provider_jce.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_test.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_test_interop.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_test_interop_stubs.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_test_unit.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_test_unit_stubs.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wsrf_tools.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/wss4j.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/xalan.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/xercesImpl.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/xml-apis.jar"/>
    <classpathentry kind="lib" path="D:/Test/lib/xmldb.jar"/>
    <classpathentry kind="output" path=""/>
</classpath>

;)
 

zubi

Aktives Mitglied
Danke für deine Antwort (ich bin der Gast-Startposter :)).

Wenn ich addParameter() weglasse und invoke() einen leeren Object-Array übergebe, erhalte ich folgende Meldungen:

log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString: Error invoking operation:
javax.xml.rpc.JAXRPCException: Number of parameters passed in (0) doesn't match the number of IN/INOUT parameters (1) from the addParameter() calls
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:AxisFault

Mit addParameter() und leerem Array erhalte ich die gleiche Meldung wie du (0 von 2 erwarteten Parameter).

Zu meiner Umgebung: Die Klasse liegt in einem J2EE 1.4 Projekt erstellt vom JBoss-IDE PlugIn in Eclipse 3.1.2. Dabei werden standardmässig die J2EE 1.4, die Apache Axis 1.2 und die Web Services 1.0 Libraries dem Classpath hinzugefügt. Welche jedoch tatsächlich benutzt werden (sowohl für das Kompilieren als auch oder vorallem für die Ausführung) ist mir momentan noch nicht klar; ich habe diverse unterschiedliche Runtime-Fehler produziert, indem ich eine Bibliothek nach der anderen hinzugefügt habe...
Ich hab' irgendwie das Gefühl, dass auch hier der Fehler liegen muss, ansonsten müsste es bei mir ja auch funktionieren.
 
S

SlaterB

Gast
also in der Firma mit neueren Eclipse und Java 1.5 gehts auch wie von mir gepostet,
beide Male unter Windows,
vielleicht können ja noch andere testen um sicher zu gehen ;)
 

zubi

Aktives Mitglied
Es tut laufen :D. Seit ich die "original" Libraries des aktuellen Axis-Release verwende, funktioniert die Abfrage. Wo der Fehler in den von JBoss-IDE gewählten Bibliotheken liegt, weiss ich nicht und will ich momentan auch nicht wissen :wink: .
Jedenfalls herzlichen Dank für deine Hilfe SlaterB!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H SQL Daten von Webservice an Client übergeben Allgemeines EE 3
L Web-Client - SessionBean - WebService Allgemeines EE 2
M einfacher REST Webservice Allgemeines EE 4
M RESTful Webservice mit json Allgemeines EE 2
A Webservice (SOAP) Lookup Allgemeines EE 1
D Webservice benutzen Allgemeines EE 4
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
N Authentication/UserPrincipal mit Rest Webservice? Allgemeines EE 6
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
B Inject webservice von cxf.xml Allgemeines EE 1
F ein wenig Hilfe - Webservice Allgemeines EE 1
D Servlet Webservice Konfigurationsdateien Best Practice Allgemeines EE 3
D Java Projekt goes Webservice Allgemeines EE 6
G WebService Concurrency Allgemeines EE 6
G WebService portieren Allgemeines EE 11
H Webservice testen Allgemeines EE 7
M Webservice - Anhang senden und codieren Allgemeines EE 4
M Spring: Bean als Webservice freigeben Allgemeines EE 9
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
O webservice mit java erstellen. was brauch ich alles dazu? Allgemeines EE 53
B .net-Webservice aufrufen Allgemeines EE 9
C HashMap über Webservice übertragen Allgemeines EE 2
G REST Webservice Allgemeines EE 11
H WebService mittels SessionBean aufrufen? Allgemeines EE 7
F JBoss WebService Allgemeines EE 3
S webservice mit tomcat und axis ohne eclipse laufen lassen? Allgemeines EE 2
R Bei AXIS-Start gleich WebService starten Allgemeines EE 2
R Embedded WebService-Server Allgemeines EE 4
L WebService Problem mit SessionBean Allgemeines EE 14
C WebService deployen .Verzweiflung. Allgemeines EE 2
M Google - WebService Allgemeines EE 3
M Probleme beim Webservice Deployment(Sun ApplicationServer) Allgemeines EE 2
LimDul Rest-Client/DTOs aus JSON Ergebnis generieren Allgemeines EE 3
I Client Desktop -> Update in Browser? Allgemeines EE 0
Yamanuchi Glassfish 4 : Client Anzahl restriktieren Allgemeines EE 2
R Web-Applikation mit GWT- und Android-Client Allgemeines EE 0
B Ordner von Client an Server senden Allgemeines EE 2
J Client Request vom Server aus. Allgemeines EE 2
T Client IP ermitteln Allgemeines EE 3
C Objekte aus EJB an Client schicken Allgemeines EE 6
T JMX und ServiceMBean - Zugriff mittels Client Allgemeines EE 2
S Rich Client Application mit Eclipse/WebLogic/EclipseLink/EJB3 Allgemeines EE 2
C JMS Remote Client Allgemeines EE 5
G EJB client Allgemeines EE 4
W JBoss log dependencies aus jbossall-client.jar Allgemeines EE 7
W Client als Jar und die vielen Abhängigkeiten Allgemeines EE 2
P unique ID am Client Allgemeines EE 3
G XML vom Server zum Client Allgemeines EE 4
D Wohin mit Resourcen (Bilder, txt Dateien) im Application Client Allgemeines EE 3
J geschützter Bean zugriff mit einem Rich-Client Allgemeines EE 2
P Client startet viel zu langsam ??? Allgemeines EE 5
MQue Server -> Client zyklische Daten senden Allgemeines EE 20
K Glassfish Application Client Allgemeines EE 4
C EntityBean im GWT-Client Allgemeines EE 2
foobar Client-Jar und JPA-Entities für Remotzugriff Allgemeines EE 12
I Session-Attribute von Client zugänglich? Allgemeines EE 6
M Objektübergabe von Client zum Server Allgemeines EE 11
R EJB Client: Probleme mit der Client.jar Allgemeines EE 2
M "Auto Client-Request" oder Server-Push oder Ajax – Allgemeines EE 2
B Client starten ohne Eclipse Allgemeines EE 4
B Client ausführen mit JBoss v4.2 Allgemeines EE 3
G AnfängerFrage: EJB 3 und Enterprise Client Allgemeines EE 4
M probleme mit client server kommunikation Allgemeines EE 3
K Tomcat als Client nutzen Allgemeines EE 2
K Mail Client Allgemeines EE 2
M PDF im neuen Browserfenster auf Client-Rechner anzeigen Allgemeines EE 5
F Wie heisst das , was der Client als anfrage sendet? Allgemeines EE 3
N Wie heisst das was der Client beim Http Server anfragt? Allgemeines EE 6
N Tomcat -> Binary aus DB lesen und an Browser/Client sende Allgemeines EE 9
J Axis Client - Welcher JARs mitliefern? Allgemeines EE 5
B Java-Client für eBaySOAP-API liefert HTTP(400) Bad Request Allgemeines EE 2
A problem mit client Allgemeines EE 3
M EJB-client: jar-Archiv als Export aus Eclipse läuft nicht Allgemeines EE 5
M Entity Beans: Rückgabe von Collectionen an Client Allgemeines EE 2
A Kodierungsproblem bei Parameterübergabe von Browser an Servlet (GET) Allgemeines EE 2
H Parameterübergabe ohne Formular? Allgemeines EE 7
G Parameterübergabe u. -zugriff bei jsp:include Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben