[jboss-svn-commits] JBL Code SVN: r37428 - in labs/jbossesb/branches/JBESB_4_10_CP/product: services/slsb/src/main/java/org/jboss/soa/esb/actions and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 23 07:56:07 EDT 2011
Author: mageshbk at jboss.com
Date: 2011-08-23 07:56:05 -0400 (Tue, 23 Aug 2011)
New Revision: 37428
Modified:
labs/jbossesb/branches/JBESB_4_10_CP/product/docs/Programmers_Guide/en-US/OOB-Actions/OOB_Actions_services.xml
labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/main/java/org/jboss/soa/esb/actions/EJBProcessor.java
labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/ConfigBuilder.java
labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/EJBProcessorUnitTest.java
labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/MockEjbProcessor.java
Log:
[JBESB-2813] - Added feature to lazily initialise EJBs.
Modified: labs/jbossesb/branches/JBESB_4_10_CP/product/docs/Programmers_Guide/en-US/OOB-Actions/OOB_Actions_services.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/docs/Programmers_Guide/en-US/OOB-Actions/OOB_Actions_services.xml 2011-08-23 09:35:29 UTC (rev 37427)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/docs/Programmers_Guide/en-US/OOB-Actions/OOB_Actions_services.xml 2011-08-23 11:56:05 UTC (rev 37428)
@@ -95,6 +95,15 @@
</row>
<row>
+ <entry><property>lazy-ejb-init</property></entry>
+ <entry>
+ <para>Whether EJBs should be lazily initialised at runtime rather
+ than at deploy time. Default is false.</para>
+ </entry>
+ <entry>No</entry>
+ </row>
+
+ <row>
<entry><property>ejb-params</property></entry>
<entry>
<para>
Modified: labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/main/java/org/jboss/soa/esb/actions/EJBProcessor.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/main/java/org/jboss/soa/esb/actions/EJBProcessor.java 2011-08-23 09:35:29 UTC (rev 37427)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/main/java/org/jboss/soa/esb/actions/EJBProcessor.java 2011-08-23 11:56:05 UTC (rev 37428)
@@ -72,6 +72,7 @@
* <property name="security-login-module" value="securityDomain" />
* <property name="provider-url" value="localhost:1099" />
* <property name="method" value="login" />
+ * <property name="lazy-ejb-init" value="false" />
*
* <!-- Optional output location, defaults to "DEFAULT_EJB_OUT"
* <property name="esb-out-var" value="MY_OUT_LOCATION"/> -->
@@ -95,6 +96,7 @@
* <property name="security-login-module" value="securityDomain" />
* <property name="provider-url" value="localhost:1099" />
* <property name="method" value="login" />
+ * <property name="lazy-ejb-init" value="false" />
*
* <!-- Optional output location, defaults to "DEFAULT_EJB_OUT"
* <property name="esb-out-var" value="MY_OUT_LOCATION"/> -->
@@ -122,6 +124,12 @@
public static final String INICTXFACTORY = "initial-context-factory";
public static final String PROVIDERURL = "provider-url";
+
+ // EJB initialization will be done during the first call
+ // this is useful when you setup access to remote EJBs and the remote server is not up yet
+ // when this action is initialized
+ // default = false
+ public static final String LAZY_EJB_INIT = "lazy-ejb-init";
public static final String OUT_VAR = "esb-out-var";
@@ -143,15 +151,17 @@
private List<String> ejbParamTypeNames;
- private EJBHome ejbHome;
- private EJBObject ejbObject;
+ protected EJBHome ejbHome;
+ protected EJBObject ejbObject;
- private Object ejb3Interface;
+ protected Object ejb3Interface;
private boolean ejb3;
private LoginContext loginContext;
+ private boolean lazyEJBInit;
+ private boolean ejbInitialised=false;
public EJBProcessor(ConfigTree config)
{
@@ -172,6 +182,11 @@
msg.getBody().get(ejbParams.get(i).getLoc()));
}
Object ret;
+
+ if (!ejbInitialised){
+ ejbInitialise();
+ }
+
if ( ejb3 )
{
// invoke EJB3.x
@@ -210,7 +225,14 @@
* all of this data is statically defined and not
* modified by the incoming Message during process execution.
*/
-
+
+ /* note:
+ * with lazy ejb init setup to "true" the initialization process will be delayed waiting for the first call
+ */
+ lazyEJBInit = Boolean.parseBoolean(configTree.getAttribute(LAZY_EJB_INIT, "false"));
+
+
+
ejbRef = new HashMap<String, String>();
ejbParams = new HashMap<Integer, Argument>();
ejbParamTypeNames = new ArrayList<String>();
@@ -261,6 +283,24 @@
}
}
+ if (!lazyEJBInit){
+ try
+ {
+ ejbInitialise();
+ }
+ catch (Exception e)
+ {
+ throw new ActionLifecycleException( "Got an error while processing EJB " + ejbRef.get(EJB_METHOD), e);
+ }
+
+ }
+
+ }
+
+ synchronized void ejbInitialise() throws Exception {
+
+ if (ejbInitialised) return;
+
// Build Properties for InitialContext lookup
Properties props = new Properties();
@@ -324,6 +364,7 @@
throw new ActionLifecycleException( "Got an error while processing EJB " + ejbRef.get(EJB_METHOD), e);
}
}
+ ejbInitialised=true;
}
InitialContext getInitialContext(final Properties props) throws ActionLifecycleException
Modified: labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/ConfigBuilder.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/ConfigBuilder.java 2011-08-23 09:35:29 UTC (rev 37427)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/ConfigBuilder.java 2011-08-23 11:56:05 UTC (rev 37428)
@@ -135,5 +135,12 @@
return config;
}
+ public ConfigBuilder lazyEJBInit(final Boolean on)
+ {
+ if (on != null)
+ config.setAttribute(EJBProcessor.LAZY_EJB_INIT, on.toString());
+ return this;
+ }
+
}
Modified: labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/EJBProcessorUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/EJBProcessorUnitTest.java 2011-08-23 09:35:29 UTC (rev 37427)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/EJBProcessorUnitTest.java 2011-08-23 11:56:05 UTC (rev 37428)
@@ -21,6 +21,7 @@
package org.jboss.soa.esb.actions;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -214,6 +215,32 @@
assertTrue(processor.getCallbackHandler() instanceof AppCallbackHandler);
}
+ @Test
+ public void processLazyInitEjb3() throws ActionLifecycleException, ActionProcessingException, ConfigurationException
+ {
+ Message message = MessageFactory.getInstance().getMessage();
+ message.getBody().add(payloadLocation, payload);
+
+ final ConfigBuilder builder = new ConfigBuilder();
+ builder.methodName("printMessage");
+ builder.outputLocation(outputLocation);
+ builder.jndiName("Simple");
+ builder.isEjb3(true);
+ builder.lazyEJBInit(true);
+ builder.initCtxFactory("org.jnp.interfaces.NamingContextFactory");
+ builder.providerUrl("jnp://localhost:1099");
+ builder.arg(String.class, payloadLocation);
+
+ final ConfigTree config = builder.build();
+
+ MockEjbProcessor processor = new MockEjbProcessor(config);
+ processor.initialise();
+ assertNull(processor.getEJB3Interface());
+
+ Message process = processor.process(message);
+ assertNotNull(processor.getEJB3Interface());
+ }
+
public static junit.framework.Test suite()
{
return new JUnit4TestAdapter(EJBProcessorUnitTest.class);
Modified: labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/MockEjbProcessor.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/MockEjbProcessor.java 2011-08-23 09:35:29 UTC (rev 37427)
+++ labs/jbossesb/branches/JBESB_4_10_CP/product/services/slsb/src/test/java/org/jboss/soa/esb/actions/MockEjbProcessor.java 2011-08-23 11:56:05 UTC (rev 37428)
@@ -80,7 +80,9 @@
{
return loginModuleName;
}
-
-
+ public Object getEJB3Interface()
+ {
+ return ejb3Interface;
+ }
}
More information about the jboss-svn-commits
mailing list