private String getDefaultGlobalJndiName(EjbDescriptor<?> ejbDesc) { EjbSessionDescriptor sessionDesc = (EjbSessionDescriptor) ((EjbDescriptorImpl<?>) ejbDesc).getEjbDescriptor(); String clientView = null; if( sessionDesc.isLocalBean() ) { clientView = sessionDesc.getEjbClassName(); } else if( sessionDesc.getLocalBusinessClassNames().size() >= 1) { clientView = sessionDesc.getLocalBusinessClassNames().iterator().next(); } else if( sessionDesc.getRemoteBusinessClassNames().size() >= 1) { clientView = sessionDesc.getRemoteBusinessClassNames().iterator().next(); } return (clientView != null) ? sessionDesc.getPortableJndiName(clientView) : null; }
localNames.add(sessionDesc.getEjbClassName());
public Vector getPossibleTransactionAttributes() { Vector txAttributes = super.getPossibleTransactionAttributes(); // Session beans that implement SessionSynchronization interface // have a limited set of possible transaction attributes. if( isStateful() ) { try { EjbBundleDescriptor ejbBundle = getEjbBundleDescriptor(); ClassLoader classLoader = ejbBundle.getClassLoader(); Class ejbClass = classLoader.loadClass(getEjbClassName()); AnnotationTypesProvider provider = Globals.getDefaultHabitat().getComponent(AnnotationTypesProvider.class, "EJB"); if (provider!=null) { Class sessionSynchClass = provider.getType("javax.ejb.SessionSynchronization"); if( sessionSynchClass.isAssignableFrom(ejbClass) ) { txAttributes = new Vector(); txAttributes.add(new ContainerTransaction (ContainerTransaction.REQUIRED, "")); txAttributes.add(new ContainerTransaction (ContainerTransaction.REQUIRES_NEW, "")); txAttributes.add(new ContainerTransaction (ContainerTransaction.MANDATORY, "")); } } } catch(Exception e) { // Don't treat this as a fatal error. Just return full // set of possible transaction attributes. } } return txAttributes; }