[Design of EJB 3.0] - Rollback Tx on EJBException (NoSuchEJBException)?
by ALRubinger
EJB 3.0 Spec Reference is 14.4.2, 14.4.2.3:
I've got some failing tests on SFSB remove - the client expects a NoSuchEJBException, and the current Ejb3TxPolicy is wrapping it in a EJBTransactionRolledbackException before marking the Tx itself for rollback.
I can make some of these tests pass with the patch below, though I can't derive from the spec whether or not EJBExceptions should warrant the Tx to be marked for rollback.
Index: transactions/src/main/java/org/jboss/ejb3/tx/Ejb3TxPolicy.java
| ===================================================================
| --- transactions/src/main/java/org/jboss/ejb3/tx/Ejb3TxPolicy.java (revision 77044)
| +++ transactions/src/main/java/org/jboss/ejb3/tx/Ejb3TxPolicy.java (working copy)
| @@ -103,6 +103,11 @@
| {
| t = new EJBTransactionRolledbackException(formatException("Unexpected Error", t));
| }
| + // If this is an EJBException, pass through to the caller
| + else if(t instanceof EJBException)
| + {
| + throw t;
| + }
| else if(t instanceof RuntimeException || t instanceof RemoteException)
| {
| t = new EJBTransactionRolledbackException(t.getMessage(), (Exception) t);
>From what I can discern, the onus to continue/recover is a decision left to the client?
S,
ALR
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4170479#4170479
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4170479
17 years, 7 months
[Design of POJO Server] - @JMX on a bootstrap service
by bstansberry@jboss.com
I'm trying to apply an @JMX annotation to a bean that's deployed as part of the bootstrap. The bean deploys fine, and I can see it in the jmx-console, but during shutdown I'm getting a CNFE. Any ideas why?
The deployment:
| <?xml version="1.0" encoding="UTF-8"?>
|
| <deployment xmlns="urn:jboss:bean-deployer:2.0">
|
| <classloader><inject bean="bindings-classloader:0.0.0"/></classloader>
|
| <classloader name="bindings-classloader" xmlns="urn:jboss:classloader:1.0" export-all="NON_EMPTY" import-all="true">
| <root>${jboss.lib.url}/jboss-bindingservice.jar</root>
| </classloader>
|
| <bean name="ServiceBindingManager" class="org.jboss.services.binding.ServiceBindingManager">
|
| <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.system:service=ServiceBindingManager",exposedInterface=org.jboss.services.binding.ServiceBindingManagerMBean.class,registerDirectly=true)</annotation>
|
| <constructor>
| <!-- The set of bindings to use for this server -->
| <parameter>${jboss.service.binding.set:ports-default}</parameter>
The shutdown logging:
| 2008-08-13 17:09:35,310 DEBUG [org.jboss.system.ServiceController] (JBoss Shutdown Hook) stopping service: jboss.system:service=ServiceBindingManager
| 2008-08-13 17:09:35,311 DEBUG [org.jboss.system.ServiceController] (JBoss Shutdown Hook) destroying service: jboss.system:service=ServiceBindingManager
| 2008-08-13 17:09:35,311 DEBUG [org.jboss.system.ServiceController] (JBoss Shutdown Hook) removing service: jboss.system:service=ServiceBindingManager
| 2008-08-13 17:09:35,311 DEBUG [org.jboss.system.ServiceCreator] (JBoss Shutdown Hook) Removing mbean from server: jboss.system:service=ServiceBindingManager
| 2008-08-13 17:09:35,311 DEBUG [org.jboss.system.microcontainer.jmx.ServiceControllerRegistrationLifecycleCallback] (JBoss Shutdown Hook) Unregistered MBean jboss.system:service=ServiceBindingManager
| 2008-08-13 17:09:35,519 WARN [org.jboss.kernel.plugins.dependency.PreInstallAction] (JBoss Shutdown Hook) Unexpected error removing metadata:
| java.lang.RuntimeException: Error creating annotation for @org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.system:service=ServiceBindingManager",exposedInterface=org.jboss.services.binding.ServiceBindingManagerMBean.class)
| at org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData.getAnnotationInstance(AbstractAnnotationMetaData.java:123)
| at org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData.getAnnotationInstance(AbstractAnnotationMetaData.java:98)
| at org.jboss.kernel.plugins.dependency.KernelScopeInfo.updateAnnotations(KernelScopeInfo.java:323)
| at org.jboss.kernel.plugins.dependency.KernelScopeInfo.updateClassAnnotations(KernelScopeInfo.java:150)
| at org.jboss.kernel.plugins.dependency.KernelScopeInfo.updateMetaData(KernelScopeInfo.java:122)
| at org.jboss.dependency.plugins.AbstractScopeInfo.removeMetaData(AbstractScopeInfo.java:164)
| at org.jboss.kernel.plugins.metadata.basic.BasicKernelMetaDataRepository.removeMetaData(BasicKernelMetaDataRepository.java:77)
| at org.jboss.kernel.plugins.dependency.PreInstallAction.removeMetaData(PreInstallAction.java:214)
| at org.jboss.kernel.plugins.dependency.PreInstallAction.uninstallActionInternal(PreInstallAction.java:198)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.uninstallAction(InstallsAwareAction.java:157)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.uninstallAction(InstallsAwareAction.java:42)
| at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleUninstallAction(SimpleControllerContextAction.java:79)
| at org.jboss.dependency.plugins.action.AccessControllerContextAction.uninstall(AccessControllerContextAction.java:131)
| at org.jboss.dependency.plugins.AbstractControllerContextActions.uninstall(AbstractControllerContextActions.java:58)
| at org.jboss.dependency.plugins.AbstractControllerContext.uninstall(AbstractControllerContext.java:354)
| at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:1536)
| at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:1201)
| at org.jboss.dependency.plugins.AbstractController.uninstallContext(AbstractController.java:1110)
| at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:618)
| at org.jboss.dependency.plugins.AbstractController.uninstall(AbstractController.java:534)
| at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.undeployBean(AbstractKernelDeployer.java:406)
| at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.undeployBeans(AbstractKernelDeployer.java:385)
| at org.jboss.kernel.plugins.deployment.AbstractKernelDeployer.undeploy(AbstractKernelDeployer.java:162)
| at org.jboss.kernel.plugins.deployment.BasicKernelDeployer.undeploy(BasicKernelDeployer.java:88)
| at org.jboss.kernel.plugins.deployment.xml.BasicXMLDeployer.undeploy(BasicXMLDeployer.java:95)
| at org.jboss.kernel.plugins.deployment.BasicKernelDeployer.shutdown(BasicKernelDeployer.java:102)
| at org.jboss.bootstrap.microcontainer.ServerImpl.doShutdown(ServerImpl.java:163)
| at org.jboss.bootstrap.AbstractServerImpl.shutdownServer(AbstractServerImpl.java:523)
| at org.jboss.bootstrap.AbstractServerImpl$ShutdownHook.run(AbstractServerImpl.java:827)
| Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.jboss.services.binding.ServiceBindingManagerMBean
| at org.jboss.annotation.factory.AnnotationCreator.visit(AnnotationCreator.java:236)
| at org.jboss.annotation.factory.ast.ASTIdentifier.jjtAccept(ASTIdentifier.java:37)
| at org.jboss.annotation.factory.AnnotationCreator.visit(AnnotationCreator.java:111)
| at org.jboss.annotation.factory.ast.ASTMemberValuePair.jjtAccept(ASTMemberValuePair.java:37)
| at org.jboss.annotation.factory.AnnotationCreator.createAnnotation(AnnotationCreator.java:372)
| at org.jboss.annotation.factory.AnnotationCreator.createAnnotation(AnnotationCreator.java:394)
| at org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData.getAnnotationInstance(AbstractAnnotationMetaData.java:114)
| ... 28 more
| Caused by: java.lang.ClassNotFoundException: org.jboss.services.binding.ServiceBindingManagerMBean
| at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
| at java.security.AccessController.doPrivileged(Native Method)
| at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
| at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
| at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
| at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
| at java.lang.Class.forName0(Native Method)
| at java.lang.Class.forName(Class.java:242)
| at org.jboss.annotation.factory.AnnotationCreator.visit(AnnotationCreator.java:170)
| ... 34 more
| 2008-08-13 17:09:35,529 DEBUG [org.jboss.classloader.spi.base.BaseClassLoaderDomain] (JBoss Shutdown Hook) ClassLoaderDomain@33b121{DefaultDomain} unregisterClassLoader BaseClassLoader@7b21ea{bindings-classloader:0.0.0$MODULE}
| 2008-08-13 17:09:35,529 DEBUG [org.jboss.mx.loading.UnifiedLoaderRepository3] (JBoss Shutdown Hook) UnifiedLoaderRepository removed(false) null
| 2008-08-13 17:09:35,529 DEBUG [org.jboss.classloader.spi.base.BaseClassLoaderPolicy] (JBoss Shutdown Hook) VFSClassLoaderPolicy@1efa490{bindings-classloader:0.0.0$MODULE} shutdown!
| 2008-08-13 17:09:35,529 DEBUG [org.jboss.classloader.spi.base.BaseClassLoader] (JBoss Shutdown Hook) BaseClassLoader@7b21ea{bindings-classloader:0.0.0$MODULE} shutdown!
| 2008-08-13 17:09:35,529 DEBUG [org.jboss.classloading.spi.dependency.Domain] (JBoss Shutdown Hook) org.jboss.classloading.spi.dependency.Domain@b51c29{DefaultDomain} add module VFSClassLoaderPolicyModule bindings-classloader:0.0.0
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4170443#4170443
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4170443
17 years, 7 months
[Design of POJO Server] - Re: ProfileService equiv to ServiceBindingManager
by bstansberry@jboss.com
I'm adding a simple service to bindings.xml that can convert ServiceBindingManager values into system properties.
| <!-- Conversion of selected bindings into system properties -->
| <bean name="SystemPropertyBinder"
| class="org.jboss.services.binding.SystemPropertyBinder">
|
| <constructor>
| <parameter>
| <set>
| <!-- JBM's remoting connector -->
| <bean class="org.jboss.services.binding.SystemPropertyBinding">
| <constructor>
| <parameter>jboss.messaging.connector.bisocket.port</parameter>
| <parameter class="int">
| <value-factory bean="ServiceBindingManager" method="getIntBinding"
| parameter="jboss.messaging:service=Connector,transport=bisocket"/>
| </parameter>
| </constructor>
| </bean>
| </set>
| </parameter>
| </constructor>
|
| </bean>
|
|
This is to support the JBM usage discussed at http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4169967#4169967. I imagine it might be useful for some other cases as well; perhaps JGroups configurations where users want strictly defined ports rather than letting JGroups find an available port. JGroups uses custom parsing of its protocol stack configurations, so system properties are the only mechanism for passing in dynamic values.
Downside to this approach is the consuming service no longer has an explicit dependency on the SBM (which is also the upside ;-) ). But, the Naming service depends on SBM, so SBM is always going to deploy very early. If services using this system property approach are careful and understand their dependency relationships, this should be safe enough.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4170426#4170426
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4170426
17 years, 7 months