[jboss-user] [JBoss Microcontainer Users] - Re: How to get DeploymentUnit?

2009-11-22 Thread Juergen.Zimmermann
I've to implement a class as follows:


  | import java.lang.reflect.Type;
  | import javax.ejb.EJB;
  | import javax.naming.Context;
  | import javax.naming.InitialContext;
  | import javax.naming.NamingException;
  | import javax.ws.rs.ext.Provider;
  | import com.sun.jersey.core.spi.component.ComponentContext;
  | import com.sun.jersey.spi.inject.Injectable;
  | import com.sun.jersey.spi.inject.InjectableProvider;
  | 
  | @Provider
  | public class EJBProvider implements InjectableProviderEJB, Type {
  |   public InjectableObject getInjectable(ComponentContext componentCtx,
  |   EJB ejbAnnotation,
  |   Type type) {
  | if (!(type instanceof Class?))
  |   return null;
  | 
  | Class? clazz = (Class?) type;
  | 
  | String beanInterface = ejbAnnotation.beanInterface().getName();
  | if (Object.class.getName().equals(beanInterface)) {
  |   beanInterface = clazz.getName();
  | }
  | 
  | String jndiName = ???;  // get jndi name via beanInterface
  | 
  | Context ctx = null;
  | try {
  |   ctx = new InitialContext();
  |   Object obj = ctx.lookup(jndiName);
  | 
  |   return new InjectableObject() {
  | public Object getValue() {
  |   return obj;
  | }
  |   };
  | }
  | catch (NamingException e) { /* error handling */ }
  | finally { /* close ctx */ }
  |   }
  | }

So my 1st problem is: how to get the jndi name when the interface of an EJB is 
available?

I was trying the following where I only would need the DeploymentUnit object. 
Perhaps there are alternatives. Any hint is highly appreciated!
//import org.jboss.deployers.structure.spi.DeploymentUnit;
  | //import 
org.jboss.ejb3.common.resolvers.plugins.FirstMatchEjbReferenceResolver;
  | //import org.jboss.ejb3.common.resolvers.spi.EjbReference;
  | //import org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver;
  | 
  | EjbReference ref = new EjbReference(ejbAnnotation.beanName(),
  | beanInterface,
  | ejbAnnotation.mappedName());
  | EjbReferenceResolver resolver = new FirstMatchEjbReferenceResolver();
  | 
  | DeploymentUnit du = ???;  // How to get DeploymentUnit? Via ClassLoader?
  | 
  | String jndiName = resolver.resolveEjb(du, ref);
  | 

View the original post : 
http://www.jboss.org/index.html?module=bbop=viewtopicp=4266911#4266911

Reply to the post : 
http://www.jboss.org/index.html?module=bbop=postingmode=replyp=4266911
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Microcontainer Users] - Re: How to get DeploymentUnit?

2009-11-22 Thread Juergen.Zimmermann
BTW, the whole deployment is in an EAR, the class EJBProvider (see above) is in 
a web module, and the referenced EJB of course in an EJB module.

View the original post : 
http://www.jboss.org/index.html?module=bbop=viewtopicp=4266914#4266914

Reply to the post : 
http://www.jboss.org/index.html?module=bbop=postingmode=replyp=4266914
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Microcontainer Users] - Re: How to get DeploymentUnit?

2009-11-22 Thread alesj
Juergen.Zimmermann wrote : 
  | So my 1st problem is: how to get the jndi name when the interface of an EJB 
is available?
  | 
Dunno, this is EJB question not MC. ;-)
Either ask on their forum or check Weld-int 
where, afair, something similar had to be implemented.

Juergen.Zimmermann wrote : 
  | 
  |   | DeploymentUnit du = ???;  // How to get DeploymentUnit? Via ClassLoader?
  |   | 
  | 

  | ClassLoader cl = clazz.getClassLoader();
  | Module module = ClassLoading.getModuleForClassLoader(cl);
  | if (module instanceof AbstractDeploymentClassLoaderPolicyModule)
  | {
  |AbstractDeploymentClassLoaderPolicyModule deploymentModule = 
(AbstractDeploymentClassLoaderPolicyModule)module;
  |DeploymentUnit unit = deploymentModule.getDeploymentUnit();
  | 
This way you get the deployment unit owning the classloader/module,
but to actually get the right deployment unit you would need to check the whole 
hierarchy of this unit.
e.g.
get class's source location, and check it against unit's and sub-units 
classpath roots.

View the original post : 
http://www.jboss.org/index.html?module=bbop=viewtopicp=4266915#4266915

Reply to the post : 
http://www.jboss.org/index.html?module=bbop=postingmode=replyp=4266915
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Microcontainer Users] - Re: How to get DeploymentUnit?

2009-11-22 Thread alesj
Juergen.Zimmermann wrote :  the class EJBProvider (see above) is in a web 
module
You can use MC-int to get DeploymentUnit from ServletContext.
* http://anonsvn.jboss.org/repos/jbossas/projects/mc-int/trunk/servlet/

View the original post : 
http://www.jboss.org/index.html?module=bbop=viewtopicp=4266916#4266916

Reply to the post : 
http://www.jboss.org/index.html?module=bbop=postingmode=replyp=4266916
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Microcontainer Users] - Re: How to get DeploymentUnit?

2009-11-22 Thread Juergen.Zimmermann
Thank you very much for your help!

View the original post : 
http://www.jboss.org/index.html?module=bbop=viewtopicp=4266918#4266918

Reply to the post : 
http://www.jboss.org/index.html?module=bbop=postingmode=replyp=4266918
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[jboss-user] [JBoss Microcontainer Users] - Re: How to get DeploymentUnit?

2009-11-21 Thread alesj
Actually that's not correct (hence my off the top of my head), 
as Module/ClassLoader can be created from different/multiple (sub)deployments.
e.g. ear + jars

Why exactly do you need DeploymentUnit?
What is your environment - where do you want to access DU from?
Looks like class's classloader is your starting point. Why?

Give more details and we'll find the solution together.


View the original post : 
http://www.jboss.org/index.html?module=bbop=viewtopicp=4266887#4266887

Reply to the post : 
http://www.jboss.org/index.html?module=bbop=postingmode=replyp=4266887
___
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user