Hi,

I have run into the same problem discussed in thread  
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=71090.  So as not to 
risk the ire of adrian, I have not hijacked that thread; but I was unsure to 
which forum to direct this.  My apologies if my aim is bad.

To summarize the problem in that thread, I have a single ear file containing a 
war file and a jar file.  The war contains a servlet that makes EJB calls to 
session beans in the jar file.  I have found that I am unable to create a local 
interface to my session beans in the servlet; it fails with "Invalid 
invocation..." EJBExceptions. However, if I change them to remote EJB 
interfaces, everything works great.  Also, when I change the jbossweb values 
for Java2ClassLoadingCompliance and UseJBossWebLoader from the default false 
values to true, the local calls work fine (this is my current solution, taken 
from the above thread).  Details follow at the bottom of this post, to avoid 
clutter.

My question is slightly different from in the above thread.

1. Assuming that changing the Java2ClassLoadingCompliance and UseJBossWebLoader 
is the correct solution to the problem, is there a way to achieve this behavior 
on an application basis? That is, if I am forced to deploy my ear into a 
JBoss4.0.3SP1 installation which has not changed these values (the default 
config), and I am not permitted to change them just for my app, can my app 
override them somehow to make it work for me?

2. Having read the classloading wiki pages (ClassLoadingConfiguration and 
JBossClassLoadingUseCases), it is likely that I simply do not fully grok this 
wizardry.  Is my configuration below just plain incorrect?  Could my war or jar 
files be incorrectly packaged?  Can it truly be that this is the only way to 
get local EJB calls to work within an ear in JBoss4.0.3SP1 (this is hard for me 
to believe, but it is what I am experiencing...)?

Thanks for your time.

Details:

JBoss4.0.3SP1
Windows XP

(Hopefully) relevant contents of various config files:

deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml (these values cause the 
local EJB creates to fail -- if I set them to true, it all works; so this is 
the behavior I would like to override, assuming this is a correct solution to 
the problem):
 <!-- Get the flag indicating if the normal Java2 parent first class
  |            loading model should be used over the servlet 2.3 web container 
first
  |            model.
  |       -->
  |       <attribute name="Java2ClassLoadingCompliance">false</attribute>
  |       <!-- A flag indicating if the JBoss Loader should be used. This loader
  |            uses a unified class loader as the class loader rather than the 
tomca
  | t
  |            specific class loader.
  |            The default is false to ensure that wars have isolated class 
loading
  |            for duplicate jars and jsp files.
  |       -->
  |       <attribute name="UseJBossWebLoader">false</attribute>

deploy/ear-deployer.xml:
<!-- A flag indicating if ear deployments should have their own scoped
  |       class loader to isolate their classes from other deployments.
  |       -->
  |       <attribute name="Isolated">true</attribute>
  |       <!-- A flag indicating if the ear components should have in VM call
  |       optimization disabled.
  |       -->
  |       <attribute name="CallByValue">true</attribute>

deploy/naming-service.xml:
 <!-- The call by value mode. true if all lookups are unmarshalled using
  |       the caller's TCL, false if in VM lookups return the value by 
reference.
  |       -->
  |       <attribute name="CallByValue">true</attribute>

In my ear file (META-INF/jboss-app.xml):
<jboss-app>
  |   <loader-repository> 
  |    my_company.com:loader=my_app.ear
  |      <loader-repository-config> 
  |        java2ParentDelegation=true 
  |      </loader-repository-config> 
  |   </loader-repository>
  | </jboss-app>


Lastly, the exception I get attempting to create a local interface to my 
session bean.  The line in my code that is referenced in the trace is simply a 
call to the create() method off of a home interface. The exception is:

09:15:15,265 ERROR [LogInterceptor] EJBException in method: public abstract com.
  | collabraspace.cserver.interfaces.CampusServiceLocal 
com.collabraspace.cserver.in
  | terfaces.CampusServiceLocalHome.create() throws javax.ejb.CreateException:
  | javax.ejb.EJBException: Invalid invocation, check your deployment 
packaging, met
  | hod=public abstract com.collabraspace.cserver.interfaces.CampusServiceLocal 
com.
  | collabraspace.cserver.interfaces.CampusServiceLocalHome.create() throws 
javax.ej
  | b.CreateException
  |         at 
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invokeHo
  | me(StatelessSessionContainer.java:161)
  |         at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo
  | keHome(CachedConnectionInterceptor.java:180)
  |         at 
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invokeHome(
  | StatelessSessionInstanceInterceptor.java:83)
  |         at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractIntercep
  | tor.java:90)
  |         at 
org.jboss.ejb.plugins.CallValidationInterceptor.invokeHome(CallValida
  | tionInterceptor.java:41)
  |         at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte
  | rceptor.java:110)
  |         at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep
  | torCMT.java:335)
  |         at 
org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.ja
  | va:146)
  |         at 
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityIntercep
  | tor.java:130)
  |         at 
org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:1
  | 21)
  |         at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyF
  | actoryFinderInterceptor.java:93)
  |         at 
org.jboss.ejb.SessionContainer.internalInvokeHome(SessionContainer.ja
  | va:613)
  |         at org.jboss.ejb.Container.invoke(Container.java:894)
  |         at 
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLoca
  | lProxyFactory.java:344)
  |         at 
org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java
  | :118)
  |         at $Proxy172.create(Unknown Source)
  |         at 
com.collabraspace.csuite.server.i9n.ejb.CSuiteAdminEJBTest.setUp(CSui
  | teAdminEJBTest.java:194)
  |         at junit.framework.TestCase.runBare(TestCase.java:125)
  |         at 
org.apache.cactus.internal.AbstractCactusTestCase.runBareServer(Abstr
  | actCactusTestCase.java:153)
  |         at 
org.apache.cactus.internal.server.AbstractWebTestCaller.doTest(Abstra
  | ctWebTestCaller.java:119)
  |         at 
org.apache.cactus.internal.server.AbstractWebTestController.handleReq
  | uest_aroundBody0(AbstractWebTestController.java:93)
  |         at 
org.apache.cactus.internal.server.AbstractWebTestController.handleReq
  | uest_aroundBody1$advice(AbstractWebTestController.java:224)
  |         at 
org.apache.cactus.internal.server.AbstractWebTestController.handleReq
  | uest(AbstractWebTestController.java)
  |         at 
org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody2(Ser
  | vletTestRedirector.java:101)
  |         at 
org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody3$adv
  | ice(ServletTestRedirector.java:224)
  |         at 
org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedi
  | rector.java)
  |         at 
org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody0(Serv
  | letTestRedirector.java:72)
  |         at 
org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody1$advi
  | ce(ServletTestRedirector.java:224)
  |         at 
org.apache.cactus.server.ServletTestRedirector.doGet(ServletTestRedir
  | ector.java)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
  |         at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
  | icationFilterChain.java:252)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
  | ilterChain.java:173)
  |         at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi
  | lter.java:81)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
  | icationFilterChain.java:202)
  |         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
  | ilterChain.java:173)
  |         at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
  | alve.java:213)
  |         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
  | alve.java:178)
  |         at 
org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrinc
  | ipalValve.java:39)
  |         at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit
  | yAssociationValve.java:159)
  |         at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
  | torBase.java:407)
  |         at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv
  | e.java:59)
  |         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
  | ava:126)
  |         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
  | ava:105)
  |         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
  | ve.java:107)
  |         at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
  | a:148)
  |         at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
  | :856)
  |         at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
  | ssConnection(Http11Protocol.java:744)
  |         at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
  | int.java:527)
  |         at 
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWor
  | kerThread.java:112)
  |         at java.lang.Thread.run(Thread.java:534)

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

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


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to