<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Radek's Tech Blog &#187; inversion of control</title>
	<atom:link href="http://urbas.tk/index.php/tag/inversion-of-control/feed/" rel="self" type="application/rss+xml" />
	<link>http://urbas.tk</link>
	<description>Radoslaw H. Urbas homepage / blog</description>
	<lastBuildDate>Tue, 01 Jun 2010 20:31:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Injecting EJB 3.0 beans into Struts 2.0</title>
		<link>http://urbas.tk/index.php/2007/05/04/injecting-ejb-30-beans-into-struts-20/</link>
		<comments>http://urbas.tk/index.php/2007/05/04/injecting-ejb-30-beans-into-struts-20/#comments</comments>
		<pubDate>Thu, 03 May 2007 23:49:00 +0000</pubDate>
		<dc:creator>Radoslaw Urbas</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[ejb]]></category>
		<category><![CDATA[inversion of control]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[struts]]></category>

		<guid isPermaLink="false">http://urbas.tk/?p=10</guid>
		<description><![CDATA[EJB 3.0 provides easy bean injection. While developing web layer in Struts 2.0 you can use similar mechanism as well. Struts 2.0 is using Spring libraries for implementing Inversion of Control design pattern. EJB 3.0 is based on using Java 1.5 annotations. It simplifies deployment process. Let define example Session Bean. @Stateless(mappedName=&#8221;ejb/EmployeeManager&#8221;) public class EmployeeManagerSB [...]]]></description>
			<content:encoded><![CDATA[<p>EJB 3.0 provides easy bean injection. While developing web layer in Struts 2.0 you can use similar mechanism as well. Struts 2.0 is using Spring libraries for implementing Inversion of Control design pattern.</p>
<p>EJB 3.0 is based on using Java 1.5 annotations. It simplifies deployment process.</p>
<p>Let define example Session Bean.</p>
<p><span style="font-size: 85%"><span style="font-family: courier new"><span style="color: #ff0000">@Stateless(mappedName=&#8221;ejb/EmployeeManager&#8221;)</span><br />
</span><span style="font-family: courier new">public class EmployeeManagerSB implements <span style="color: #ff0000">IEmployeeManager</span> {</span></span></p>
<p><span style="font-family: courier new">public Long createAccount(String loginName) {<br />
</span><span style="font-family: courier new">// Implementation of creating an account&#8230;<br />
</span><span style="font-family: courier new">}</span></p>
<p>}</p>
<p>It implements interface:</p>
<p><span style="font-size: 85%"><span style="font-family: courier new">@Remote<br />
</span><span style="font-family: courier new">@Local</span></span><br />
<span style="font-size: 85%"><span style="font-family: courier new">public interface <span style="color: #ff0000">IEmployeeManager</span> {</span></span></p>
<p><span style="font-family: courier new">Long createAccount(String loginName);<br />
</span><span style="font-family: courier new"><br />
}</span></p>
<p>To use EmployeeManager session bean in Struts 2.0 reference to this object has to be retrieved.</p>
<p>Let define Struts action class which will use EmployeeManager session bean.</p>
<p><span style="font-size: 85%"><span style="font-family: courier new">@Validation()<br />
</span><span style="font-family: courier new">public class NewEmployeeAction extends ActionSupport {</span></span></p>
<p><span style="color: #ff0000; font-family: courier new">private IEmployeeManager employeeManager;<br />
</span><span style="font-family: courier new">private String loginName;<br />
</span><span style="font-family: courier new">private long id;<br />
</span><span style="font-family: courier new">private String redirectURL;</span></p>
<p><span style="font-family: courier new">public String execute() throws Exception {</span><span style="font-family: courier new"><br />
Long id = <span style="color: #ff0000">this.employeeManager.createAccount(this.loginName);<br />
</span></span><span style="font-family: courier new">this.setId(id.longValue());<br />
</span><span style="font-family: courier new">return SUCCESS;<br />
</span><span style="font-family: courier new">}</span><span style="font-family: courier new"></span></p>
<p>public IEmployeeManager getEmployeeManager() {<br />
<span style="font-family: courier new">return employeeManager;<br />
</span><span style="font-family: courier new">}</span></p>
<p><span style="color: #ff0000; font-family: courier new">public void setEmployeeanager(IEmployeeManager employeeManager) {<br />
</span><span style="color: #ff0000; font-family: courier new">this.employeeManager = employeeManager;<br />
</span><span style="color: #ff0000; font-family: courier new">}</span></p>
<p><span style="font-family: courier new">public String getLoginName() {<br />
</span><span style="font-family: courier new">return loginName;<br />
</span><span style="font-family: courier new">}</span></p>
<p><span style="font-family: courier new">@RequiredStringValidator(message = &#8220;Please enter a login name&#8221;, trim = true)<br />
</span><span style="font-family: courier new">public void setLoginName(String loginName) {<br />
</span><span style="font-family: courier new">this.loginName = loginName;<br />
</span><span style="font-family: courier new">}</span></p>
<p><span style="font-family: courier new">public long getId() {<br />
</span><span style="font-family: courier new">return id;<br />
</span><span style="font-family: courier new">}</span></p>
<p><span style="font-family: courier new">public String getRedirectURL() {<br />
</span><span style="font-family: courier new">return redirectURL;<br />
</span><span style="font-family: courier new">}</span></p>
<p><span style="font-family: courier new">public void setRedirectURL(String redirectURL) {<br />
</span><span style="font-family: courier new">this.redirectURL = redirectURL;<br />
</span><span style="font-family: courier new">}</span></p>
<p><span style="font-family: courier new">}</span></p>
<p>Framework is taking care of injecting proper object while creating this action object. In Struts 2.0 the only thing that has to be done to do this is defining it in applicationContext.xml configuration file.</p>
<p><span style="font-size: 85%"><span style="font-family: courier new">&lt;jee:jndi-lookup <span style="color: #ff0000">id=&#8221;employeeManager&#8221; name=&#8221;ejb/EmployeeManager</span>&#8220;&gt;</span></span></p>
<p><span style="font-family: courier new">&lt;bean id=&#8221;newEmployeeAction&#8221; class=&#8221;pl.edu.agh.sius2007.jspynet.struts.NewEmployeeAction&#8221;&gt;</span><br />
<span style="color: #ff0000; font-family: courier new">&lt;property name=&#8221;employeeManager&#8221; ref=&#8221;employeeManager&#8221;&gt;</span><br />
<span style="font-family: courier new">&lt;/bean&gt;</span></p>
<p>The only configuration in Struts is defining two beans.</p>
<ul>
<li>employeeManager which will be retrieved from JNDI;</li>
<li>newEmployeeAction which is Struts action.</li>
</ul>
<p>employeeManager bean will be retrieved automatically and injected into newEmployeeAction.</p>
]]></content:encoded>
			<wfw:commentRss>http://urbas.tk/index.php/2007/05/04/injecting-ejb-30-beans-into-struts-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
