programmera.net -> jax -> normal     för utskrift      info@programmera.net

1. SAAJ-klient till Calculator
2. Test av SAAJCalculatorClient
3. SOAP-meddelanden
4. Test av SOAP-fault
5. SOAP-meddelanden

1. SAAJ-klient till Calculator

På denna sida ska vi titta på hur man kan bygga en klient till webbtjänsten Calculator med hjälp av SAAJ-apiet.

Följande Javaklasser behöver vi:

2. Test av SAAJCalculatorClient

Vi börjar med att starta appservern där Calculator ligger, så att "SAAJCalculatorClient" har någon att prata med. När det är klart kör vi programmet på detta sätt (Innan programmet anropas lägger jag till en JAR-fil till CLASSPATH):
[olle@dev1]$ export CLASSPATH=$CLASSPATH:/opt/java_ee_sdk-5/lib/appserv-ws.jar
[olle@dev1]$  java SAAJCalculatorClient DIV 45 7 
====================================
Main 1. Check parameters
====================================
Operation is division.
====================================
Main 2. Build SOAP message.
====================================
1. Detach the SOAP header.
2. Create SOAP body.
3. Add the operation element (division).
4. Add the request part element.
5. Add the first parameter element.
6. Add the second parameter element.
7. Add empty SOAPAction mime header.
8. SOAP message finished, print it:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><cal:division ... </SOAP-ENV:Body></SOAP-ENV:Envelope>
====================================
Main 3. Send request
====================================
1. Create SOAP connection factory.
2. Create SOAP connection.
3. Call enpoint URL=http://localhost:8080/axis/services/Calculator
Response retrieved.
====================================
Main 4. Fetch Response
====================================
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ... </soapenv:Body></soapenv:Envelope>
Result=6.428571
Program finished!

Verkar funka.

3. SOAP-meddelanden

Följande SOAP-meddelanden skickas från och till klienten:

4. Test av SOAP-fault

Vi testar nu att framkalla ett SOAP-fault:
[olle@dev1]$  java SAAJCalculatorClient DIV 45 0 
====================================
Main 1. Check parameters
====================================
Operation is division.
====================================
Main 2. Build SOAP message.
====================================
1. Detach the SOAP header.
2. Create SOAP body.
3. Add the operation element (division).
4. Add the request part element.
5. Add the first parameter element.
6. Add the second parameter element.
7. Add empty SOAPAction mime header.
8. SOAP message finished, print it:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> ... </SOAP-ENV:Body></SOAP-ENV:Envelope>
====================================
Main 3. Send request
====================================
1. Create SOAP connection factory.
2. Create SOAP connection.
3. Call enpoint URL=http://localhost:8080/axis/services/Calculator
Response retrieved.
====================================
Main 4. Fetch Response
====================================
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope ... ;</soapenv:Envelope>
Is fault
fault code= soapenv:Server.generalException
fault string= null
fault detail= 0Division by zero is not possible.net.programmera.www.ns.Calculator.DivideZeroFaultTypeokullberg-pc

Som vi ser följer Axis inte riktigt specen när det gäller t.ex. "fault code".

5. SOAP-meddelanden

Följande SOAP-meddelanden skickas från och till klienten: