jmeMedlem sedan maj 20011 967 inlägg Hej!
Jag håller på och lära mig Web services och SOAP (Apache Axis).
Jag försöker skapa en simpel web service med enstaka metoder.
Jag har följande kod i klassen MyService:
public void addPerson(Person p)
{
if(p != null)
persons.put(p.getName(), p);
}
public String getServiceName()
{
return "MyService";
}
public String echo(String text)
{
return text;
}
Följande kodsnutt anropar metoden echo(String) med "arg" som parameter:
call.setOperation("echo");
call.addParameter("arg1", XMLType.XSD_STRING, ParameterMode.IN);
Object retVal = call.invoke(new Object[] { new String("arg") });
Dum fråga men, hur kan jag anropa en metod som inte tar nåt som parameter?
LimeMedlem sedan sep. 2001837 inlägg Om du Axis få finns två sätt:
1. Det snygga och kompatibla:
call.invoke( new Object[0] );
2. Axis-sättet (som f.ö. gör ovanstående anrop):
call.invoke();
jmeMedlem sedan maj 20011 967 inlägg Lime:
Jo, jag såg att man kan anropa call.invoke( new Object[] {});
Hittade ingen metod Object invoke(), hittade däremot void invoke().
LimeMedlem sedan sep. 2001837 inlägg Jo jag har noterat det jag med... och då får man göra getOutputParams() för att få svaret. Men om man vill hålla det kompatibelt med alla JAX-RPC-implementationer.
T.ex. kodade vi ett system med Axis och sedan bestämmer sig kunden för en "kommersiel och pålitlig" implementation. Varför betala när man kan få det bästa gratis. Fast den kunden är iofs allergisk mot allt vad open source heter. Jag får knappt använda Eclipse eftersom man inte kan betala för den... :-/