Java 类javax.ejb.NoSuchEJBException 实例源码

项目:tomee    文件:CdiEjbBean.java   
@Override
protected void destroyStatefulSessionBeanInstance(final T proxyInstance, final Object unused) {
    if (proxyInstance instanceof BeanContext.Removable) {
        try {
            ((BeanContext.Removable) proxyInstance).$$remove();
        } catch (final NoSuchEJBException nsee) {
            // no-op
        } catch (final UndeclaredThrowableException nsoe) {
            if (!(nsoe.getCause() instanceof NoSuchObjectException)) {
                throw nsoe;
            }
        } catch (final Exception e) {
            if (!(e instanceof NoSuchObjectException)) {
                if (e instanceof RuntimeException) {
                    throw (RuntimeException) e;
                }
                throw new OpenEJBRuntimeException(e);
            }
        }
    }
}
项目:tomee    文件:CdiEjbBean.java   
private void destroyScopedStateful(final T instance, final CreationalContext<T> cc) {
    try {
        instance.hashCode(); // force the instance to be created - otherwise we'll miss @PreDestroy for instance
    } catch (final NoSuchEJBException e) {
        InvocationHandler handler = null;
        if (LocalBeanProxyFactory.isProxy(instance.getClass())) {
            handler = LocalBeanProxyFactory.getInvocationHandler(instance);
        } else if (ProxyManager.isProxyClass(instance.getClass())) {
            handler = ProxyManager.getInvocationHandler(instance);
        }
        if (BaseEjbProxyHandler.class.isInstance(handler) && !BaseEjbProxyHandler.class.cast(handler).isValid()) {
            return; // already destroyed
        } // else log error

        logger.log(Level.FINE, "The stateful instance " + instance + " can't be removed since it was invalidated", e);
        return;
    }

    final Object ejbInstance = dependentSFSBToBeRemoved.remove(System.identityHashCode(instance));
    if (ejbInstance != null) {
        destroyStatefulSessionBeanInstance((T) ejbInstance, cc);
    } else {
        destroyStatefulSessionBeanInstance(instance, cc);
    }
}
项目:tomee    文件:BaseEjbProxyHandler.java   
private void isValidReference(final Method method) throws NoSuchObjectException {
    if (isInvalidReference) {
        if (interfaceType.isComponent() && interfaceType.isLocal()) {
            throw new NoSuchObjectLocalException("reference is invalid");
        } else if (interfaceType.isComponent() || Remote.class.isAssignableFrom(method.getDeclaringClass())) {
            throw new NoSuchObjectException("reference is invalid");
        } else {
            throw new NoSuchEJBException("reference is invalid for " + deploymentID);
        }
    }
    if (!(Object.class.equals(method.getDeclaringClass())
        && method.getName().equals("finalize")
        && method.getExceptionTypes().length == 1
        && Throwable.class.equals(method.getExceptionTypes()[0]))) {
        getBeanContext(); // will throw an exception if app has been undeployed.
    }
}
项目:tomee    文件:StatefulTimeoutTest.java   
public void testZeroTimeout() throws Exception {
    final InitialContext ctx = new InitialContext();
    final MyLocalBean bean;

    // cache is cleared ever 3 seconds and bean timeout is 0 seconds
    bean = (MyLocalBean) ctx.lookup("BeanZeroLocal");
    bean.doNothing(0);

    // cache should be cleared by now and the bean should be removed
    Thread.sleep(5 * 1000);
    try {
        bean.doNothing(0);
        fail("Did not throw expected exception");
    } catch (final NoSuchEJBException e) {
        // that's what we expect
    }
}
项目:tomee    文件:StatefulTimeoutTest.java   
public void testTimeout() throws Exception {
    final InitialContext ctx = new InitialContext();
    final MyLocalBean bean;

    // cache is cleared ever 3 seconds and bean timeout is 5 seconds
    bean = (MyLocalBean) ctx.lookup("BeanLocal");
    bean.doNothing(0);

    // cache should be cleared once by now but the bean is not expired yet
    Thread.sleep(5 * 1000);
    bean.doNothing(0);

    // cache should be cleared again and our bean should be removed
    // since the bean was idle for more than 5 seconds.
    Thread.sleep(10 * 1000);
    try {
        bean.doNothing(0);
        fail("Did not throw expected exception");
    } catch (final NoSuchEJBException e) {
        // that's what we expect
    }
}
项目:Mastering-Java-EE-Development-with-WildFly    文件:TimerTestCase.java   
@Test
public void testStatefulTimeout() throws InterruptedException {
    logger.info("start test stateful timeout");
    assertFalse("The stateful session is not registered", user.isRegistered());
    user.register();
    assertTrue("The stateful session is registered", user.isRegistered());
    sleep(160);
    try {
        user.isRegistered();
        fail();
    } catch (NoSuchEJBException e) {
        logger.info("The ejb is expired");
    }
    logger.info("Timeout end.");
}
项目:tomee    文件:EJBInvocationHandler.java   
@Override
public Object invoke(final Object proxy, final Method method, final Object... args) throws Throwable {
    if (isInvalidReference.get()) {
        if (remote || java.rmi.Remote.class.isAssignableFrom(method.getDeclaringClass())) {
            throw new NoSuchObjectException("reference is invalid");
        } else {
            throw new NoSuchEJBException("reference is invalid");
        }
    }

    return _invoke(proxy, method, args);
}
项目:tomee    文件:SingletonInstanceManager.java   
private Instance createInstance(final ThreadContext callContext, final BeanContext beanContext) throws ApplicationException {
    try {
        initializeDependencies(beanContext);

        final InstanceContext context = beanContext.newInstance();

        if (context.getBean() instanceof SessionBean) {

            final Operation originalOperation = callContext.getCurrentOperation();
            try {
                callContext.setCurrentOperation(Operation.CREATE);
                final Method create = beanContext.getCreateMethod();
                final InterceptorStack ejbCreate = new InterceptorStack(context.getBean(), create, Operation.CREATE, new ArrayList<InterceptorData>(), new HashMap());
                ejbCreate.invoke();
            } finally {
                callContext.setCurrentOperation(originalOperation);
            }
        }

        final ReadWriteLock lock;
        if (beanContext.isBeanManagedConcurrency()) {
            // Bean-Managed Concurrency
            lock = new BeanManagedLock();
        } else {
            // Container-Managed Concurrency
            lock = new ReentrantReadWriteLock();
        }

        return new Instance(context.getBean(), context.getInterceptors(), context.getCreationalContext(), lock);
    } catch (Throwable e) {
        if (e instanceof InvocationTargetException) {
            e = ((InvocationTargetException) e).getTargetException();
        }
        final String t = "The bean instance " + beanContext.getDeploymentID() + " threw a system exception:" + e;
        logger.error(t, e);
        throw new ApplicationException(new NoSuchEJBException("Singleton failed to initialize").initCause(e));
    }
}
项目:tomee    文件:StatefulStatefulTimeoutTest.java   
@Test
public void checkBeanIsCleaned() throws Exception {
    assertNotNull(context);
    final TimedOutStateful stateful = (TimedOutStateful) context.lookup("global/StatefulStatefulTimeoutTest/stateful/TimedOutStateful");
    stateful.foo();
    Thread.sleep(6000);
    try {
        stateful.foo();
        fail();
    } catch (final NoSuchEJBException e) {
        // ok
    }
}
项目:tomee    文件:EntityManagerPropogationTest.java   
/**
 * Test that the extended persistence context can
 * survive the removal of the parent
 *
 * @throws Exception
 */
public void _testExtendedRemove() throws Exception {

    final InitialContext ctx = new InitialContext();

    Node node = (Node) ctx.lookup("ExtendedLocalBean");

    // This bean should still be attached
    // when the transaction commits
    final Color attached = node.create(2, "Blue");

    while (node.getChild() != null) {

        assertTrue(node.contains(attached));

        final Node next = node.getChild();

        node.remove();

        try {
            node.contains(attached);
            fail("The Stateful bean should have been removed");
        } catch (final NoSuchEJBException e) {
            // good
        }
        node = next;
    }

}
项目:tomee    文件:StatefulInternalRemoveTest.java   
@Test
public void testBusinessLocalInterface() throws Exception {
    Widget.lifecycle.clear();

    final WidgetLocal widgetLocal = (WidgetLocal) new InitialContext().lookup("WidgetLocal");

    widgetLocal.widget();

    final BeanContext.Removable removable = (BeanContext.Removable) widgetLocal;

    removable.$$remove();

    try {
        widgetLocal.widget();

        fail("The bean should have been removed");
    } catch (final NoSuchEJBException e) {
        // pass
    }

    // Check the lifecycle of the bean

    final Lifecycle[] expected = {
        Lifecycle.CONSTRUCTOR,
        Lifecycle.POST_CONSTRUCT,
        Lifecycle.BUSINESS_METHOD,
        Lifecycle.PRE_DESTROY};

    assertEquals(join("\n", Arrays.asList(expected)), join("\n", Widget.lifecycle));
}
项目:tomee    文件:SingletonLazyInstantiationTest.java   
public void testFailure() throws Throwable {

        final Exception exception1 = new Exception("Inner exception");
        exception1.fillInStackTrace();

        exception.set(true);

        final Context context = new InitialContext();

        final int threads = 200;
        final CyclicBarrier start = new CyclicBarrier(threads + 1);
        final CountDownLatch finish = new CountDownLatch(threads);

        for (int i = threads; i > 0; i--) {
            final Thread thread = new Thread(new Client(context, start, finish));
            thread.setDaemon(true);
            thread.start();
        }

        start.await(30, TimeUnit.SECONDS);

        assertFalse("All threads did not start", start.isBroken());

        assertTrue("Client threads did not complete", finish.await(30, TimeUnit.SECONDS));

        assertEquals("incorrect number of instances", 1, MySingleton.instances.get());

        // Invoke a business method just to be sure
        final MySingletonLocal singletonLocal = (MySingletonLocal) context.lookup("MySingletonLocal");
        try {
            assertEquals(1, singletonLocal.getId());
            fail("Expected NoSuchEJBException");
        } catch (final NoSuchEJBException e) {
            // pass
        }
    }
项目:tomee    文件:EJBInvocationHandler.java   
/**
 * Renamed method so it shows up with a much more understandable purpose as it
 * will be the top element in the stacktrace
 *
 * @param e      Throwable
 * @param method Method
 */
protected Throwable convertException(final Throwable e, final Method method) {
    if (!remote && e instanceof RemoteException) {
        if (e instanceof TransactionRequiredException) {
            return new TransactionRequiredLocalException(e.getMessage()).initCause(getCause(e));
        }
        if (e instanceof TransactionRolledbackException) {
            return new TransactionRolledbackLocalException(e.getMessage()).initCause(getCause(e));
        }

        /**
         * If a client attempts to invoke a method on a removed bean's business interface,
         * we must throw a javax.ejb.NoSuchEJBException. If the business interface is a
         * remote business interface that extends java.rmi.Remote, the
         * java.rmi.NoSuchObjectException is thrown to the client instead.
         * See EJB 3.0, section 4.4
         */
        if (e instanceof NoSuchObjectException) {
            if (java.rmi.Remote.class.isAssignableFrom(method.getDeclaringClass())) {
                return e;
            } else {
                return new NoSuchEJBException(e.getMessage()).initCause(getCause(e));
            }
        }
        if (e instanceof AccessException) {
            return new AccessLocalException(e.getMessage()).initCause(getCause(e));
        }

        return new EJBException(e.getMessage()).initCause(getCause(e));
    }

    if (remote && e instanceof EJBAccessException) {
        if (e.getCause() instanceof Exception) {
            return new AccessException(e.getMessage(), (Exception) e.getCause());
        } else {
            return new AccessException(e.getMessage());
        }
    }
    if (!remote && e instanceof EJBTransactionRolledbackException) {
        return new TransactionRolledbackLocalException(e.getMessage()).initCause(getCause(e));
    }
    return e;
}
项目:tomee    文件:BaseEjbProxyHandler.java   
/**
 * Renamed method so it shows up with a much more understandable purpose as it
 * will be the top element in the stacktrace
 *
 * @param e        Throwable
 * @param method   Method
 * @param interfce Class
 */
protected Throwable convertException(Throwable e, final Method method, final Class interfce) {
    final boolean rmiRemote = Remote.class.isAssignableFrom(interfce);
    if (e instanceof TransactionRequiredException) {
        if (!rmiRemote && interfaceType.isBusiness()) {
            return new EJBTransactionRequiredException(e.getMessage()).initCause(getCause(e));
        } else if (interfaceType.isLocal()) {
            return new TransactionRequiredLocalException(e.getMessage()).initCause(getCause(e));
        } else {
            return e;
        }
    }
    if (e instanceof TransactionRolledbackException) {
        if (!rmiRemote && interfaceType.isBusiness()) {
            return new EJBTransactionRolledbackException(e.getMessage()).initCause(getCause(e));
        } else if (interfaceType.isLocal()) {
            return new TransactionRolledbackLocalException(e.getMessage()).initCause(getCause(e));
        } else {
            return e;
        }
    }
    if (e instanceof NoSuchObjectException) {
        if (!rmiRemote && interfaceType.isBusiness()) {
            return new NoSuchEJBException(e.getMessage()).initCause(getCause(e));
        } else if (interfaceType.isLocal()) {
            return new NoSuchObjectLocalException(e.getMessage()).initCause(getCause(e));
        } else {
            return e;
        }
    }
    if (e instanceof AccessException) {
        if (!rmiRemote && interfaceType.isBusiness()) {
            return new AccessLocalException(e.getMessage()).initCause(getCause(e));
        } else if (interfaceType.isLocal()) {
            return new AccessLocalException(e.getMessage()).initCause(getCause(e));
        } else {
            return e;
        }
    }
    if (e instanceof RemoteException) {
        if (!rmiRemote && interfaceType.isBusiness()) {
            return new EJBException(e.getMessage()).initCause(getCause(e));
        } else if (interfaceType.isLocal()) {
            return new EJBException(e.getMessage()).initCause(getCause(e));
        } else {
            return e;
        }
    }

    for (final Class<?> type : method.getExceptionTypes()) {
        if (type.isAssignableFrom(e.getClass())) {
            return e;
        }
    }

    // Exception is undeclared
    // Try and find a runtime exception in there
    while (e.getCause() != null && !(e instanceof RuntimeException)) {
        e = e.getCause();
    }
    return e;
}
项目:eap-6.1-quickstarts    文件:Client.java   
public static void main(String[] args) throws NamingException {

        // Create the JNDI InitialContext, configuring it for use with JBoss EJB
        Hashtable<String, String> jndiProperties = new Hashtable<String, String>();
        jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        final Context context = new InitialContext(jndiProperties);

        /*
         * The app name is the application name of the deployed EJBs. This is typically the ear name without the .ear suffix.
         * However, the application name could be overridden in the application.xml of the EJB deployment on the server. Since
         * we haven't deployed the application as a .ear, the app name for us will be an empty string
         */
        final String appName = "";

        /*
         * This is the module name of the deployed EJBs on the server. This is typically the jar name of the EJB deployment,
         * without the .jar suffix, but can be overridden via the ejb-jar.xml. In this example, we have deployed the EJBs in a
         * jboss-as-shoppingcart-server.jar, so the module name is jboss-as-shopping-cart-server
         */
        final String moduleName = "jboss-as-shoppingcart-server";

        /*
         * AS7 allows each deployment to have an (optional) distinct name. We haven't specified a distinct name for our EJB
         * deployment, so this is an empty string
         */
        final String distinctName = "";

        /*
         * The EJB name which by default is the simple class name of the bean implementation class
         */
        final String beanName = ShoppingCartBean.class.getSimpleName();

        /* The remote view fully qualified class name */
        final String viewClassName = ShoppingCart.class.getName();

        /* Lookup the remote interface of the shopping cart */
        String lookupName = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName
                + "?stateful";
        final ShoppingCart cart = (ShoppingCart) context.lookup(lookupName);

        System.out.println("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
        System.out.println("Obtained the remote interface to the shopping cart");

        /* invoke on the remote interface */
        System.out.println("Buying a \"" + EAP + "\"");
        cart.buy(EAP, 1);
        System.out.println("Buying another \"" + EAP + "\"");
        cart.buy(EAP, 1);

        System.out.println("Buying a \"" + SOAP + "\"");
        cart.buy(SOAP, 1);

        System.out.println("\nPrint cart:");
        HashMap<String, Integer> cartContents = cart.getCartContents();
        for (String product : cartContents.keySet()) {
            System.out.println(cartContents.get(product) + "     " + product);
        }

        System.out.println("\nCheckout");
        cart.checkout();

        /* Try to access the cart after checkout*/
        try {
            cart.getCartContents();
        } catch (NoSuchEJBException e) {
            System.out.println("ERROR: Cannot access cart after Checkout!");
        }
        System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
    }
项目:jboss-as-quickstart    文件:Client.java   
public static void main(String[] args) throws NamingException {

        // Create the JNDI InitialContext, configuring it for use with JBoss EJB
        Hashtable<String, String> jndiProperties = new Hashtable<String, String>();
        jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        final Context context = new InitialContext(jndiProperties);

        /*
         * The app name is the application name of the deployed EJBs. This is typically the ear name without the .ear suffix.
         * However, the application name could be overridden in the application.xml of the EJB deployment on the server. Since
         * we haven't deployed the application as a .ear, the app name for us will be an empty string
         */
        final String appName = "";

        /*
         * This is the module name of the deployed EJBs on the server. This is typically the jar name of the EJB deployment,
         * without the .jar suffix, but can be overridden via the ejb-jar.xml. In this example, we have deployed the EJBs in a
         * jboss-shopping-cart-server.jar, so the module name is jboss-shopping-cart-server
         */
        final String moduleName = "jboss-shopping-cart-server";

        /*
         * AS7 allows each deployment to have an (optional) distinct name. We haven't specified a distinct name for our EJB
         * deployment, so this is an empty string
         */
        final String distinctName = "";

        /*
         * The EJB name which by default is the simple class name of the bean implementation class
         */
        final String beanName = ShoppingCartBean.class.getSimpleName();

        /* The remote view fully qualified class name */
        final String viewClassName = ShoppingCart.class.getName();

        /* Lookup the remote interface of the shopping cart */
        String lookupName = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName
                + "?stateful";
        final ShoppingCart cart = (ShoppingCart) context.lookup(lookupName);

        System.out.println("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
        System.out.println("Obtained the remote interface to the shopping cart");

        /* invoke on the remote interface */
        System.out.println("Buying a \"" + EAP + "\"");
        cart.buy(EAP, 1);
        System.out.println("Buying another \"" + EAP + "\"");
        cart.buy(EAP, 1);

        System.out.println("Buying a \"" + SOAP + "\"");
        cart.buy(SOAP, 1);

        System.out.println("\nPrint cart:");
        HashMap<String, Integer> cartContents = cart.getCartContents();
        for (String product : cartContents.keySet()) {
            System.out.println(cartContents.get(product) + "     " + product);
        }

        System.out.println("\nCheckout");
        cart.checkout();

        /* Try to access the cart after checkout */
        try {
            cart.getCartContents();
        } catch (NoSuchEJBException e) {
            System.out.println("ERROR: Cannot access cart after Checkout!");
        }
        System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
    }