[ 
https://jira.codehaus.org/browse/MEAR-166?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=356090#comment-356090
 ] 

Daniel Huss commented on MEAR-166:
----------------------------------

Would love to see this fixed :-)

Here is my use case: 

=== in web module ===
{code:java}
@Path("/hello")
public class HelloResource
{
    @Inject
    private HelloService helloService;
     ...
}
{code}

I think this simple use case is _impossible_ to get right with 
<type>ejb-client</type> because the whole ejb-client mechanism is fundamentally 
flawed:

* Depending on ejb-client artifacts will still pull all dependencies of the EJB 
implementation into the corresponding dependency scope.
* If separating API from EJB implementation is the purpose of the ejb-client 
feature, the EJB artifact should depend on the API artifact and all API classes 
should be stripped from the EJB artifact. Since both ejb-client and ejb 
originate from the same POM, this is not possible (I think). 
** So we end up with a <type>ejb</type> artifact plus a <type>ejb-client</type> 
artifact, both containing all API classes. In a JEE container such as JBoss AS 
7, this will easily lead to the following situation:
**# The EJB implementaiton sees API class "HelloService" loaded by class loader 
"A"
**# The API consumer sees API class "HelloService" loaded by class loader "B"
**# A.HelloService is not equal to B.HelloService
**# CDI fails because of unsatisfied dependencies

In my opinion <type>ejb-client</type> should never be used as a maven 
dependency for those reasons. If I could, I'd simply avoid using the 
maven-ejb-plugin by creating two plain <packaging>jar</packaging> projects. 
However, this is not an option because the ear plugin requires <type>ejb</type> 
for <ejbModule>s  (and I do like the ear plugin :-) )


> 'skinnyWar' doesn't work well with dependencies of type 'ejb'
> -------------------------------------------------------------
>
>                 Key: MEAR-166
>                 URL: https://jira.codehaus.org/browse/MEAR-166
>             Project: Maven Ear Plugin
>          Issue Type: New Feature
>    Affects Versions: 2.8, 2.9
>         Environment: many different environments I've verified this on
>            Reporter: Michal Michalski
>            Priority: Minor
>             Fix For: more-investigation
>
>
> It seems that 'skinnyWar' works OK with dependencies of type 'jar', but it 
> does left 'ejb' dependencies in WEB-INF/lib. Finally, these dependencies 
> exist both in EAR's lib dir and WEB-INF/lib within WAR, when using classic 
> trick with both 'war'-type and 'pom'-type dependency to WAR, so all WAR's 
> dependencies should go to EAR's lib.



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)

Reply via email to