<?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>cosminaru blog &#187; Java</title>
	<atom:link href="http://cosminaru.ro/blog/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://cosminaru.ro/blog</link>
	<description>home</description>
	<lastBuildDate>Wed, 19 May 2010 08:03:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Quizine Live Demo</title>
		<link>http://cosminaru.ro/blog/2010/05/19/quizine-live-demo/</link>
		<comments>http://cosminaru.ro/blog/2010/05/19/quizine-live-demo/#comments</comments>
		<pubDate>Wed, 19 May 2010 08:01:57 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Quizine]]></category>

		<guid isPermaLink="false">http://cosminaru.ro/blog/?p=246</guid>
		<description><![CDATA[I managed to sort out a good and affordable VPS solution to host the Quizine Live Demo and hopefully more Quizine related content.
You can access the demo here: http://quizine.org/demo. The username and password are already filled in so you just have to click &#8220;Login&#8221;.
Don&#8217;t trash the place though&#8230;
]]></description>
			<content:encoded><![CDATA[<p>I managed to sort out a good and affordable VPS solution to host the Quizine Live Demo and hopefully more Quizine related content.<br />
You can access the demo here: <a href="http://quizine.org/demo">http://quizine.org/demo</a>. The username and password are already filled in so you just have to click &#8220;Login&#8221;.<br />
Don&#8217;t trash the place though&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2010/05/19/quizine-live-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quizine 0.5 Alpha 1 screenshots</title>
		<link>http://cosminaru.ro/blog/2010/05/17/quizine-0-5-alpha-1-screenshots/</link>
		<comments>http://cosminaru.ro/blog/2010/05/17/quizine-0-5-alpha-1-screenshots/#comments</comments>
		<pubDate>Mon, 17 May 2010 18:36:04 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Quizine]]></category>

		<guid isPermaLink="false">http://cosminaru.ro/blog/?p=241</guid>
		<description><![CDATA[I managed to implement a quick face lift for Quizine&#8217;s user interface. A bit cleaner and more compact.
A few screenshots can be seen here (click on the magnifier to view the original size).
]]></description>
			<content:encoded><![CDATA[<p>I managed to implement a quick face lift for Quizine&#8217;s user interface. A bit cleaner and more compact.<br />
A few screenshots can be seen <a href="http://picasaweb.google.com/cosminaru/QuizineScreenshots">here</a> (click on the magnifier to view the original size).</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2010/05/17/quizine-0-5-alpha-1-screenshots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quizine goes Flex</title>
		<link>http://cosminaru.ro/blog/2010/05/16/quizine-goes-flex/</link>
		<comments>http://cosminaru.ro/blog/2010/05/16/quizine-goes-flex/#comments</comments>
		<pubDate>Sun, 16 May 2010 19:12:49 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Quizine]]></category>

		<guid isPermaLink="false">http://cosminaru.ro/blog/?p=232</guid>
		<description><![CDATA[During the past months Quizine went through a complete rewrite of both the core and the user interface. Mostly due to the need of more flexibility and the need for additional concepts like &#8220;evaluative&#8221; and others on which I will not insist right now. Along with this, it also has a Flex interface now, built [...]]]></description>
			<content:encoded><![CDATA[<p>During the past months <a href="http://code.google.com/p/quizine/" target="_blank">Quizine</a> went through a complete rewrite of both the core and the user interface. Mostly due to the need of more flexibility and the need for additional concepts like &#8220;evaluative&#8221; and others on which I will not insist right now. Along with this, it also has a Flex interface now, built with the Flex 4 SDK (even though the code is still Flex3-ish).</p>
<p>The current version is a first Alpha of a 0.5 and there&#8217;s still room for improvement, so ideas are more than welcome. In addition, the UI itself is not as &#8220;Rich&#8221; as &#8220;RIA&#8221; and not a major change in layout since the previous version. This is mostly because I didn&#8217;t want to invest too much effort in this direction just yet (and as we all know, professional UI is always a bitch in terms of effort).</p>
<p>I&#8217;ve managed to put up a <a href="http://code.google.com/p/quizine/downloads/detail?name=quizine-hsql-demo-0.5-alpha1.war" target="_blank">demo</a> .war file that can be dropped in a Tomcat or anything like it. It uses the <a href="http://hsqldb.org/" target="_blank">HSQLDB</a> engine so no additional setups will be required (except for what&#8217;s already <a href="http://code.google.com/p/quizine/wiki/SystemRequirements" target="_blank">here</a>). Username and password for the demo .war are admin/admin.</p>
<p>I&#8217;m also trying to get some decent VPS hosting for a Live-Demo so it can get more exposure. I&#8217;ve evaluated some options so it should be sorted in a few weeks.</p>
<p>Anyways, any ideas or any kind of help is more than welcome. So if you like it, find it useful or want to contribute, just let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2010/05/16/quizine-goes-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stripes presentation at TJUG</title>
		<link>http://cosminaru.ro/blog/2009/03/05/stripes-presentation-at-tjug/</link>
		<comments>http://cosminaru.ro/blog/2009/03/05/stripes-presentation-at-tjug/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 15:54:45 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Stripes]]></category>
		<category><![CDATA[TJUG]]></category>

		<guid isPermaLink="false">http://cosminaru.ro/blog/?p=140</guid>
		<description><![CDATA[Last week at TJUG, our local Java User Group, I had a short presentation called &#8220;Stripes &#8211; Painless Java Web Development&#8221;, introducing (obviously) Stripes. Slides can be downloaded here.
We also had a chance to take a look at Eclipse RAP in another presentation by Gabriel Ciuloaica &#8211; &#8220;From Eclipse RCP to RAP&#8221;.
Many thanks to Gabi [...]]]></description>
			<content:encoded><![CDATA[<p>Last week at <a href="https://transylvaniajug.dev.java.net/">TJUG</a>, our local Java User Group, I had a short presentation called <em>&#8220;Stripes &#8211; Painless Java Web Development&#8221;</em>, introducing (obviously) <a href="http://www.stripesframework.org/">Stripes</a>. Slides can be downloaded <a href="http://cosminaru.ro/blog/downloads/Stripes-TJUG.pdf">here</a>.</p>
<p>We also had a chance to take a look at <a href="http://www.eclipse.org/rap/">Eclipse RAP</a> in another presentation by Gabriel Ciuloaica &#8211; <em>&#8220;From Eclipse RCP to RAP&#8221;</em>.</p>
<p>Many thanks to Gabi Pop who always takes care of planning and organizing the TJUG meetings.</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2009/03/05/stripes-presentation-at-tjug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quizine 0.3</title>
		<link>http://cosminaru.ro/blog/2008/11/13/quizine-03/</link>
		<comments>http://cosminaru.ro/blog/2008/11/13/quizine-03/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 08:04:28 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Quizine]]></category>

		<guid isPermaLink="false">http://cosminaru.ro/blog/?p=59</guid>
		<description><![CDATA[Last night I managed to publish the 0.3 version for Quizine. Below is a short overview of what&#8217;s been added/improved.

First draft of questionnaire life-cycle management &#8211; The operations on a questionnaire will no be in strict correlation with it&#8217;s state: In Work, Published, Closed (more will probably be added later). The application will allow certain [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I managed to publish the 0.3 version for <a href="http://code.google.com/p/quizine/">Quizine</a>. Below is a short overview of what&#8217;s been added/improved.</p>
<ul>
<li><b>First draft of questionnaire life-cycle management</b> &#8211; The operations on a questionnaire will no be in strict correlation with it&#8217;s state: In Work, Published, Closed (more will probably be added later). The application will allow certain actions only while the questionnaire is in a certain status. At the moment is very rough, but hopefully I&#8217;ll have the time to elaborate it more in a 0.4 (also hoping to get a decent documentation for it).</li>
<li><b>Complete new layout</b> &#8211; The Administrator Console layout has been completely reworked (screenshots <a href="http://code.google.com/p/quizine/#Overview">here</a>). I am pretty ok with this and I don&#8217;t expect to allocate any more effort in this direction any time soon.</li>
<li><b>New sample data</b> &#8211; Both the MySQL and the HSQL demo script now contain enough data with all stages of the application so anyone can easily have a look at all the workflow.</li>
<li><b>Demo movies</b> &#8211; I wanted to start providing some demo movies that should be bundled in the (future) documentation. For the moment I only have two, but I plan to create more. It is not rocket science to make such movies with Ubuntu, but it&#8217;s pretty time consuming if you want to get it right.</li>
</ul>
<p>There is still a lot of effort to be put in Quizine and mostly in overall testing and getting a feeling about usability and overall workflow. So, if you are interested in helping out with any part of the application/documentation/etc, or just have some suggestions, you are more than welcome to contact me at <script type="text/javascript">
                                        document.write("cos");
                                        document.write("min");
                                        document.write("aru@g");
                                        document.write("ma");
                                        document.write("il.c");
                                        document.write("om");
                                    </script>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2008/11/13/quizine-03/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Quizine reports and download packages</title>
		<link>http://cosminaru.ro/blog/2008/10/20/new-quizine-reports-and-download-packages/</link>
		<comments>http://cosminaru.ro/blog/2008/10/20/new-quizine-reports-and-download-packages/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 09:42:08 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Quizine]]></category>

		<guid isPermaLink="false">http://cosminaru.ro/blog/?p=50</guid>
		<description><![CDATA[As of version 0.2, Quizine provides a set of reports detailing quiz results (screenshots here and here).
In addition, the application demo can now be downloaded with a bundled Tomcat. This package contains the demo .war file and can be downloaded as a .zip or as a .tar.gz (see Download section from the project page).
I hope [...]]]></description>
			<content:encoded><![CDATA[<p>As of version 0.2, <a href="http://code.google.com/p/quizine/">Quizine</a> provides a set of reports detailing quiz results (screenshots <a href="http://cosminaru.ro/quizine/images/reports_1.png">here</a> and <a href="http://cosminaru.ro/quizine/images/reports_2.png">here</a>).</p>
<p>In addition, the application demo can now be downloaded with a bundled Tomcat. This package contains the <a href="http://cosminaru.ro/blog/2008/10/15/demo-war-file-for-quizine/">demo .war file</a> and can be downloaded as a <strong>.zip</strong> or as a <strong>.tar.gz</strong> (see <em>Download</em> section from the project <a href="http://code.google.com/p/quizine/">page</a>).</p>
<p>I hope I&#8217;ll find some time to write some decent documentation about it, including both setup and user guide.</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2008/10/20/new-quizine-reports-and-download-packages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Demo .war file for Quizine</title>
		<link>http://cosminaru.ro/blog/2008/10/15/demo-war-file-for-quizine/</link>
		<comments>http://cosminaru.ro/blog/2008/10/15/demo-war-file-for-quizine/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 11:22:13 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Quizine]]></category>

		<guid isPermaLink="false">http://cosminaru.ro/blog/?p=20</guid>
		<description><![CDATA[My new baby project, Quizine, has now a demo .war file that you can download to and deploy in any Java web application container.
Since this .war is for demo purposes only, it uses an HSQL database running in-process and memory-only. As a consequence, all changes that you make will only be consistent until you restart [...]]]></description>
			<content:encoded><![CDATA[<p>My new baby project, <a href="http://code.google.com/p/quizine/">Quizine</a>, has now a demo .war file that you can <a href="http://quizine.googlecode.com/files/quizine-demo-0.1.war">download</a> to and deploy in any Java web application container.</p>
<p>Since this .war is for demo purposes only, it uses an <a href="http://hsqldb.org/">HSQL</a> database running <a href="http://hsqldb.org/doc/guide/ch01.html#N101A8">in-process</a> and <a href="http://hsqldb.org/doc/guide/ch01.html#N101CA">memory-only</a>. As a consequence, all changes that you make will only be consistent until you restart the container, at which point they will be reset.</p>
<p>You can also check the project&#8217;s main page (<a href="http://code.google.com/p/quizine">http://code.google.com/p/quizine</a>) where you can find additional details about getting the application, building it, running, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2008/10/15/demo-war-file-for-quizine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quizine</title>
		<link>http://cosminaru.ro/blog/2008/10/08/quizine/</link>
		<comments>http://cosminaru.ro/blog/2008/10/08/quizine/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 07:03:22 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Quizine]]></category>

		<guid isPermaLink="false">http://cosminaru.ro/blog/?p=18</guid>
		<description><![CDATA[Quizine is a project I&#8217;ve been working for quite some time now. It is a questionnaire management solution built as a Java Web application.
Although it is in only a first draft, I am hoping to find some time to finalize it and create a comprehensive and robust quiz tool. For this, any suggestions or contributions [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/quizine/">Quizine</a> is a project I&#8217;ve been working for quite some time now. It is a questionnaire management solution built as a Java Web application.</p>
<p>Although it is in only a first draft, I am hoping to find some time to finalize it and create a comprehensive and robust quiz tool. For this, any suggestions or contributions are highly appreciated at this stage, as the concept is still in the process of being defined.</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2008/10/08/quizine/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GWT? &#8230;I&#8217;m fine, thanks.</title>
		<link>http://cosminaru.ro/blog/2007/10/17/gwt-im-fine-thanks/</link>
		<comments>http://cosminaru.ro/blog/2007/10/17/gwt-im-fine-thanks/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 20:29:08 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.cosminaru.ro/blog/?p=12</guid>
		<description><![CDATA[Although I can&#8217;t say I love it, I&#8217;m fine with writing pure JavaScript code. I don&#8217;t need some smart-ass engine to generate it from my Java code. Really, I can live without a tool that forces me to sodomize a Java module to be JDK 1.4 compatible, while it sits on top of a heavy [...]]]></description>
			<content:encoded><![CDATA[<p>Although I can&#8217;t say I love it, I&#8217;m fine with writing pure JavaScript code. I don&#8217;t need some smart-ass engine to generate it from my Java code. Really, I <strong>can</strong> live without a tool that forces me to sodomize a Java module to be JDK 1.4 compatible, while it sits on top of a heavy machinery that is annotation and generics oriented.<br />
I have absolutely no problem in <strong>not</strong> integrating a tool that offers me two extreme options: &#8220;map the domain model if you want to use me&#8221; or &#8220;knock yourself out with JSON, key-value DTOs or other such approaches&#8221;. In both cases I would say no thanks, I&#8217;m fine.<br />
I could manage to get by very well without a tool that is trying to implement Swing for the Web. Didn&#8217;t you guys already get it? It doesn&#8217;t work that way! I really don&#8217;t need to think about &#8220;why the fuck is not a label a span?&#8221;, &#8220;why doesn&#8217;t text-align work? aaa, it&#8217;s a div again&#8221; or most importantly &#8220;why the fuck do I need to write 50 lines of Java code for something that is eventually rendered in half of this quantity in HTML?&#8221;<br />
I am definitely ok without a tool for which you can find serious docs anywhere but on the project website. I really don&#8217;t have a problem in not using a tool that has a JSNI acronym for something that is merely anything more than some commented code eventually inlined at compile time.<br />
I thank the GWT guys for making me understand that pure JavaScript is not that evil. In my work, JavaScript (and web development in general) is the mistress with which you can play some pretty unorthodox sex games while watching lesbian porn (if you have the patience for all her moods), while Java on the other hand is the always reliable wife that  you want to have kids with and live happily ever after. As long as none of them sees you on the street with the other one, you&#8217;re a happy developer.<br />
We all know Google is bored and reinvents lot&#8217;s of wheel types just for the fun of it. I would usually be ok with this too (for the sake of competition) if it could only be done with decency and if no bisexual activities were involved. The only plus there that is related to Java is probably Bob Lee&#8217;s Guice.<br />
Really, when I look at GWT I feel that it was written late at night by a bunch of drunk unemployed wannabe programmers or by a soon-to-be-fired Fortran developer in a company adopting Groovy, that tries to save his ass. Whenever I have that feeling I know I need to move on to something else.</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2007/10/17/gwt-im-fine-thanks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Spring by examples &#8211; RMI</title>
		<link>http://cosminaru.ro/blog/2006/11/02/spring-by-examples-rmi/</link>
		<comments>http://cosminaru.ro/blog/2006/11/02/spring-by-examples-rmi/#comments</comments>
		<pubDate>Thu, 02 Nov 2006 08:29:00 +0000</pubDate>
		<dc:creator>Cosmin Marginean</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.cosminaru.ro/blog/?p=6</guid>
		<description><![CDATA[RMI is just one of the strategies that you can choose from when you want to implement remoting in your Spring application. At the moment, Spring provides support for Hessian, Burlap, RMI, Web services and an own HTTP remoting solution. All of these remoting strategies were designed so they can share a common configuration style [...]]]></description>
			<content:encoded><![CDATA[<p>RMI is just one of the strategies that you can choose from when you want to implement remoting in your Spring application. At the moment, Spring provides support for <a href="http://www.caucho.com/hessian">Hessian</a>, <a href="http://www.caucho.com/resin-3.0/protocols/burlap.xtp">Burlap</a>, RMI, Web services and an own HTTP remoting solution. All of these remoting strategies were designed so they can share a common configuration style allowing you to manage the exporting and accessing method from outside your business code, in the well known non-intrusive Spring manner. This means that Spring offers a POJO-based programming model for both your server and client, no matter which remoting solution you choose. The reference documentation regarding the remoting features of Spring is available <a href="http://www.springframework.org/docs/reference/remoting.html">here</a>.</p>
<p>For now we will take a look at how Spring handles RMI while peeking into the code of a small demo application. Our example contains a simple delivery service exposed through a <code>DeliveryServiceIntf</code> interface that has two methods for handling <code>Delivery</code> objects. Below is some of the code for these objects.
<pre class="prettyprint"><code>&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0099;&#0108;&#0097;&#0115;&#0115;&#0032;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0032;&#0105;&#0109;&#0112;&#0108;&#0101;&#0109;&#0101;&#0110;&#0116;&#0115;&#0032;&#0083;&#0101;&#0114;&#0105;&#0097;&#0108;&#0105;&#0122;&#0097;&#0098;&#0108;&#0101;&#0032;&#0123;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0112;&#0114;&#0105;&#0118;&#0097;&#0116;&#0101;&#0032;&#0083;&#0116;&#0114;&#0105;&#0110;&#0103;&#0032;&#0114;&#0101;&#0113;&#0117;&#0101;&#0115;&#0116;&#0101;&#0114;&#0078;&#0097;&#0109;&#0101;&#0059;&#0010;&#0032;&#0032;&#0032;&#0032;&#0112;&#0114;&#0105;&#0118;&#0097;&#0116;&#0101;&#0032;&#0068;&#0097;&#0116;&#0101;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0068;&#0097;&#0116;&#0101;&#0059;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0040;&#0083;&#0116;&#0114;&#0105;&#0110;&#0103;&#0032;&#0114;&#0101;&#0113;&#0117;&#0101;&#0115;&#0116;&#0101;&#0114;&#0078;&#0097;&#0109;&#0101;&#0044;&#0032;&#0068;&#0097;&#0116;&#0101;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0068;&#0097;&#0116;&#0101;&#0041;&#0032;&#0123;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0116;&#0104;&#0105;&#0115;&#0046;&#0114;&#0101;&#0113;&#0117;&#0101;&#0115;&#0116;&#0101;&#0114;&#0078;&#0097;&#0109;&#0101;&#0032;&#0061;&#0032;&#0114;&#0101;&#0113;&#0117;&#0101;&#0115;&#0116;&#0101;&#0114;&#0078;&#0097;&#0109;&#0101;&#0059;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0116;&#0104;&#0105;&#0115;&#0046;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0068;&#0097;&#0116;&#0101;&#0032;&#0061;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0068;&#0097;&#0116;&#0101;&#0059;&#0010;&#0032;&#0032;&#0032;&#0032;&#0125;&#0010;&#0032;&#0032;&#0032;&#0032;&#0046;&#0046;&#0046;&#0010;&#0125;&#0010;&#0010;&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0105;&#0110;&#0116;&#0101;&#0114;&#0102;&#0097;&#0099;&#0101;&#0032;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0110;&#0116;&#0102;&#0032;&#0123;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0118;&#0111;&#0105;&#0100;&#0032;&#0110;&#0101;&#0119;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0040;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0041;&#0059;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0076;&#0105;&#0115;&#0116;&#0032;&#0103;&#0101;&#0116;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0105;&#0101;&#0115;&#0040;&#0041;&#0059;&#0010;&#0010;&#0125;</code></pre>
<p>As you can see, the service interface does not need to extend the <code>java.rmi.Remote</code> in order to be used as an RMI service. Also, it&#8217;s remotely accessible methods don&#8217;t need to throw <code>java.rmi.RemoteException</code>. This is a Spring enhancement that applies to all it&#8217;s remoting solutions, not just to RMI. But this is no reason to get scared, because Spring will manage the invocation failure in it&#8217;s own fashion by throwing a <code><a href="http://www.springframework.org/docs/api/org/springframework/remoting/RemoteAccessException.html">org.springframework.remoting.RemoteAccessException</a></code>. This is an unchecked exception so the client can decide if it wants to catch and handle this exception or just ignore it when it&#8217;s occurrence it&#8217;s considered fatal. This is however Spring&#8217;s recommended approach, but you can also expose traditional RMI implementations with Spring. Actually, this is an important issue that you should consider and analyze when remoting with Spring. While both traditional and Spring-managed RMI clients can access a traditional RMI server implementation exported through Spring, only a Spring client will be able to access a Spring exported RMI service that uses a POJO-based model.<br />Getting back to our example, we have below the implementation of our service which I tried to keep as simple as possible:
<pre class="prettyprint"><code>&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0099;&#0108;&#0097;&#0115;&#0115;&#0032;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0109;&#0112;&#0108;&#0032;&#0105;&#0109;&#0112;&#0108;&#0101;&#0109;&#0101;&#0110;&#0116;&#0115;&#0032;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0110;&#0116;&#0102;&#0032;&#0123;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0112;&#0114;&#0105;&#0118;&#0097;&#0116;&#0101;&#0032;&#0076;&#0105;&#0115;&#0116;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0105;&#0101;&#0115;&#0032;&#0061;&#0032;&#0110;&#0101;&#0119;&#0032;&#0065;&#0114;&#0114;&#0097;&#0121;&#0076;&#0105;&#0115;&#0116;&#0040;&#0041;&#0059;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0118;&#0111;&#0105;&#0100;&#0032;&#0110;&#0101;&#0119;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0040;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0041;&#0032;&#0123;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0105;&#0101;&#0115;&#0046;&#0097;&#0100;&#0100;&#0040;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0041;&#0059;&#0010;&#0032;&#0032;&#0032;&#0032;&#0125;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0076;&#0105;&#0115;&#0116;&#0032;&#0103;&#0101;&#0116;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0105;&#0101;&#0115;&#0040;&#0041;&#0032;&#0123;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0114;&#0101;&#0116;&#0117;&#0114;&#0110;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0105;&#0101;&#0115;&#0059;&#0010;&#0032;&#0032;&#0032;&#0032;&#0125;&#0010;&#0125;</code></pre>
<p>After we have everything implemented on the server side, we need to configure Spring to export the service through RMI. The following Spring configuration snippet does just that.
<pre class="prettyprint"><code>&#0032;&#0032;&#0032;&#0032;&#0060;&#0098;&#0101;&#0097;&#0110;&#0032;&#0105;&#0100;&#0061;&#0034;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0034;&#0032;&#0099;&#0108;&#0097;&#0115;&#0115;&#0061;&#0034;&#0099;&#0111;&#0109;&#0046;&#0116;&#0101;&#0115;&#0116;&#0046;&#0114;&#0109;&#0105;&#0046;&#0115;&#0101;&#0114;&#0118;&#0101;&#0114;&#0046;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0109;&#0112;&#0108;&#0034;&#0062;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0010;&#0032;&#0032;&#0032;&#0032;&#0060;&#0047;&#0098;&#0101;&#0097;&#0110;&#0062;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0060;&#0098;&#0101;&#0097;&#0110;&#0032;&#0099;&#0108;&#0097;&#0115;&#0115;&#0061;&#0034;&#0111;&#0114;&#0103;&#0046;&#0115;&#0112;&#0114;&#0105;&#0110;&#0103;&#0102;&#0114;&#0097;&#0109;&#0101;&#0119;&#0111;&#0114;&#0107;&#0046;&#0114;&#0101;&#0109;&#0111;&#0116;&#0105;&#0110;&#0103;&#0046;&#0114;&#0109;&#0105;&#0046;&#0082;&#0109;&#0105;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0069;&#0120;&#0112;&#0111;&#0114;&#0116;&#0101;&#0114;&#0034;&#0062;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0060;&#0112;&#0114;&#0111;&#0112;&#0101;&#0114;&#0116;&#0121;&#0032;&#0110;&#0097;&#0109;&#0101;&#0061;&#0034;&#0115;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0078;&#0097;&#0109;&#0101;&#0034;&#0032;&#0118;&#0097;&#0108;&#0117;&#0101;&#0061;&#0034;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0045;&#0115;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0034;&#0047;&#0062;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0060;&#0112;&#0114;&#0111;&#0112;&#0101;&#0114;&#0116;&#0121;&#0032;&#0110;&#0097;&#0109;&#0101;&#0061;&#0034;&#0115;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0034;&#0032;&#0114;&#0101;&#0102;&#0061;&#0034;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0034;&#0047;&#0062;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0060;&#0112;&#0114;&#0111;&#0112;&#0101;&#0114;&#0116;&#0121;&#0032;&#0110;&#0097;&#0109;&#0101;&#0061;&#0034;&#0115;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0110;&#0116;&#0101;&#0114;&#0102;&#0097;&#0099;&#0101;&#0034;&#0032;&#0118;&#0097;&#0108;&#0117;&#0101;&#0061;&#0034;&#0099;&#0111;&#0109;&#0046;&#0116;&#0101;&#0115;&#0116;&#0046;&#0114;&#0109;&#0105;&#0046;&#0099;&#0111;&#0109;&#0109;&#0111;&#0110;&#0046;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0110;&#0116;&#0102;&#0034;&#0047;&#0062;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0060;&#0112;&#0114;&#0111;&#0112;&#0101;&#0114;&#0116;&#0121;&#0032;&#0110;&#0097;&#0109;&#0101;&#0061;&#0034;&#0114;&#0101;&#0103;&#0105;&#0115;&#0116;&#0114;&#0121;&#0080;&#0111;&#0114;&#0116;&#0034;&#0032;&#0118;&#0097;&#0108;&#0117;&#0101;&#0061;&#0034;&#0049;&#0050;&#0051;&#0052;&#0034;&#0047;&#0062;&#0010;&#0032;&#0032;&#0032;&#0032;&#0060;&#0047;&#0098;&#0101;&#0097;&#0110;&#0062;</code></pre>
<p>This is the point where we can choose which one of Spring&#8217;s remoting solutions we want to adopt. In our case we will use <code><a href="http://www.springframework.org/docs/api/org/springframework/remoting/rmi/RmiServiceExporter.html">org.springframework.remoting.rmi.RmiServiceExporter</a></code> which will also manage the RMI registry for us. The <code>serviceName</code> and <code>registryPort</code> properties are RMI specific settings that will constitute the information the client side needs to access our service. The URL for the service in this case will look something like <code>rmi://hostname:1234/delivery-service</code>. The <code>serviceInterface</code> property indicates the POJO whose methods will be the subject of RMI invoking and the <code>service</code> property references a bean implementing the business logic of the service.<br />At this point, having all up-and-running on the server side requires a small amount of effort and it only consists of classic Spring context initialization.
<pre class="prettyprint"><code>&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0099;&#0108;&#0097;&#0115;&#0115;&#0032;&#0082;&#0109;&#0105;&#0083;&#0101;&#0114;&#0118;&#0101;&#0114;&#0084;&#0101;&#0115;&#0116;&#0032;&#0123;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0115;&#0116;&#0097;&#0116;&#0105;&#0099;&#0032;&#0118;&#0111;&#0105;&#0100;&#0032;&#0109;&#0097;&#0105;&#0110;&#0040;&#0083;&#0116;&#0114;&#0105;&#0110;&#0103;&#0091;&#0093;&#0032;&#0097;&#0114;&#0103;&#0115;&#0041;&#0032;&#0123;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0065;&#0112;&#0112;&#0108;&#0105;&#0099;&#0097;&#0116;&#0105;&#0111;&#0110;&#0067;&#0111;&#0110;&#0116;&#0101;&#0120;&#0116;&#0032;&#0099;&#0116;&#0120;&#0032;&#0061;&#0032;&#0110;&#0101;&#0119;&#0032;&#0067;&#0108;&#0097;&#0115;&#0115;&#0080;&#0097;&#0116;&#0104;&#0088;&#0109;&#0108;&#0065;&#0112;&#0112;&#0108;&#0105;&#0099;&#0097;&#0116;&#0105;&#0111;&#0110;&#0067;&#0111;&#0110;&#0116;&#0101;&#0120;&#0116;&#0040;&#0034;&#0099;&#0111;&#0109;&#0047;&#0116;&#0101;&#0115;&#0116;&#0047;&#0114;&#0109;&#0105;&#0047;&#0115;&#0101;&#0114;&#0118;&#0101;&#0114;&#0047;&#0114;&#0109;&#0105;&#0045;&#0115;&#0101;&#0114;&#0118;&#0101;&#0114;&#0045;&#0099;&#0111;&#0110;&#0116;&#0101;&#0120;&#0116;&#0046;&#0120;&#0109;&#0108;&#0034;&#0041;&#0059;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0010;&#0032;&#0032;&#0032;&#0032;&#0125;&#0010;&#0125;</code></pre>
<p>Now let&#8217;s see how does it work on the client side and how should we proceed to access the remote service. Here is actually a little bit easier because everything relies on the Spring bean configuration file, as seen below, while the rest of the code is pretty straightforward.
<pre class="prettyprint"><code>&#0032;&#0032;&#0032;&#0032;&#0060;&#0098;&#0101;&#0097;&#0110;&#0032;&#0105;&#0100;&#0061;&#0034;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0034;&#0032;&#0099;&#0108;&#0097;&#0115;&#0115;&#0061;&#0034;&#0111;&#0114;&#0103;&#0046;&#0115;&#0112;&#0114;&#0105;&#0110;&#0103;&#0102;&#0114;&#0097;&#0109;&#0101;&#0119;&#0111;&#0114;&#0107;&#0046;&#0114;&#0101;&#0109;&#0111;&#0116;&#0105;&#0110;&#0103;&#0046;&#0114;&#0109;&#0105;&#0046;&#0082;&#0109;&#0105;&#0080;&#0114;&#0111;&#0120;&#0121;&#0070;&#0097;&#0099;&#0116;&#0111;&#0114;&#0121;&#0066;&#0101;&#0097;&#0110;&#0034;&#0062;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0060;&#0112;&#0114;&#0111;&#0112;&#0101;&#0114;&#0116;&#0121;&#0032;&#0110;&#0097;&#0109;&#0101;&#0061;&#0034;&#0115;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0085;&#0114;&#0108;&#0034;&#0032;&#0118;&#0097;&#0108;&#0117;&#0101;&#0061;&#0034;&#0114;&#0109;&#0105;&#0058;&#0047;&#0047;&#0108;&#0111;&#0099;&#0097;&#0108;&#0104;&#0111;&#0115;&#0116;&#0058;&#0049;&#0050;&#0051;&#0052;&#0047;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0045;&#0115;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0034;&#0047;&#0062;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0060;&#0112;&#0114;&#0111;&#0112;&#0101;&#0114;&#0116;&#0121;&#0032;&#0110;&#0097;&#0109;&#0101;&#0061;&#0034;&#0115;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0110;&#0116;&#0101;&#0114;&#0102;&#0097;&#0099;&#0101;&#0034;&#0032;&#0118;&#0097;&#0108;&#0117;&#0101;&#0061;&#0034;&#0099;&#0111;&#0109;&#0046;&#0116;&#0101;&#0115;&#0116;&#0046;&#0114;&#0109;&#0105;&#0046;&#0099;&#0111;&#0109;&#0109;&#0111;&#0110;&#0046;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0110;&#0116;&#0102;&#0034;&#0047;&#0062;&#0010;&#0032;&#0032;&#0032;&#0032;&#0060;&#0047;&#0098;&#0101;&#0097;&#0110;&#0062;</code></pre>
<p>As you can see, we just need to define the <code>deliveryService</code> bean of class <code><a href="http://www.springframework.org/docs/api/org/springframework/remoting/rmi/RmiProxyFactoryBean.html">org.springframework.remoting.rmi.RmiProxyFactoryBean</a></code>. This will indicate Spring that the <code>deliveryService</code> bean will actually be a proxy accessing the remote service at the URL <code>rmi://localhost:1234/delivery-service</code>, and that the business logic of the service will be used by the client through the methods of the <code>DeliveryServiceIntf</code> interface.<br />Accessing this bean will create a proxy that we can cast to the <code>DeliveryServiceIntf</code> interface and that will dispatch all the calls on this interface to the RMI service. Below is the pretty self-explanatory client-side code.
<pre class="prettyprint"><code>&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0099;&#0108;&#0097;&#0115;&#0115;&#0032;&#0082;&#0109;&#0105;&#0067;&#0108;&#0105;&#0101;&#0110;&#0116;&#0084;&#0101;&#0115;&#0116;&#0032;&#0123;&#0010;&#0010;&#0032;&#0032;&#0032;&#0032;&#0112;&#0117;&#0098;&#0108;&#0105;&#0099;&#0032;&#0115;&#0116;&#0097;&#0116;&#0105;&#0099;&#0032;&#0118;&#0111;&#0105;&#0100;&#0032;&#0109;&#0097;&#0105;&#0110;&#0040;&#0083;&#0116;&#0114;&#0105;&#0110;&#0103;&#0091;&#0093;&#0032;&#0097;&#0114;&#0103;&#0115;&#0041;&#0032;&#0123;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0065;&#0112;&#0112;&#0108;&#0105;&#0099;&#0097;&#0116;&#0105;&#0111;&#0110;&#0067;&#0111;&#0110;&#0116;&#0101;&#0120;&#0116;&#0032;&#0099;&#0116;&#0120;&#0032;&#0061;&#0032;&#0110;&#0101;&#0119;&#0032;&#0067;&#0108;&#0097;&#0115;&#0115;&#0080;&#0097;&#0116;&#0104;&#0088;&#0109;&#0108;&#0065;&#0112;&#0112;&#0108;&#0105;&#0099;&#0097;&#0116;&#0105;&#0111;&#0110;&#0067;&#0111;&#0110;&#0116;&#0101;&#0120;&#0116;&#0040;&#0034;&#0099;&#0111;&#0109;&#0047;&#0116;&#0101;&#0115;&#0116;&#0047;&#0114;&#0109;&#0105;&#0047;&#0099;&#0108;&#0105;&#0101;&#0110;&#0116;&#0047;&#0114;&#0109;&#0105;&#0045;&#0099;&#0108;&#0105;&#0101;&#0110;&#0116;&#0045;&#0099;&#0111;&#0110;&#0116;&#0101;&#0120;&#0116;&#0046;&#0120;&#0109;&#0108;&#0034;&#0041;&#0059;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0110;&#0116;&#0102;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0032;&#0061;&#0032;&#0040;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0073;&#0110;&#0116;&#0102;&#0041;&#0032;&#0099;&#0116;&#0120;&#0046;&#0103;&#0101;&#0116;&#0066;&#0101;&#0097;&#0110;&#0040;&#0034;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0034;&#0041;&#0059;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0100;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0083;&#0101;&#0114;&#0118;&#0105;&#0099;&#0101;&#0046;&#0110;&#0101;&#0119;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0040;&#0110;&#0101;&#0119;&#0032;&#0068;&#0101;&#0108;&#0105;&#0118;&#0101;&#0114;&#0121;&#0040;&#0034;&#0074;&#0111;&#0104;&#0110;&#0032;&#0068;&#0111;&#0101;&#0034;&#0044;&#0032;&#0110;&#0101;&#0119;&#0032;&#0068;&#0097;&#0116;&#0101;&#0040;&#0041;&#0041;&#0041;&#0059;&#0010;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0032;&#0046;&#0046;&#0046;&#0010;&#0032;&#0032;&#0032;&#0032;&#0125;&#0010;&#0125;</code></pre>
<p>Therefore, the client will not be aware of the fact that the service is running remote and even less about the fact that its method calls are marshaled through RMI. The Spring bean configuration file takes care of these details, so the client code will not be affected if we change the remoting strategy or even if we choose to run the service in-process.</p>
<p>The code for this demo can be found <a href="http://cosminaru.ro/downloads/code-samples/spring/rmi.zip">here</a>. The first step is to run <code>ant run-server</code> in order to launch the RMI server and afterwards you need to run <code>ant run-client</code> from another console to start up the RMI client.<br />Hope this post can give you a basic feeling about Spring&#8217;s RMI support. Please feel free to comment on any aspect of this article.</p>
]]></content:encoded>
			<wfw:commentRss>http://cosminaru.ro/blog/2006/11/02/spring-by-examples-rmi/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
	</channel>
</rss>
