[weld-dev] Question about conversations scope initilization obeserver

Benjamin Confino BENJAMIC at uk.ibm.com
Tue Jan 28 06:06:14 EST 2020


Hello

Thanks for the link. I had a look but I couldn't find any TCK tests 
checking to see if an observer method will catch the new 
ConversationContext being created for the "new transient conversation". To 
check if a new conversation was activated I created an entirely fresh 
server and ran the test application on it, the behaviour was the same, the 
first url I pinged on this new server ended with "cid=" and the observer 
didn't . Normally I've just been restarting the old server but restarting 
frequently. 

I've attached the recreate you requested. it consists of the three classes 
attached to my previous email as well as a minimal html page. To run it 
load it onto your server and ping 
http://localhost:9080/ConversationContextTest/index.xhtml to see the 
observer fire, and 
http://localhost:9080/ConversationContextTest/index.xhtml?cid=99999 to see 
the observer fail to fire. 

Best regards
Benjamin



From:   Matej Novotny <manovotn at redhat.com>
To:     Benjamin Confino <BENJAMIC at uk.ibm.com>
Cc:     weld-dev at lists.jboss.org, Takayuki T Ishii <EBB0F3L at jp.ibm.com>
Date:   27/01/2020 11:39
Subject:        [EXTERNAL] Re: [weld-dev] Question about conversations 
scope initilization     obeserver



Hello,

I'd start by pointing you to CDI TCK as that's a good starting point to 
see what's covered.
For your question, that would be this test - 
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_eclipse-2Dee4j_cdi-2Dtck_blob_master_impl_src_main_java_org_jboss_cdi_tck_tests_context_conversation_ClientConversationContextTest.java-23L344-2DL349&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=hl8XiFr1UrTSgyXVc4KO_i51sM3Gyhlu1KZ4TkyseEQ&m=LuqfrtLLuJH86SKffsaBnDrxGJkBeoRqjz2EMS6K9mM&s=EO58wz7fGAjoo_qGMInGkEU8QMORj_W6IiAR-CM1WF4&e= 

And possibly few more in the same test class.

As for the linked classes - your `ConversationBean` is listening for 
@Initialized event. Can you verify that a new conversation was activated 
for your request instead of verifying that context was activated?
E.g. check IDs or something along those lines? I suppose that will hold 
true and in that case it works just as spec requires it to.
>From the top of my head I don't really know how we activate/deactivate 
ConversationContext, I'd need to dig that up, but looking at CDI spec, it 
doesn't mandate that it is activated every time again and it could already 
be active for given request.
Plus from just the classes you linked, I cannot know if you test this with 
no existing conversation or maybe with some long running one before you 
try to send a request for non-existing one...and so on.
So if the above doesn't is not enough to answer your question, then we're 
going to need a complete reproducer so that we both talk about the same 
scenario :)

Matej

----- Original Message -----
> From: "Benjamin Confino" <BENJAMIC at uk.ibm.com>
> To: weld-dev at lists.jboss.org
> Cc: "Takayuki T Ishii" <EBB0F3L at jp.ibm.com>
> Sent: Monday, January 27, 2020 11:42:14 AM
> Subject: [weld-dev] Question about conversations scope initilization  
obeserver
> 
> Hello
> 
> I have a customer who's sent me a sample application, I have attached 
the
> source to it below.
> 
> When the customer visits index.xhtml they see the following output:
> 
> Conversation initialized.
> Conversation begun. cid:1 , timeout:3600000
> Conversation destroyed. cid:1
> 
> However when they append "?cdi=" or a non-existnant identifier like
> "?cdi=10000" to the url they do not see "Conversation initialized."
> 
> The CDI spec says that: If the propagated conversation cannot be 
restored,
> the container must associate the request with a new transient 
conversation
> and throw an exception of type
> javax.enterprise.context.NonexistentConversationException.
> 
> I'm wondering if this should apply here? Or would it only apply if the 
cid
> pointed to an existing conversation that could not be restored? And is 
there
> anything in the spec that covers this specific situation?
> 
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 
3AU
> 
> _______________________________________________
> weld-dev mailing list
> weld-dev at lists.jboss.org
> 
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.jboss.org_mailman_listinfo_weld-2Ddev&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=hl8XiFr1UrTSgyXVc4KO_i51sM3Gyhlu1KZ4TkyseEQ&m=LuqfrtLLuJH86SKffsaBnDrxGJkBeoRqjz2EMS6K9mM&s=ptwSTb9inzN42wgy9ctxUbuZO9ho6NYWekXQCURzWL4&e= 





Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/weld-dev/attachments/20200128/88e86fbf/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ConversationContextTest.war
Type: application/octet-stream
Size: 4657 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/weld-dev/attachments/20200128/88e86fbf/attachment.obj 


More information about the weld-dev mailing list