[jboss-user] [JBoss jBPM] - SOAP Fault Exception - BPEL ATM Example

KVAK_TNT do-not-reply at jboss.com
Tue Aug 22 11:52:55 EDT 2006


Hi there!

I have a big problem with the ATM-Example.
All the time I want to start the ATM-GUI or start the JUnit-Tests it fails with the following message (bellow the next paragraph)

Now I have found out that this happens not every time and I can sometimes start the GUI (but never run through the JUNit Tests).
So I checked the code and followed the lines...
Next point i found out was that It was not possible to connect to the Service twice with the same programinstance. If I had disconeccted and tried again to connect to the "ATM-Terminal" I get the same error as follows:


  | 20060822 17:32:42:495 DEBUG [Link: javax.xml.rpc.soap.SOAPFaultException.<init>(SOAPFaultException.java:91)] - new SOAPFaultException [code={http://schemas.xmlsoap.org/soap/envelope/}Server,string=The service is not in an appropiate state for the requested operation,actor=null,detail=null]
  | 20060822 17:32:42:511 ERROR [Link: org.jboss.ws.jaxrpc.CallImpl.invokeInternal(CallImpl.java:713)] - Call invocation failed
  | javax.xml.rpc.soap.SOAPFaultException: The service is not in an appropiate state for the requested operation
  | 	at org.jboss.ws.jaxrpc.SOAPFaultExceptionHelper.getSOAPFaultException(SOAPFaultExceptionHelper.java:100)
  | 	at org.jboss.ws.binding.soap.SOAPBindingProvider.unbindResponseMessage(SOAPBindingProvider.java:505)
  | 	at org.jboss.ws.jaxrpc.CallImpl.invokeInternal(CallImpl.java:704)
  | 	at org.jboss.ws.jaxrpc.CallImpl.invoke(CallImpl.java:398)
  | 	at org.jboss.ws.jaxrpc.CallProxy.invoke(CallProxy.java:164)
  | 	at $Proxy2.status(Unknown Source)
  | 	at org.jbpm.bpel.tutorial.atm.terminal.ConnectAction.actionPerformed(ConnectAction.java:68)
  | 	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
  | 	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
  | 	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
  | 	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
  | 	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
  | 	at java.awt.Component.processMouseEvent(Component.java:5488)
  | 	at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
  | 	at java.awt.Component.processEvent(Component.java:5253)
  | 	at java.awt.Container.processEvent(Container.java:1966)
  | 	at java.awt.Component.dispatchEventImpl(Component.java:3955)
  | 	at java.awt.Container.dispatchEventImpl(Container.java:2024)
  | 	at java.awt.Component.dispatchEvent(Component.java:3803)
  | 	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
  | 	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
  | 	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
  | 	at java.awt.Container.dispatchEventImpl(Container.java:2010)
  | 	at java.awt.Window.dispatchEventImpl(Window.java:1774)
  | 	at java.awt.Component.dispatchEvent(Component.java:3803)
  | 	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
  | 	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
  | 	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
  | 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
  | 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
  | 	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
  | java.rmi.RemoteException: Call invocation failed with code [Server] because of: The service is not in an appropiate state for the requested operation; nested exception is: 
  | 	javax.xml.rpc.soap.SOAPFaultException: The service is not in an appropiate state for the requested operation
  | 	at org.jboss.ws.jaxrpc.CallImpl.invokeInternal(CallImpl.java:715)
  | 	at org.jboss.ws.jaxrpc.CallImpl.invoke(CallImpl.java:398)
  | 	at org.jboss.ws.jaxrpc.CallProxy.invoke(CallProxy.java:164)
  | 	at $Proxy2.status(Unknown Source)
  | 	at org.jbpm.bpel.tutorial.atm.terminal.ConnectAction.actionPerformed(ConnectAction.java:68)
  | 	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
  | 	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
  | 	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
  | 	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
  | 	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
  | 	at java.awt.Component.processMouseEvent(Component.java:5488)
  | 	at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
  | 	at java.awt.Component.processEvent(Component.java:5253)
  | 	at java.awt.Container.processEvent(Container.java:1966)
  | 	at java.awt.Component.dispatchEventImpl(Component.java:3955)
  | 	at java.awt.Container.dispatchEventImpl(Container.java:2024)
  | 	at java.awt.Component.dispatchEvent(Component.java:3803)
  | 	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
  | 	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
  | 	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
  | 	at java.awt.Container.dispatchEventImpl(Container.java:2010)
  | 	at java.awt.Window.dispatchEventImpl(Window.java:1774)
  | 	at java.awt.Component.dispatchEvent(Component.java:3803)
  | 	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
  | 	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
  | 	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
  | 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
  | 	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
  | 	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
  | Caused by: javax.xml.rpc.soap.SOAPFaultException: The service is not in an appropiate state for the requested operation
  | 	at org.jboss.ws.jaxrpc.SOAPFaultExceptionHelper.getSOAPFaultException(SOAPFaultExceptionHelper.java:100)
  | 	at org.jboss.ws.binding.soap.SOAPBindingProvider.unbindResponseMessage(SOAPBindingProvider.java:505)
  | 	at org.jboss.ws.jaxrpc.CallImpl.invokeInternal(CallImpl.java:704)
  | 	... 28 more
  | 

Now I have found out that there may be a timeoutproblem like at this code here:

ConnectAction.java

  |   public void actionPerformed(ActionEvent event) {
  |     Map context = AtmTerminal.getContext();
  |     AtmPanel atmPanel = (AtmPanel) context.get(AtmTerminal.PANEL);
  |     
  |     InitialContext ctx = null;
  |     try {
  |       ctx = getInitialContext();
  |       // JNDI name of service interface (in application-client.xml)
  |       String serviceRefName = "service/ATM";
  |       // lookup service interface in environment context
  |       AtmFrontEndService service = (AtmFrontEndService) ctx.lookup("java:comp/env/" + serviceRefName);
  |       // obtain dynamic proxy for web service port
  |       AtmFrontEnd atmFrontEnd = service.getAtmRelationPort();
  |       context.put(AtmTerminal.FRONT_END, atmFrontEnd);
  |       
  |       // connect to atm service
  |       int ticketNo = atmFrontEnd.connect();
  |       context.put(AtmTerminal.TICKET, new Integer(ticketNo));
  |       
  |       // update atm panel
  |       atmPanel.setMessage("Please log on,\nso we can begin");
  |       atmPanel.clearActions();
  |       atmPanel.addAction(new LogOnAction());
  |       atmPanel.addAction(new DisconnectAction());
  |       atmPanel.setStatus(atmFrontEnd.status(ticketNo).getValue());   
  |     }
  |     catch (Exception e) {
  |       atmPanel.setMessage("Sorry, I am experiencing\ntechnical problems.\nPlease use another terminal.");
  |       e.printStackTrace();
  |     }
  |     finally {
  |       if (ctx != null) {
  |         try {
  |           ctx.close();
  |         }
  |         catch (NamingException e) {
  |           e.printStackTrace();
  |         }
  |       }
  |     }
  |   }
  | 

If I add a waitstate - this code works fantastically (in comparision to bevore :-) )

  |      // obtain dynamic proxy for web service port
  |       atmFrontEnd = service.getAtmRelationPort();
  |       context.put(AtmTerminal.FRONT_END, atmFrontEnd);
  |       Thread.sleep(1000);   //************** New Code
  | 
  |       // connect to atm service
  |       int ticketNo = atmFrontEnd.connect();
  |       context.put(AtmTerminal.TICKET, new Integer(ticketNo));
  |       Thread.sleep(1000);  //************** New Code
  | 

But this cannot be the real sollution. I have search the Inet (google) and this forum but I haven't found anything in comparision to this...
I hope anyone can tell me something about this.
Maybe some timeout settings in SOAP technologie? I have to say that I dont know anything about SOAP actually... -p)

By the way: I think the reason why I cannot really run through the JUnit test lays exactly at the same point!

Greetings

TNT

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3966739#3966739

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3966739



More information about the jboss-user mailing list