If you want to run asynch on the server, you have to create a separate
thread or push the data from the request into some queueing mechanism.
The current implementation is still sending an empty SOAP body back to
the caller and block until wait10sec returns.
in your stateless service class
private static Timer productionRunTimer = new Timer( true);
inside wait10sec
// the PO will be processed by another
// thread and the status of the PO will be send back to the
warehouse
// using the callback information found in the Start header.
ProductionRun productionRun =
new ProductionRun( AllRequiredData );
productionRunTimer.schedule( productionRun, 10000);
public class ProductionRun extends TimerTask {
...
public void run() {
// placeholder for the remaining code from your initial
wait10sec method
}
}
If you don't need to wait 10 sec before to start processing, use
Runnable instead of TimerTask.
hope this help.
Trond Hjelmaas wrote:
Hi,
I have a problem with finding relevant info regarding asynch Web Services.
For example, I've got this javaclass, all it does is wait 10 seconds
public class delay{
public void wait10sec(){
/*some code for 10 sec delay*/
}
}
it has WSDL like:
......
<message name="wait10sec0Request"/>
<portType name="blahPortType">
<operation name="wait10sec">
<input name="wait10sec0Request" message="tns:wait10sec0Request"/>
</operation>
</portType>
<binding name="blahBinding" type="tns:blahPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="wait10sec">
<soap:operation soapAction="" style="rpc"/>
<input name="wait10sec0Request">
<soap:body use="encoded" namespace="blah"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
</operation>
</binding>
<service name="blah">
<port name="blahPort" binding="tns:blahBinding">
<soap:address
location="http://some_URTL:8888/blah_ctx/blah"/>
</port>
</service>
NOTE: I have change WSDL to have no response, the original has reponse
message listed, but is was empty.....
According to some mail I read Web Services are async if they don't have
any reponse method.
I uploaded this and invoke the method using Oracle9ias (9.0.0.3), the
invocation halts for 10 seconds, and does NOT return ASAP (which is what I
need).
Any suggestions about how to make asynch Web Services are very
appreciated!
Regards, Trond
|