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):
Verkar funka.
[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!
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:
Som vi ser följer Axis inte riktigt specen när det gäller t.ex. "fault code".
[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
5. SOAP-meddelanden
Följande SOAP-meddelanden skickas från och till klienten: