Raymond,

Regarding #1,

I believe the model is correct. However, if a new search is initiated with the 
old search params, I assume that the conversation is uniquely ID’ed through the 
use of the conversation for the request and callback response?

If the conversation expires I think and exception should be logged and bubbled 
back to the client.

The problem I’m experiencing is that all subsequent searches are receiving that 
error making the travelsample app unsusable after that point.  Is that internal 
to how it’s been developed or is it in infrastructure level piece of code?

The expected behavior I would imagine would be.  A search request goes out, if 
the callback doesn’t conclude the conversation, the conversation expires, an 
exception is thrown, it may bubble back to the client depending on how the 
exception is caught, but that a new search request with a new conversation ID 
is ensued.

Also – why is the conversation expiring?  Every search through this 
travelsample app is coming back just fine (I can see the search results) it’s 
just that after a while, I’m seeing this error.

-a-


On 2/17/10 4:10 PM, "Raymond Feng" <[email protected]> wrote:

Hi,

I can reproduce the problem now. It leads to two questions:

1) Do we model the conversation correctly here for the search? Do we use the 
conversation to correlate the request and response for the asynchronous search?
2) What's the correct behavior if the conversation expires? Should the 
container start a new conversation instead of complaining about the expiration?

Thanks,
Raymond

From: Albert Tsang <mailto:[email protected]>
Sent: Wednesday, February 17, 2010 10:10 AM
To: [email protected]
Subject: Re: Travelsample

Thanks Raymond,  fyi – you must execute a search, let some time pass, reload or 
refresh the page and then re-run the exact search.  Any subsequent search 
against the application should generate the exception.  Thanks!

-a-


On 2/17/10 10:00 AM, "Raymond Feng" <[email protected]> wrote:

Hi,

Thanks for the update. I'll try to  reproduce the problem and see what goes 
wrong  here.

Raymond

From: Albert Tsang <mailto:[email protected]>
Sent: Wednesday, February 17, 2010 9:28 AM
To: [email protected]
Subject:  Re: Travelsample

I added in @ConversationalAttributes and set maxAge to  5 minutes.  I added 
this to all interfaces in the travelsample that were  annotated as 
@Conversational and still get this error.

-  a-


On 2/15/10 11:45 PM, "Albert Tsang" <[email protected]>  wrote:


OK, will try thanks!

-a-


On  2/15/10  11:41 PM, "Raymond Feng" <[email protected]>   wrote:



Hi,

In OSOA specs of SCA, it   says:

"

1662  The @ConversationAttributes annotation type is used to  define a set of  
attributes which apply  to

1663  conversational interfaces of  services or references of a Java class. The 
 annotation has the  following

1664 attributes:

1665  •  maxIdleTime (optional) -  The  maximum time that can pass between 
operations within a   single

1666  conversation. If more time than this  passes, then the container may  end 
the conversation.

1667  • maxAge (optional) - The   maximum time that the entire conversation can 
remain active. If   more

1668  time than this passes, then the container  may end the  conversation.

1669 • singlePrincipal (optional)  –  If true, only the principal (the user) 
that started the  conversation  has

1670  authority to continue the conversation. The  default value is  false.

"

Can  you try to adjust the maxAge using  @ConversationAttriutes against the 
Java  component implementation  class?


From: Albert Tsang <mailto:[email protected]>
Sent: Monday, February 15, 2010 4:11  PM
To: [email protected]
Subject:  Travelsample

I managed to get the  travelsample working with the ui,  booking, travelcatalog 
and payment  working on one host and the search  function with callback working 
on  another.
After a while, coming back to  the ui client I get the  following error after 
reloading the page and trying  to execute a  search...

org.osoa.sca.ConversationEndedException:   Conversation null has expired.
    at   
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.conversationPreinvoke(JDKInvocationHandler.java:464)
    at   
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:340)
    at   
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:193)
    at   $Proxy56.searchAsynch(Unknown Source)
    at   
com.tuscanyscatours.travelcatalog.impl.TravelCatalogImpl.search(TravelCatalogImpl.java:86)
    at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native   Method)
    at   
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at   
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at   java.lang.reflect.Method.invoke(Method.java:597)
    at   
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:156)
    at   
org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:60)
    at   
org.apache.tuscany.sca.binding.sca.impl.SCABindingInvoker.invoke(SCABindingInvoker.java:61)
    at   
org.apache.tuscany.sca.core.databinding.wire.PassByValueInterceptor.invoke(PassByValueInterceptor.java:60)
    at   
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:346)
    at   
org.apache.tuscany.sca.core.invocation.JDKInvocationHandler.invoke(JDKInvocationHandler.java:193)
    at   $Proxy59.search(Unknown Source)
    at   com.tuscanyscatours.impl.SCAToursImpl.search(SCAToursImpl.java:58)
    at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native   Method)
    at   
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at   
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at   java.lang.reflect.Method.invoke(Method.java:597)
    at   
org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:156)
    at   
org.apache.tuscany.sca.core.databinding.wire.DataTransformationInterceptor.invoke(DataTransformationInterceptor.java:67)
    at   
org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleJSONRPCMethodInvocation(JSONRPCServiceServlet.java:257)
    at   
org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleServiceRequest(JSONRPCServiceServlet.java:160)
    at   
org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.service(JSONRPCServiceServlet.java:97)
    at   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at   
org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:107)
    at   
org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:94)
    at   
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at   
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at   
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at   
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at   
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at   
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at   
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at   
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at   
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    at   
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at   org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at   java.lang.Thread.run(Thread.java:619)




Reply via email to