2009-05-27 4 views
0

Ich habe wirklich Probleme, meinen ersten AXIS SOAP-Client zum Laufen zu bringen. Ich verwende Axis v1.4.Axis 1.4: SOAP-Anfrage kann nicht bearbeitet werden

Unsere WSDL enthält dieses:

.... 
<element name="GetParameters"> 
    <complexType> 
    <sequence> 
     <element name="param1" type="codeapi:SomeParam"/> 
     <element name="param2" type="unsignedShort" minOccurs="0"/> 
     <element name="param3" type="string" minOccurs="0"/> 
     <element name="param4" type="unsignedShort" minOccurs="0"/> 
     <element name="param5" type="unsignedShort" minOccurs="0"/> 
     <element name="param6" type="string" minOccurs="0"/> 
     <element name="param7" type="string" minOccurs="0"/> 
     <element name="param8" type="string" minOccurs="0"/> 
     <element name="param9" type="codeapi:AnotherParam" minOccurs="0"/> 
    </sequence> 
    </complexType> 
</element> 
.... 

Ich habe lief wsdl2java den Code zu generieren.

-

Ich Initialisierung des Port:

SimpleProvider conf = new SimpleProvider(new BasicClientConfig()); 
conf.setGlobalRequest(new LoggingHandler(LOG, Level.FINE, 
    "Request sent:\n")); 
conf.setGlobalResponse(new LoggingHandler(LOG, Level.FINE, 
    "Response received:\n")); 

MyService = new MyServiceLocator(conf); 

URL myServiceURL = "http://<removed>"; 

MyServicePort myServicePort = myService.getMyServiceSOAPPort(myServiceUrl); 

-

Mein erster Versuch, den Zugriff auf die Anfrage:

SomeParam param1 = new SomeParam(); 
param1.setParamA("blah"); // this is the only needed parameter 

Entry[] allEntries = myServicePort.getParameters(param1, null, null, null, null, null, null, null, null); 

Dies führt Nullpointer (auf der Clientseite), obwohl alle Nullparameter optional sind.

-

Mein zweiter Versuch:

SomeParam param1 = new SomeParam(); 
param1.setParamA("blah"); 

Entry[] allEntries = myServicePort.listCodes(param1, new UnsignedShort(), new StringHolder(), new UnsignedShort(), new UnsignedShort(), new String(), new String(), new String(), new AnotherParam()); 

Diese in keiner Ausnahme führt, aber Null-Wert zurückgegeben allEntries, und ich habe keine Ahnung, ob eine SOAP-Anforderung tatsächlich gesendet wurde (die meisten wahrscheinlich nicht).

Der Code läuft auf Oracle AS. In beiden Fällen wird keine einzige Debug-Informationszeile von Axis in das Protokoll geschrieben, obwohl alle verschiedenen Debug-Klassen in Oracle aktiviert wurden und LoggingHandler initialisiert wurden.

Was mache ich hier falsch?

Antwort

1

Offensichtlich müssen Sie, wenn ein Parameter einen Haltertyp hat (d. H. Seine Klasse ist * Holder), eine Halterinstanz erstellen und diese als Parameterwert angeben, auch wenn der Parameter optional ist. Andernfalls erhalten Sie in der generierten Stub-Klasse eine Nullzeiger-Ausnahme. Legen Sie nichts in den Halter.

+0

Das scheint der Fall zu sein. Vielen Dank! – tputkonen