Mark Struberg commented on DELTASPIKE-1354:

Hi Theodoros!
Thanks for the bug report, I will look into it. 
Unfortunately I had to delete the webapp zip as it seems it contains sensible 
customer information in cyrilic letters (although I'm not 100% sure, but better 
safe than sorry, right?).

I'm not yet sure, but it looks very likely to be a WebLogic bug. If you 
undeploy a WAR application, then all resources must be freed up. It actually 
must even use a new ClassLoader when the app gets restarted. So it's really 
unlikely that CDI messes something up. 
>From looking at the stacktrace I suspect that the EntityManagerFactory doesn't 
>get freed up.

All that DeltaSpike does here is to call 
`return entityManager().find(entityClass(), primaryKey);`
This will in turn look up the EntityManagerFactory as Resource from the 
Container via JNDI. And here is where things seems to go mad:
Caused By: javax.naming.NameNotFoundException: While trying to look up 
comp/env/ssp.sandbox.util.EMProducer/entityManagerFactory in 
/app/webapp/ssp.sandbox.war/486607339.; remaining name 

Happy to help further, but your EMProducer.java looks fine and the rest has not 
much impact.
So I'm back to believing this is likely a WLS glitch.

> CDI producer does not work properly after application restart on weblogic 12c
> -----------------------------------------------------------------------------
>                 Key: DELTASPIKE-1354
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-1354
>             Project: DeltaSpike
>          Issue Type: Bug
>          Components: CdiControl, Data-Module
>    Affects Versions: 1.8.0
>         Environment: Windows 10, Weblogic, Java EE7, JDK 1.8.0_172
>            Reporter: THEODOROS CHAIKALIS
>            Priority: Major
>              Labels: cdi, entitymanager, producer, repository
> I have an application using Deltaspike 1.8.0 that runs on Weblogic
> Attached you will find a mini application that demonstrates the problem, 
> please use it.
> The scenario to reproduce the problem is as follows:
> 1. Deploy the application on Weblogic.
> 2. Run a REST service that uses a Deltaspike repository: 
> [http://localhost:7001/ssp.sandbox/persons/all] 
> or
>   [http://localhost:7001/ssp.sandbox/persons/byId/1]
> 3. Observe that the request runs smoothly. If you want to populate db with  
> data run the Arquillian test in TestA class
> 4. from the weblogic console, stop the application
> 5. Start the application
> 6. run again a REST call from step 2. The following will happen:
> [https://gist.github.com/teohaik/933d4bc47d38c4441ca9a7409bc90eee]
> Note: in order for the example to run properly, please remove the  "Provided" 
> scopes from the respective dependencies

This message was sent by Atlassian JIRA

Reply via email to