<?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>The Code-House Blog &#187; Open Source</title>
	<atom:link href="http://blog.code-house.org/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.code-house.org</link>
	<description>Blog niewielkiej firmy z branży IT.</description>
	<lastBuildDate>Fri, 10 Jun 2011 14:33:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Apache Karaf commands rediscovered</title>
		<link>http://blog.code-house.org/2010/12/apache-karaf-commands-rediscovered/</link>
		<comments>http://blog.code-house.org/2010/12/apache-karaf-commands-rediscovered/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 12:05:49 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Moved]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=308</guid>
		<description><![CDATA[I work with Apache Karaf almost every day. There is a lot of commands provided by default and most of them are a bit anonymous. In this post I would like introduce these commands. List bundles Common command executed in Karaf shell is list. There is few switches which makes this command more usable. First [...]]]></description>
			<content:encoded><![CDATA[<p>I work with Apache Karaf almost every day. There is a lot of commands provided by default and most of them are a bit anonymous. In this post I would like introduce these commands.</p>
<h2>List bundles</h2>
<p>Common command executed in Karaf shell is <strong>list</strong>. There is few switches which makes this command more usable. First of them is <strong>-l</strong> which shows bundle locations, second is <strong>-t</strong>. Second switch is available from Karaf 2.1. </p>
<p>Below example output of these commands:</p>
<pre class="listing">
<span class="startup">
        __ __                  ____
       / //_/____ __________ _/ __/
      / ,<  / __ `/ ___/ __ `/ /_
     / /| |/ /_/ / /  / /_/ / __/
    /_/ |_|\__,_/_/   \__,_/_/

</span><span class="bold">
  Apache Karaf</span> (2.1.2)

Hit '<span class="bold">&lt;tab&gt;</span>' for a list of available commands
and '<span class="bold">[cmd] --help</span>' for help on a specific command.
Hit '<span class="bold">&lt;ctrl-d&gt;</span>' or '<span class="bold">osgi:shutdown</span>' to shutdown Karaf.

<span class="bold">karaf</span>@root&gt; <span class="command">list -l</span>
START LEVEL 100 , List Threshold: 50
   ID   State         Blueprint      Spring    Level  Location
[  34] [Resolved   ] [            ] [       ] [   60] mvn:org.apache.geronimo.specs/geronimo-servlet_2.5_spec/1.1.2
[  39] [Active     ] [            ] [       ] [   60] mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty/6.1.25_1

<span class="bold">karaf</span>@root&gt; <span class="command">list -l -t 0</span>
START LEVEL 100 , List Threshold: 0
   ID   State         Blueprint      Spring    Level  Location
[   0] [Active     ] [            ] [       ] [    0] System Bundle
[   1] [Active     ] [            ] [       ] [    5] mvn:org.ops4j.pax.url/pax-url-mvn/1.2.1
[   2] [Active     ] [            ] [       ] [    5] mvn:org.ops4j.pax.url/pax-url-wrap/1.2.1
[   3] [Active     ] [            ] [       ] [    8] mvn:org.ops4j.pax.logging/pax-logging-api/1.5.3
[   4] [Active     ] [            ] [       ] [    8] mvn:org.ops4j.pax.logging/pax-logging-service/1.5.3
[   5] [Active     ] [            ] [       ] [   10] mvn:org.apache.felix/org.apache.felix.configadmin/1.2.4
[   6] [Active     ] [            ] [       ] [   11] mvn:org.apache.felix/org.apache.felix.fileinstall/3.0.2
[   7] [Active     ] [Created     ] [       ] [   20] mvn:org.apache.aries.blueprint/org.apache.aries.blueprint/0.2-incubating
[   8] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.config/2.1.2
[   9] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.admin/org.apache.karaf.admin.command/2.1.2
[  10] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf/org.apache.karaf.management/2.1.2
[  11] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.spring/2.1.2
[  12] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.features/org.apache.karaf.features.core/2.1.2
[  13] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.shell/org.apache.karaf.shell.packages/2.1.2
[  14] [Active     ] [            ] [       ] [   30] mvn:org.apache.aries.jmx/org.apache.aries.jmx.blueprint/0.2-incubating
[  15] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.modules/2.1.2
[  16] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.shell/org.apache.karaf.shell.ssh/2.1.2
[  17] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.features/org.apache.karaf.features.management/2.1.2
[  18] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.features/org.apache.karaf.features.command/2.1.2
[  19] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.shell/org.apache.karaf.shell.log/2.1.2
[  20] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.admin/org.apache.karaf.admin.core/2.1.2
[  21] [Active     ] [            ] [       ] [   30] mvn:org.apache.aries.jmx/org.apache.aries.jmx/0.2-incubating
[  22] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.blueprint/2.1.2
[  23] [Active     ] [            ] [       ] [   30] mvn:org.apache.mina/mina-core/2.0.0-RC1
[  24] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.shell/org.apache.karaf.shell.dev/2.1.2
[  25] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.shell/org.apache.karaf.shell.osgi/2.1.2
[  26] [Active     ] [            ] [       ] [   30] mvn:org.apache.sshd/sshd-core/0.4.0
[  27] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.shell/org.apache.karaf.shell.commands/2.1.2
[  28] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.features/2.1.2
[  29] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.shell/org.apache.karaf.shell.console/2.1.2
[  30] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.admin/org.apache.karaf.admin.management/2.1.2
[  32] [Active     ] [Created     ] [       ] [   30] mvn:org.apache.karaf.shell/org.apache.karaf.shell.config/2.1.2
[  34] [Resolved   ] [            ] [       ] [   60] mvn:org.apache.geronimo.specs/geronimo-servlet_2.5_spec/1.1.2
[  39] [Active     ] [            ] [       ] [   60] mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jetty/6.1.25_1
</pre>
<p>As you see first comman returns short list which contains bundles installed by me (servlet api and jetty). Second list contains bundles default installed also by Karaf. Another usefull switch is <strong>-s</strong> which shows symbolic names:</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">list -s</span>
START LEVEL 100 , List Threshold: 50
   ID   State         Blueprint      Spring    Level  Symbolic name
[  34] [Resolved   ] [            ] [       ] [   60] org.apache.geronimo.specs.geronimo-servlet_2.5_spec (1.1.2)
[  39] [Active     ] [            ] [       ] [   60] org.apache.servicemix.bundles.jetty (6.1.25.1)
</pre>
<p>Switch -t may be mixed with both -s and -l.</p>
<h2>List services</h2>
<p>After first impression with OSGi and bundles as modules most of us moving to using OSGi services. That&#8217;s really cool stuff and gives a lot of fun, but without helper commands we may stuck. Karaf provides command named <strong>ls</strong> which shows services exported by given bundle.</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">ls 132</span>

Apache Karaf :: Web Console :: Admin Plugin (132) provides:
-----------------------------------------------------------
osgi.service.blueprint.compname = adminPlugin
felix.webconsole.label = admin
objectClass = javax.servlet.Servlet
service.id = 176
----
osgi.blueprint.container.version = 2.1.2
osgi.blueprint.container.symbolicname = org.apache.karaf.webconsole.admin
objectClass = org.osgi.service.blueprint.container.BlueprintContainer
service.id = 178
</pre>
<p>If we would check which services are in use by our bundle we have <strong>very usefull</strong> switch <strong>-u</strong>.</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">ls -u 21</span>
Apache Aries JMX Bundle (21) uses:
----------------------------------
service.vendor = Apache Software Foundation
service.pid = org.apache.felix.cm.ConfigurationAdmin
service.description = Configuration Admin Service Specification 1.2 Implementation
objectClass = org.osgi.service.cm.ConfigurationAdmin
service.id = 33
</pre>
<h2>List packages</h2>
<p>When you work under OSGi it&#8217;s important which packages you import and export. The two commands <strong>packages:imports</strong> and <strong>packages:exports</strong> will simply show what&#8217;s comes and goes from your bundle. I&#8217;ll not show how these commands work but I have little trick for you. When you&#8217;re unable to resolve bundle because you have missing import packages and you have ClassNotFoundException type <strong>dev:dynamic-import bundleid</strong> command. This command add <strong>DynamicImport-Package: *</strong> entry to bundle manifest. After that, when you&#8217;ll resolve bundle type packages:imports and check complete list of import you missed in your headers.</p>
<h2>Features</h2>
<p>All commands shown above are strictly related to OSGi. But Karaf is a little bigger and allow you do more than OSGi execution environment. One of tools which Karaf build on top of OSGi framework is features mechanism. You may define list of things to install and add dependencies between them instead typing install command line after line. But sometimes you would like to check what given feature contains. To do that type <strong>features:info</strong> command. This command requires feature name as argument.</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">features:info webconsole</span>

Description of webconsole 2.1.2 feature
----------------------------------------------------------------
Feature has no configuration
Feature depends on:
  webconsole-base 2.1.2
Feature contains followed bundles:
  mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.admin/2.1.2
  mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.features/2.1.2
  mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.gogo/2.1.2
</pre>
<p>You may use few additional switches: <strong>-b</strong>, <strong>-d</strong>, <strong>-c</strong>. First shows bundles in feature, second bundle dependencies and last feature configuration. We have also another switch <strong>-t</strong> which shows all these informations plus tree of features and it&#8217;s bundles.</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">features:info -t webconsole</span>
Description of webconsole 2.1.99-SNAPSHOT feature
----------------------------------------------------------------
Feature has no configuration
Feature depends on:
  webconsole-base 2.1.99-SNAPSHOT
Feature contains followed bundles:
  mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.admin/2.1.99-SNAPSHOT
  mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.features/2.1.99-SNAPSHOT
  mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.gogo/2.1.99-SNAPSHOT

Feature tree
 webconsole 2.1.99-SNAPSHOT
 + mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.admin/2.1.99-SNAPSHOT
 + mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.features/2.1.99-SNAPSHOT
 \ mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.gogo/2.1.99-SNAPSHOT
    webconsole-base 2.1.99-SNAPSHOT
    + mvn:org.apache.felix/org.apache.felix.metatype/1.0.4
    + mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.branding/2.1.99-SNAPSHOT
    \ mvn:org.apache.felix/org.apache.felix.webconsole/3.1.6
       http 2.1.99-SNAPSHOT
       + mvn:org.ops4j.pax.web/pax-web-api/0.8.1
       + mvn:org.ops4j.pax.web/pax-web-spi/0.8.1
       + mvn:org.ops4j.pax.web/pax-web-runtime/0.8.1
       \ mvn:org.ops4j.pax.web/pax-web-jetty/0.8.1
          jetty [7.0,8.0) *
Tree contains 1 unresolved dependencies
 * means that node declares dependency but the dependant feature is not available.
</pre>
<h2>Development commands</h2>
<p>I mentioned dev:dynamic-import command before. But Karaf have few more commands which makes development easier. First of all is <strong>dev:show-tree</strong> which shows bundles tree, for example:</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">dev:show-tree 39</span>
Bundle dump [39] is currently ACTIVE

dump [39]
+- org.apache.karaf.diagnostic.core [16]
+- org.apache.aries.blueprint [7]
   +- org.apache.felix.configadmin [5]
   |  +- org.ops4j.pax.logging.pax-logging-api [3]
   +- org.ops4j.pax.logging.pax-logging-api [3]
</pre>
<p>Another command you may use is <strong>dev:framework</strong> which allows you change OSGi framework used by Karaf. I don&#8217;t use this command to often.</p>
<p>Last command I would introduce is <strong>dev:create-dump</strong> commited to Karaf trunk by me. This command creates zip archive which contains diagnostic stuff you may attach to JIRA or send to developers in your company to check what was wrong. By default dumps contains log entries from $KARAF_BASE/data/log, list of installed bundles and features. You may also create new diagnostic providers. Sample code is available in SVN: <a href="https://svn.apache.org/repos/asf/karaf/trunk/demos/dump/">demo</a>, <a href="https://svn.apache.org/repos/asf/karaf/trunk/demos/dump/src/main/java/org/apache/karaf/diagnostic/demo/ScreenshotDumpProvider.java">provider class</a>, <a href="https://svn.apache.org/repos/asf/karaf/trunk/demos/dump/src/main/resources/OSGI-INF/blueprint/screenshot.xml">blueprint config</a>.</p>
<h2>Complete</h2>
<p>Remember that every Karaf command can be executed with <strong>&#8211;help</strong> switch which shows all arguments and switches. In this post you was introduced to following commands:</p>
<ul>
<li>list and switches -t -l -s</li>
<li>ls and -u switch</li>
<li>packages:imports, packages:exports, dev:dynamic-import</li>
<li>features:info and switches -b -d -c and -t</li>
<li>dev:show-tree, dev:framework, dev:create-dump</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2010/12/apache-karaf-commands-rediscovered/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Praktyki studenckie w Code-House</title>
		<link>http://blog.code-house.org/2010/04/praktyki-studenckie-w-code-house/</link>
		<comments>http://blog.code-house.org/2010/04/praktyki-studenckie-w-code-house/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 11:35:52 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[Code-House]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=273</guid>
		<description><![CDATA[Jakiś czas temu Jacek Laskowski wspominał o praktykach studenckich w IBM. Celem praktyk w IBM jest zapoznanie się z produktami korporacji, praktyki w Code-House mają nieco inny wymiar &#8211; przede wszystkim technologiczny. Część z dziedzin, w których obracamy się obecnie przy okazji ServiceMixa jest nieco futurystyczna (OSGi R 4.2, dOSGi), część za to bardzo praktyczna [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu <a href="http://jaceklaskowski.pl/">Jacek Laskowski</a> wspominał o <a href="http://jlaskowski.blogspot.com/2010/03/praktyki-studenckie-w-ibm-ta-edycja.html">praktykach studenckich w IBM</a>.<br />
<!-- more --><br />
Celem praktyk w IBM jest zapoznanie się z produktami korporacji, praktyki w Code-House mają nieco inny wymiar &#8211; przede wszystkim technologiczny. Część z dziedzin, w których obracamy się obecnie przy okazji ServiceMixa jest nieco futurystyczna (OSGi R 4.2, dOSGi), część za to bardzo praktyczna np. szerokie użycie Mavena oraz Spring Framework czy JAX-WS/JAX-RS. <strong>Cały kod, który powstanie w wyniku praktyk będzie opublikowany na licencji Apache 2.0 i udostępniony publicznie</strong>.</p>
<p>Pula tematów dla praktykantów obejmuje następujące projekty fundacji Apache:</p>
<ul>
<li>Apache ServiceMix 4</li>
<li>Apache Ode</li>
<li>Apache ActiveMQ</li>
<li>Apache Camel</li>
<li>Apache Karaf</li>
</ul>
<h2>Organizacja praktyk</h2>
<p>Praktyki <strong>są bezpłatne</strong> (niestety), odbywają się w trybie zdalnym i trwają do 3 miesięcy &#8211; termin rozpoczęcia praktyk jest uzgadniany ze studentem. Nie ma konieczności przebywania w naszym biurze &#8211; cały proces naboru aplikacji odbywa się przy pomocy Internetu i dopiero ostatni etap &#8211; rozmowa kwalifikacyjna &#8211; wymaga spotkania. Na co dzień konsultacje będziemy odbywać przy pomocy komunikatorów &#8211; Skype, GTalk, w skrajnym wypadku Gadu-Gadu. ;-) Co dwa tygodnie podsumowujemy minioną &#8222;iterację&#8221; oraz planujemy następną.<br />
Po wprowadzeniu do narzędzi i projektów studenci będą wypływać na głębokie wody &#8211; czyli samodzielną realizację zadań.</p>
<p>Do zarządzania, koordynacji zadań oraz dokumentacji i weryfikacji kodu wykorzystujemy narzędzia Atlassian:</p>
<ul>
<li>JIRA</li>
<li>Green Hopper</li>
<li>Confluence</li>
<li>Bamboo</li>
<li>Fisheye</li>
</ul>
<h2>Jak aplikować?</h2>
<p>Jedyną wymaganą cechą jest znajomość języka Java &#8211; która zostanie zweryfikowana testem. Jeśli dysponujesz tą cechą i jesteś miłośnikiem technologii zapraszamy do wysyłania aplikacji pod adres rekrutacja@code-house.org z tematem Praktyki 2010. Nabór aplikacji na najbliższą edycję praktyk prowadzimy do 20 kwietnia. W zależności od rezultatów będą organizowane kolejne.<br />
Nieco więcej informacji znajdziecie na stronie <a href="http://code-house.org/o-firmie/praktyki/2010">Praktyki Studenckie 2010</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2010/04/praktyki-studenckie-w-code-house/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wprowadzenie do Apache ServiceMix 4 cz. 1</title>
		<link>http://blog.code-house.org/2010/03/introduction-to-apache-servicemix4-part-1/</link>
		<comments>http://blog.code-house.org/2010/03/introduction-to-apache-servicemix4-part-1/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 11:19:50 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[Camel]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[FUSE Source]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[ServiceMix]]></category>
		<category><![CDATA[Moved]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=179</guid>
		<description><![CDATA[Dnia 23 lutego w ramach Warszawa JUG miałem przyjemność wraz z Tomkiem Nurkiewiczem prezentować narzędzia integracyjne z otwartym kodem źródłowym. Tomek przedstawił Mule ESB, podczas gdy ja zająłem się Apache ServiceMix i Apache Camel. Ze względu na objętość przykładu ten wpis będzie jedynie wprowadzeniem do konsoli. Niestety podczas prezentacji nie udało mi się uruchomić przykładu [...]]]></description>
			<content:encoded><![CDATA[<p>Dnia 23 lutego w ramach Warszawa JUG miałem przyjemność wraz z <a href="http://nurkiewicz.blogspot.com/">Tomkiem Nurkiewiczem</a> prezentować narzędzia integracyjne z otwartym kodem źródłowym. Tomek przedstawił Mule ESB, podczas gdy ja zająłem się Apache ServiceMix i Apache Camel. Ze względu na objętość przykładu ten wpis będzie jedynie wprowadzeniem do konsoli.<br />
<!-- more --><br />
Niestety podczas prezentacji nie udało mi się uruchomić przykładu na &#8222;szynie&#8221; &#8211; ponieważ uniemożliwiły to zależności do bibliotek których nie miałem zapisanych lokalnie. Drugim mym przeciwnikiem był czas &#8211; nie było wielu chętnych by słuchać po 2h tłumaczeń dlaczego się nie udało :-) Na problem z zależnościami stworzyłem rozwiązanie i zgłosiłem je do Karaf-a (<a href="https://issues.apache.org/jira/browse/FELIX-2141">FELIX 2141</a>). W przyszłej wersji &#8211; 1.6 &#8211; wszyscy będą mogli skorzystać z polecenia <tt>features:info -t</tt> które wyświetli całe drzewko zależności potrzebnych do zainstalowania nowych funkcjonalności.</p>
<h3>Przygotowanie środowiska</h3>
<p>Do uruchomienia przykładów potrzebować będziemy dwóch paczek &#8211; pierwsza to <a href="http://servicemix.apache.org">Apache ServiceMix</a>, druga to <a href="http://maven.apache.org">Apache Maven</a>. Ze swojej strony polecam pobranie <a href="http://fusesource.com/downloads/">FUSE ESB 4.2</a>, produktu który jest oparty o ServiceMix. Zgodnie z moimi zapowiedziami od tej wersji FUSE Source wprowadza pełne wsparcie produkcyjne dla ServiceMix 4. Jeśli nie masz zainstalowanego Mavena i nigdy tego nie robiłeś zajrzyj na wiki <a href="http://inside.code-house.org/confluence/">Code-House</a>: <a href="http://inside.code-house.org/confluence/display/MVN/Wprowadzenie+do+Maven+2">Wprowadzenie do Maven 2</a></p>
<p>Po pobraniu odpowiedniej wersji należy ją rozpakować do wybranego folderu. Szynę uruchamiamy skryptem servicemix.bat. Jeśli wszystko przebiegło poprawnie naszym oczom powinien ukazać się obrazek jak poniżej:</p>
<pre class="listing">
<span class="command">E:\tools\progress\fuse-esb\4.2.0-b\bin>servicemix.bat</span>
 ____                  _          __  __ _
/ ___|  ___ _ ____   _(_) ___ ___|  \/  (_)_  __
\___ \ / _ \ '__\ \ / / |/ __/ _ \ |\/| | \ \/ /
 ___) |  __/ |   \ V /| | (_|  __/ |  | | |>  <
|____/ \___|_|    \_/ |_|\___\___|_|  |_|_/_/\_\

  Apache ServiceMix (4.2.0-fuse-01-00)

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
karaf@root&gt;
</pre>
<p>Od tej chwili mamy do dyspozycji konsolę administracyjną. Aby zwiększyć jej użyteczność wykonujemy następujące polecenia:</p>
<pre class="listing">
karaf@root&gt; <span class="command">osgi:install wrap:mvn:http://download.java.net/maven/2!net.java.dev.jna/jna/3.1.0</span>
Bundle ID: 134
</pre>
<p>Spowoduje to pobranie z repozytorium Mavena (http://download.java.net/maven/2) biblioteki JNA w wersji 3.1.0. Nie musimy oczywiście określać za każdym razem adresu repozytoriów, ale o tym nieco później. Prefix wrap: spowoduje wygenerowanie manifestu OSGi na podstawie zawartości pobranej biblioteki. Jest on konieczny ponieważ JNA nie dostarcza potrzebnych danych do uruchomienia w środowisku OSGi.</p>
<pre class="listing">
karaf@root&gt; <span class="command">osgi:install mvn:http://jansi.fusesource.org/repo/release!org.fusesource.jansi/jansi/1.2</span>
Bundle ID: 135
</pre>
<p>Druga biblioteka wykorzystuje JNA i umożliwia kolorowanie tekstu w konsoli windowsowej zgodnie z ANSI, czyli tak jak w standardowych terminalach Unix-a. Po zainstalowaniu tych dwóch rzeczy pora zaprząc je do pracy. Poniżej filtrujemy listę zainstalowanych rzeczy po słowie Console.</p>
<pre class="listing">
karaf@root&gt; <span class="command">list|grep Console</span>
[  10] [Active     ] [Created     ] [       ] [   30] Apache Felix Karaf :: Shell Console (1.4.0.fuse-01-00)
karaf@root&gt; <span class="command">refresh 10</span>
</pre>
<p>Numer 10 oznacza id paczki OSGi, tekst Active to stan paczki a tekst Created informuje o stanie kontekstu blueprint, czwarty bloczek to stan kontekstu Springa, numer 30 to start level paczki a w ostatnim nawiasie mamy wersję. Sporo informacji jak na jedną linijkę, nieprawdaż? Blueprint to standaryzowanie tego czym jest Spring i Spring DM, także można korzystać zamiennie bądź z jednego bądź z drugiego rozwiązania. Ciekawe porównanie funkcjonalności obu rozwiązań &#8211; Spring DM oraz Blueprint opublikował kilka dni temu Guillaume Nodet na swoim blogu we wpisie <a href="http://gnodet.blogspot.com/2010/03/spring-dm-aries-blueprint-and-custom.html">Spring-DM, Aries Blueprint and custom namespaces</a>. Apache Camel od wersji 2.3 będzie wspierał Blueprint (<a href="https://issues.apache.org/activemq/browse/CAMEL-2022">CAMEL-2022</a>).</p>
<pre class="listing">
<span class="startup">
 ____                  _          __  __ _
/ ___|  ___ _ ____   _(_) ___ ___|  \/  (_)_  __
\___ \ / _ \ '__\ \ / / |/ __/ _ \ |\/| | \ \/ /
 ___) |  __/ |   \ V /| | (_|  __/ |  | | |>  <
|____/ \___|_|    \_/ |_|\___\___|_|  |_|_/_/\_\
</span><span class="bold">
  Apache ServiceMix</span> (4.2.0-fuse-01-00)

Hit '<span class="bold">&lt;tab&gt;</span>' for a list of available commands
and '<span class="bold">[cmd] --help</span>' for help on a specific command.
<span class="bold">karaf</span>@root&gt;
</pre>
<p>Teraz wykonanie poleceń z filtrem <strong>grep</strong> spowoduje podświetlenie szukanej frazy:</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">list |grep Console</span>
[  10] [Active     ] [Created     ] [       ] [   30] Apache Felix Karaf :: Shell <span class="grep">Console</span> (1.4.0.fuse-01-00)
</pre>
<p>Takie małe udogodnienie przy przeglądaniu dłuższych rezultatów jest nieocenione.</p>
<h3>Podstawowe polecenia konsoli</h3>
<p>Polecenia w Apache Karaf są podzielone na kilka grup, które ułatwiają zarządzanie. Pierwszą grupą jest OSGi.</p>
<h4>Polecenia OSGi</h4>
<table class="listing">
<tr>
<th>Polecenie</th>
<th>Przeznaczenie</th>
</tr>
<tr>
<td>list</td>
<td>Wyświetlenie listy zainstalowanych paczek</td>
</tr>
<tr>
<td>ls [bundle id]</td>
<td>Wyświetlenie usług eksportowanych przez paczkę.</td>
</tr>
</tr>
<tr>
<td>ls -u [bundle id]</td>
<td>Wyświetlenie usług używanych przez paczkę.</td>
</tr>
<tr>
<td>headers [bundle id]</td>
<td>Wyświetlenie manifestu paczki.</td>
</tr>
<tr>
<td>start [bundle id]</td>
<td>Uruchomienie paczki o danym ID.</td>
</tr>
<tr>
<td>stop [bundle id]</td>
<td>Zatrzymanie paczki o danym ID.</td>
</tr>
<tr>
<td>restart [bundle id]</td>
<td>Zatrzymanie i wystartowanie paczki o danym ID.</td>
</tr>
<tr>
<td>update [bundle id]</td>
<td>Aktualizacja paczki.</td>
</tr>
<tr>
<td>refresh [bundle id]</td>
<td>Odświeżenie importów paczki a także przeładowanie kontekstu Spring-DM.</td>
</tr>
<tr>
<td>install [url]</td>
<td>Zainstalowanie nowej paczki.</td>
</tr>
<tr>
<td>uninstall [bundle id]</td>
<td>Odinstalowanie paczki.</td>
</tr>
<tr>
<td>shutdown</td>
<td>Zatrzymanie kontenera.</td>
</tr>
<tr>
<td>bundle-level [bundle id] [startLevel]</td>
<td rowspan="2">Ustawienie start levelu dla paczki.</td>
</tr>
<tr>
<td>start-level</td>
</tr>
</table>
<p>Kiedy znamy już listę poleceń nie pozostaje nic innego jak je wypróbować. :-) Checkout <a href="http://svn.code-house.org/wjug/">przykładowego kodu</a> z SVN pozwoli wykonać nam kilka ćwiczeń. Po wykonaniu polecenia <strong>mvn clean install</strong> w repozytorium Mavena są JARy które, naturalnie, chcemy zainstalować. Rezultat jaki powinniśmy zobaczyć w konsoli to:</p>
<pre class="listing">
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] Money transfer ServiceMix example ..................... SUCCESS [2.028s]
[INFO] Money transfer :: API ................................. SUCCESS [3.182s]
[INFO] Money transfer :: POI bundle .......................... SUCCESS [7.504s]
[INFO] Money transfer :: Internal ............................ SUCCESS [0.093s]
[INFO] Money transfer :: Internal :: CSV ..................... SUCCESS [4.399s]
[INFO] Money transfer :: Internal :: XLS ..................... SUCCESS [2.823s]
[INFO] Money transfer :: Internal :: Mail .................... SUCCESS [2.309s]
[INFO] Money transfer :: Internal :: Splitter ................ SUCCESS [0.936s]
[INFO] Money transfer :: Internal :: Routes .................. SUCCESS [1:21.241s]
[INFO] Money transfer :: External ............................ SUCCESS [0.016s]
[INFO] Money transfer :: External :: Customer ................ SUCCESS [3.182s]
[INFO] Money transfer :: External :: Bank .................... SUCCESS [2.059s]
[INFO] Money transfer :: External :: Validator ............... SUCCESS [2.918s]
[INFO] Money transfer :: Features ............................ SUCCESS [0.171s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 54 seconds
[INFO] Finished at: Mon Mar 22 10:47:27 CET 2010
[INFO] Final Memory: 127M/341M
[INFO] ------------------------------------------------------------------------
</pre>
<p>Może teraz kilka słów o modułach które są widoczne w Mavenie.</p>
<table class="listing">
<tr>
<th width="28%">Moduł</th>
<th width="32%">Ścieżka<br />Maven ID</th>
<th>Przeznaczenie</th>
</tr>
<tr>
<td>Money transfer :: API</td>
<td>api<br />org.code-house.samples/api</td>
<td>API systemów zewnętrznych oraz POJO wykorzystywane do komunikacji.</td>
</tr>
<tr>
<td>Money transfer :: POI bundle</td>
<td>poi<br />org.code-house.samples/poi</td>
<td>Bundle zawierający bibliotekę Apache POI oraz wszystkie jej zależności z Manifestem OSGi pozwalającym na jej uruchomienie na szynie.</td>
</tr>
<tr>
<td>Money transfer :: Internal :: CSV</td>
<td>internal/csv<br />org.code-house.samples.internal/csv</td>
<td>Paczka zawierająca implementację procesora przetwarzającego pliki CSV na POJO MoneyTransfer.</td>
</tr>
<tr>
<td>Money transfer :: Internal :: XLS</td>
<td>internal/xls<br />org.code-house.samples.internal/xls</td>
<td>Paczka zawierająca implementację procesora przetwarzającego pliki XLS na POJO MoneyTransfer.</td>
</tr>
<tr>
<td>Money transfer :: Internal :: Mail</td>
<td>internal/mail<br />org.code-house.samples.internal/mail</td>
<td>Paczka z kodem dzielącym przychodzący mail z załącznikami na pojedyncze wiadomości które można przetworzyć jako XLS bądź CSV.</td>
</tr>
<tr>
<td>Money transfer :: Internal :: Splitter</td>
<td>internal/splitter<br />org.code-house.samples.internal/splitter</td>
<td>Paczka z kodem odpowiedzialnym za rozdzielanie listy obiektów MoneyTransfer na listę wiadomości.</td>
</tr>
<tr>
<td><strong>Money transfer :: Internal :: Routes</strong></td>
<td>internal/routes<br />org.code-house.samples.internal/routes</td>
<td><strong>Główna paczka z definicjami routingu</strong></td>
</tr>
<tr>
<td>Money transfer :: External :: Customer</td>
<td>external/customer<br />org.code-house.samples.external/customer</td>
<td>Implementacja WebService odpowiedzialnego za pobieranie danych klienta na podstawie numeru rachunku bankowego.</td>
</tr>
<tr>
<td>Money transfer :: External :: Bank</td>
<td>external/bank<br />org.code-house.samples.external/bank</td>
<td>Implementacja usługi zwracającej informację o nazwie banku na podstawie numeru rachunku.</td>
</tr>
<tr>
<td>Money transfer :: External :: Validator</td>
<td>external/validator<br />org.code-house.samples.external/validator</td>
<td>Usługa weryfikująca czy MoneyTransfer jest poprawny.</td>
</tr>
<tr>
<td>Money transfer :: Features</td>
<td>features<br />org.code-house.samples/features</td>
<td>Moduł zawierający opcjonalny deskryptor do uruchomienia modułów.</td>
</tr>
</table>
<p>Jak widać dwa główne obszary projektu są skupione w katalogach internal oraz external. Ten pierwszy zawiera implementacje ściśle związaną z usługami natomiast drugi to &#8222;zatyczki&#8221; emulujące działanie systemów zewnętrznych. Drobna nota &#8211; kolumna Maven ID nie zawiera informacji o wersji &#8211; w każdym module jest to <strong>1.0.0.SNAPSHOT</strong>.</p>
<p>Aby zainstalować któryś bundle przechodzimy do konsoli ServiceMix&#8217;a i wykonujemy takie polecenia:</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">install -s mvn:org.code-house.samples/api/1.0.0.SNAPSHOT</span>
Bundle ID: 210
<span class="bold">karaf</span>@root&gt; <span class="command">features:install camel-jetty</span>
<span class="bold">karaf</span>@root&gt; <span class="command">install -s mvn:org.code-house.samples.external/customer/1.0.0.SNAPSHOT</span>
Bundle ID: 211
</pre>
<p>Po wykonaniu tych poleceń powinien być uruchomiony Web Service którego WSDL znajduje się pod adresem http://localhost:9001/CustomerWs?wsdl. Przełącznik <strong>-s</strong> w przypadku polecenia install powoduje że po zainstalowaniu bundle zostanie wystartowany. Polecenie <strong>features-install camel-jetty</strong> jest potrzebne nie ze względu na to że kolejna paczka korzysta z Camela, dzięki jego wykonaniu zostanie zainstalowane Jetty, z którego korzysta CXF.</p>
<p>Kolejne paczki instalujemy analogicznie:</p>
<pre class="listing">
<span class="bold">karaf</span>@root&gt; <span class="command">features:install camel-activemq</span>
<span class="bold">karaf</span>@root&gt; <span class="command">install -s mvn:org.code-house.samples.external/validator/1.0.0.SNAPSHOT</span>
Bundle ID: 215
<span class="bold">karaf</span>@root&gt; <span class="command">install -s mvn:org.code-house.samples.external/bank/1.0.0.SNAPSHOT</span>
Bundle ID: 217
</pre>
<p>Rozszerzenie <a href="http://camel.apache.org/activemq.html">camel-activemq</a> jest rozszerzeniem modułu <a href="http://camel.apache.org/jms.html">camel-jms</a> które pozwala na nieco wydajniejszą pracę z <a href="http://activemq.apache.org">ActiveMQ</a>.</p>
<h4>Integracja ServiceMix z repozytoriami Mavena</h4>
<p>Maven jako narzędzie do budowania korzysta z określonego schematu składowania bibliotek które następnie są automatycznie pobierane. Karaf, który jak wspomniałem podczas prezentacji, wyłonił się z projektu ServiceMix Kernel korzysta z biblioteki <a href="http://wiki.ops4j.org/display/paxurl/Documentation">Pax URL</a>. Dzięki temu z marszu mamy dostęp do standardowych repozytoriów Mavena, co jednak gdy mamy swoje repozytorium, które zawiera tylko nasze artefakty?<br />
Otwieramy plik etc/org.ops4j.pax.url.mvn.cfg i dodajemy w nim co trzeba. Moja standardowa konfiguracja wygląda następująco:</p>
<pre class="brush: plain; title: ; notranslate">
org.ops4j.pax.url.mvn.settings=E:/tools/maven-2.2.1/conf/settings.xml
org.ops4j.pax.url.mvn.localRepository=E:/repository
org.ops4j.pax.url.mvn.defaultRepositories=file:${karaf.home}/${karaf.default.repository}@snapshots
org.ops4j.pax.url.mvn.repositories= \
    http://repo1.maven.org/maven2, \
    http://repo.fusesource.com/maven2, \
    http://repo.fusesource.com/maven2-snapshot@snapshots@noreleases, \
    http://repository.apache.org/content/groups/snapshots-group@snapshots@noreleases, \
    http://repository.ops4j.org/maven2, \
    http://svn.apache.org/repos/asf/servicemix/m2-repo, \
    http://repository.springsource.com/maven/bundles/release, \
    http://repository.springsource.com/maven/bundles/external, \
    http://repository.code-house.org/content/groups/release, \
    http://repository.code-house.org/content/groups/snapshot@snapshots@noreleases, \

http://jansi.fusesource.org/repo/release
</pre>
<p>Dzięki temu PAX w pierwszej kolejności będzie skanował katalog E:/repository zamiast standardowego ~/.m2/repository. Jeśli któreś z repozytoriów wymaga autoryzacji adres powinien wyglądać następująco:</p>
<pre class="brush: plain; title: ; notranslate">http://user:pass@jansi.fusesource.org/repo/release</pre>
<h3>Podsumowanie</h3>
<p>Mam nadzieję że wpis ten przybliży chociaż w niewielkim stopniu ServiceMix 4 oraz Karafa. W przyszłym wpisie, którego daty publikacji nie sposób przewidzieć zostaną dokładniej omówione polecenia z grupy <strong>features</strong>. Póki co życzę miłej zabawy z konsolą. :-) W razie pytań, niejasności i problemów &#8211; proszę o komentarze.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2010/03/introduction-to-apache-servicemix4-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Spring 3.0 RC3 + Maven</title>
		<link>http://blog.code-house.org/2009/12/spring-3-0-rc3-maven/</link>
		<comments>http://blog.code-house.org/2009/12/spring-3-0-rc3-maven/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 18:25:34 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Spring Source]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=162</guid>
		<description><![CDATA[Właśnie wyłapałem na Twitterze, że Spring 3.0 RC3 został wydany. Dla tych, którzy chcieli by pobrać nową wersję do swojego projektu opartego o Mavena drobna informacja &#8211; repozytorium z tymi artefaktami znajduje się pod adresem http://maven.springframework.org/milestone. Miejmy nadzieję, że będzie to repozytorium które się nie zmieni po 3 miesiącach na inne. W razie problemów &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Właśnie wyłapałem na Twitterze, że <a href="http://www.springsource.com/download?project=Spring%20Framework">Spring 3.0 RC3</a> został wydany.</p>
<p>Dla tych, którzy chcieli by pobrać nową wersję do swojego projektu opartego o Mavena drobna informacja &#8211; repozytorium z tymi artefaktami znajduje się pod adresem <a href="http://maven.springframework.org/milestone">http://maven.springframework.org/milestone</a>. Miejmy nadzieję, że będzie to repozytorium które się nie zmieni po 3 miesiącach na inne.</p>
<p>W razie problemów &#8211; można zawsze skorzystać z repozytorium utrzymywanego na <a href="http://repository.code-house.org/content/repositories/com.springsource.repository.bundles.milestone/">serwerze Code-House</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2009/12/spring-3-0-rc3-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ServiceMix IDE integration</title>
		<link>http://blog.code-house.org/2009/07/servicemix-ide-integration/</link>
		<comments>http://blog.code-house.org/2009/07/servicemix-ide-integration/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 06:00:20 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[FUSE Source]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[ServiceMix IDE]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=88</guid>
		<description><![CDATA[Jakiś czas temu zapraszaliśmy na tym blogu zainteresowanych na Warszawski Eclipse DemoCamp Galileo 2009. Jest nam niezmiernie miło ogłosić, że temat poruszany na tym spotkaniu przez Code-House Software został kontynuowany. Wsparcie dla Apache ServiceMix w oparciu o Spring IDE zainteresowało społeczność jak i organizacje skupione wokół projektu, między innymi FUSE Source. Nie będzie to oczywiście [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu <a href="http://blog.code-house.org/2009/05/warszawski-eclipse-democamp-galileo-2009/">zapraszaliśmy na tym blogu</a> zainteresowanych na Warszawski Eclipse DemoCamp Galileo 2009. Jest nam niezmiernie miło ogłosić, że temat poruszany na tym spotkaniu przez Code-House Software został kontynuowany. Wsparcie dla <a href="http://servicemix.apache.org/">Apache ServiceMix</a> w oparciu o <a href="http://springide.org">Spring IDE</a> zainteresowało społeczność jak i organizacje skupione wokół projektu, między innymi <a href="http://fusesource.com/">FUSE Source</a>. Nie będzie to oczywiście alternatywa dla narzędzi oferowanych przez tą firmę a raczej dopełnienie funkcjonalności, których w tej chwili trudno szukać.<br />
<!-- more --><br />
Strona projektu znajduje się na razie na <a href="http://projects.code-house.org/wiki/sm-ide">wiki</a> bug trackera Code-House i jest na nim kilka informacji odnośnie celów projektu i nawet parę zadań. :-) Na pytanie kiedy pojawi się działająca wersja ciężko nam odpowiedzieć ponieważ w obecnej chwili siły przerobowe naszej firmy oprócz zaangażowania w kontrakt muszą podołać przygotowaniu akcji marketingowej w prasie oraz internecie. Miejmy nadzieję, że przed końcem wakacji pojawi się działająca wersja. Oczywiście nie jest to jedyny sposób w jaki Code-House wspiera społeczność projektu Apache ServiceMix, w planach mamy wspomaganie paru komponentów które wzbogacą funkcjonalność magistrali.</p>
<p>Obecnie projekt ma przygotowaną infrastrukturę w oparciu o <a href="http://maven.apache.org">Apache Maven 2</a> tak by całość mogła być budowana automatycznie. Sporym problemem z tworzeniem rozszerzeń do <a href="http://eclipse.org">Eclipse IDE</a> jest właśnie ciągła integracja. Zazwyczja cały proces jest realizowany przy pomocy generowanych plików zgodnych z <a href="http://ant.apache.org">Apache Ant</a>. Niestety by je uruchomić trzeba i tak mieć lokalną instalację Eclipse. Po kilku dniach wysiłków udało się jednak znaleźć rozwiązanie a lokalną instalację wykorzystywać tylko w przypadku konieczności. Zainteresowanych zapraszam do repozytorium ze <a href="http://svn.code-house.org/servicemix-ide/">źródłami projektu</a>. </p>
<p>Ogólnie rzecz biorąc budowanie wtyczek, update site (czy repozytoriów p2), bez użycia Eclipse jest zadaniem trudnym. Mimo tego, że <a href="http://eclipsesource.com/blogs/2009/06/10/p2-publisher-part-ii/">P2 Publisher</a> wygląda na niezależny od samego Eclipse nie można go uruchomić poza OSGi/Equinox. Próbowaliśmy obejść ten problem dodając własne implementacje części interfejsów jednak ilość zależności w kodzie jest bardzo duża i po pół dnia walki niestety trzeba było zrezygnować by nie zabrnąć w ślepą uliczkę. Podobnie ma się kwestia z taskami ant, które są równie oporne w działaniu. Alternatywą był projekt <a href="http://www.eclipse.org/buckminster/">Buckminster</a> i adaptery do Mavena. Budowanie jednak również musiało by wówczas być takie jak zwykle w świecie Eclipse &#8211; przez Ant.</p>
<p>Rozwiązaniem okazało się połączenie <a href="http://maven.apache.org/plugins/maven-eclipse-plugin/to-maven-mojo.html">maven-eclipse-plugin:to-maven</a> oraz <a href="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html">maven-bundle-plugin</a> z projektu <a href="http://felix.apache.org/">Apache Felix</a>. Pierwszy zapewnił wyeksportowanie platformy Eclipse do naszego <a href="http://repository.code-house.org/">repozytorim Mavena</a> podczas gdy drugi generuje odpowiednie manifesty zgodne z OSGi. Update site jest już końcową fazą budowania. Z użyciem <a href="http://maven.apache.org/plugins/maven-assembly-plugin/">maven-assembly-plugin</a> tworzymy strukturę właściwą Eclipse. Opcjonalnym elementem, który wymaga instalacji Eclipse na komputerze jest stworzenie repozytorium P2 uruchamianym przez <a href="http://mojo.codehaus.org/exec-maven-plugin/exec-mojo.html">maven-exec-plugin:exec</a>. Pracy było dużo ale mamy nadzieję że zaprocentuje ona w przyszłości przyśpieszając development i wprowadzanie zmian do projektu. Po więcej informacji o postępach w pracach zapraszam ponownie na blog do kategorii ServiceMix IDE.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2009/07/servicemix-ide-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Materiały z Eclipse DemoCamp</title>
		<link>http://blog.code-house.org/2009/06/materialy-z-eclipse-democamp/</link>
		<comments>http://blog.code-house.org/2009/06/materialy-z-eclipse-democamp/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 15:45:25 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=64</guid>
		<description><![CDATA[Zgodnie z obietnicą z poprzedniego postu zamieszczam materiały z prezentacji którą wczoraj przeprowadziłem w ramach Warszawskiego Eclipse DemoCamp Galileo 2009. Celem prezentacji było dodanie obsługi nowej (niestandardowej) przestrzeni nazw w Spring IDE. Jako dobry przykład rozbudowanej przestrzeni nazw wybrałem konfigurację komponentu servicemix-file. Jako że nie udało mi się przed prezentacją zmusić Apache XBean do pracy [...]]]></description>
			<content:encoded><![CDATA[<p>Zgodnie z obietnicą z <a href="http://blog.code-house.org/2009/05/warszawski-eclipse-democamp-galileo-2009/">poprzedniego</a> postu zamieszczam materiały z prezentacji którą wczoraj przeprowadziłem w ramach <a href="http://groups.google.com/group/warszawa-jug/web/eclipse-democamp-2009">Warszawskiego Eclipse DemoCamp Galileo 2009</a>.</p>
<p><a href="http://blog.code-house.org/wp-content/uploads/ide2.png"><img src="http://blog.code-house.org/wp-content/uploads/ide2-300x179.png" alt="Spring IDE" title="Spring IDE" width="300" height="179" class="alignright size-medium wp-image-66" /></a> Celem prezentacji było dodanie obsługi nowej (niestandardowej) przestrzeni nazw w Spring IDE. Jako dobry przykład rozbudowanej przestrzeni nazw wybrałem konfigurację komponentu <a href="http://servicemix.apache.org/SM/servicemix-file.html">servicemix-file</a>. Jako że nie udało mi się przed prezentacją zmusić <a href="http://geronimo.apache.org/xbean/">Apache XBean</a> do pracy wewnątrz Eclipse musiałem stworzyć własny namespace handler. Dopiero wczoraj, późno w nocy stworzyłem <a href="https://issues.apache.org/jira/browse/XBEAN-132">patch</a> który umożliwia podpięcie normalnego handlera. Jakkolwiek przykład dla spójności pozostał ze starym kodem.</p>
<p>Zapraszam do pobierania <a href="http://code-house.org/downloads/software/prezentacje/Spring IDE.ppsx">slajdów</a> z prezentacji oraz kodu <a href="http://code-house.org/downloads/software/przyklady/Spring IDE.zip">kodu źródłowego</a> projektu.</p>
<p>Niestety nie udało mi się omówić wszystkich aspektów które chciałem, zatem możecie spodziewać się publikacji na temat rozszerzania Spring IDE. :-).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2009/06/materialy-z-eclipse-democamp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Warszawski Eclipse DemoCamp Galileo 2009</title>
		<link>http://blog.code-house.org/2009/05/warszawski-eclipse-democamp-galileo-2009/</link>
		<comments>http://blog.code-house.org/2009/05/warszawski-eclipse-democamp-galileo-2009/#comments</comments>
		<pubDate>Sat, 30 May 2009 12:01:26 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Spring Source]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=58</guid>
		<description><![CDATA[W dniu 2 czerwca 2009 odbędzie się Warszawski Eclipse DemoCamp Galileo 2009, nasza firma wspiera to wydarzenie merytorycznie oraz finansowo. Głównym sponsorem jest fundacja Eclipse. Działanie to doskonale wpisuje się w profil naszej firmy, której celem jest współpraca ze społecznością oraz promowanie rozwiązań Open Source &#8211; Spring IDE &#8211; o którym będzie mowa to projekt [...]]]></description>
			<content:encoded><![CDATA[<p>W dniu 2 czerwca 2009 odbędzie się <a href="http://groups.google.com/group/warszawa-jug/web/eclipse-democamp-2009">Warszawski Eclipse DemoCamp Galileo 2009</a>, nasza firma wspiera to wydarzenie merytorycznie oraz finansowo. Głównym sponsorem jest <a href="http://www.eclipse.org/">fundacja Eclipse</a>.<br />
Działanie to doskonale wpisuje się w profil naszej firmy, której celem jest współpraca ze społecznością oraz promowanie rozwiązań Open Source &#8211; Spring IDE &#8211; o którym będzie mowa to projekt z otwartym kodem źródłowym rozwijanym w dużej mierze przez <a href="http://springsource.com">SpringSource</a>.</p>
<p>Tematy które będą prezentowane:</p>
<ul>
<li><b>18:00-18:15 Spring IDE, czyli o wsparciu dla Springa wewnątrz IDE</b>. <em>Łukasz Dywicki</em></li>
<li>18:20-18:35 Wyślij swoją myszę na urlop, czyli o skrótach i szablonach w Eclipse. <em>Wojciech Erbetowski</em></li>
<li>18:40-18:55 Wtyczka do Eclipse w 5 &#8230; no może 15 minut. <em>Mateusz Zięba</em></li>
<li>19:00-19:15 Rozszerzanie JDT dzięki Equinox Aspects i AJDT weaving service. <em>Michał &#8222;migi&#8221; Grzejszczak</em></li>
<li>19:20-19:35 Z Eclipsem w chmurach w 15 minut, czyli jak użyć GoogleApp Engine wraz z pluginem do Eclipse, aby uruchomić aplikację w 15 minut. <em>Łukasz Lenart</em></li>
<li>19:40-19:55 Oracle JRockit Mission Control, czyli demonstracja profilowania i diagnostyki aplikacji Java przy użyciu Eclipse. <em>Waldemar Kot</em></li>
</ul>
<p>Pierwsza pogrubiona prezentacja to nasza :-). Co kryje się w podtytule <em>wsparcie dla Springa wewnątrz IDE</em>? Głownie obszary związane z edycja kontekstu zapisanego w XML, co dokładnie? Tego dowiecie się już na prezentacji. Materiały jak i przykłady zostaną opublikowane na tym blogu po wtorku. Raz jeszcze serdecznie zapraszam na świętowanie nowego wydania. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2009/05/warszawski-eclipse-democamp-galileo-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Szukasz Eclipse? Jest na Code-House!</title>
		<link>http://blog.code-house.org/2009/05/szukasz-eclipse-jest-code-house/</link>
		<comments>http://blog.code-house.org/2009/05/szukasz-eclipse-jest-code-house/#comments</comments>
		<pubDate>Thu, 14 May 2009 19:39:57 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[Code-House]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=35</guid>
		<description><![CDATA[Z ogromną przyjemnością pragniemy poinformować, że od 2 dni z naszego serwera można pobrać wszystkie projekty rozwijane w ramach fundacji Eclipse. Dołączyliśmy tym samym do grona 2 innych polskich mirrorów. Od strony technicznej mirror jest uruchomiony na lighthttpd, oddzielnym IP oraz dedykowanym dysku USB 600 GB. Serwer stoi na łączu 100 mbps, stąd osiągane transfery [...]]]></description>
			<content:encoded><![CDATA[<p>Z ogromną przyjemnością pragniemy poinformować, że od 2 dni z naszego serwera można pobrać wszystkie projekty rozwijane w ramach fundacji <a href="http://eclipse.org">Eclipse</a>. Dołączyliśmy tym samym do grona 2 innych polskich mirrorów.</p>
<p><a href="http://blog.code-house.org/wp-content/uploads/eclipse-mirror1.png"><img src="http://blog.code-house.org/wp-content/uploads/eclipse-mirror1.png" alt="Pobieramy z Code-House" title="Pobieramy z Code-House" width="487" height="177" class="alignleft size-full wp-image-40" /></a>Od strony technicznej mirror jest uruchomiony na <a href="http://www.lighttpd.net/">lighthttpd</a>, oddzielnym IP oraz dedykowanym dysku USB 600 GB. Serwer stoi na łączu 100 mbps, stąd osiągane transfery powinny być zadowalające i użytkownicy szerokopasmowych łączy nie powinni odczuwać żadnego spowolnienia. Na naszym firmowym łączu &#8211; 10 mbps &#8211; udało się osiągnąć ponad 1M/s, czyli tyle ile fabryka dała! :-)</p>
<p>Ruch który generuje mirror to około 20MB/s, czyli od samego początku zaczął być używany w miarę intensywnie. Synchronizacja przy transferze 12 MB/s trwa nieco ponad godzinę. Rozmiar wszystkich plików to niecałe 260 GB, najwięcej miejsca zajmuje:</p>
<ul>
<li><a href="http://www.eclipse.org/projects/listofprojects.php#technology">Technology</a>, 51 GB</li>
<li><a href="http://www.eclipse.org/projects/listofprojects.php#tools">Eclipse tools</a>, 32 GB (AJDT, PDT itp)</li>
<li><a href="http://www.eclipse.org/projects/listofprojects.php#birt">BIRT</a>, 32 GB</li>
<li><a href="http://www.eclipse.org/platform/">Platform</a>, 28 GB</li>
<li><a href="http://www.eclipse.org/projects/listofprojects.php#tptp">TPTP</a>, 27 GB</li>
<li><a href="http://www.eclipse.org/projects/listofprojects.php#webtools">Web tools</a>, 16 GB</li>
</ul>
<p><a href="http://blog.code-house.org/wp-content/uploads/download-code-house.png"><img src="http://blog.code-house.org/wp-content/uploads/download-code-house-300x121.png" alt="Download manager" title="Download manager" width="300" height="121" class="alignright size-medium wp-image-36" /></a><br />
Przyznacie, że WebTools które wydaje się dosyć duże jest nisko w rankingu a TPTP, które używa się sporadycznie jest objętościowo niewiele mniejsze od platformy. Nie dziwi natomiast wysoka pozycja BIRT i Tools.</p>
<p>Mamy nadzieję że nowa usługa przyda się użytkownikom Eclipse, zapraszamy do korzystania. Pobranie Eclipse z Code-House to tylko kilka minut :).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2009/05/szukasz-eclipse-jest-code-house/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SpringSource kupuje Hyperic</title>
		<link>http://blog.code-house.org/2009/05/springsource-kupuje-hyperic/</link>
		<comments>http://blog.code-house.org/2009/05/springsource-kupuje-hyperic/#comments</comments>
		<pubDate>Wed, 06 May 2009 06:55:24 +0000</pubDate>
		<dc:creator>Łukasz Dywicki</dc:creator>
				<category><![CDATA[Hyperic]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Spring Source]]></category>

		<guid isPermaLink="false">http://blog.code-house.org/?p=24</guid>
		<description><![CDATA[Branża IT ostatnimi czasy jest targana coraz to nowymi wiadomościami o łączeniu się firm. Początkowe spekulacje o tym, że IBM chcę przejąć Javę zakończyły się tym, że Oracle kupiło Sun Microsystems. Wywołało to nie lada falę w społeczności z pytaniami co dalej z Javą i bazą MySQL? Dwa dni temu, dokładnie 4 maja 2009 SpringSource przejęło Hyperic. O ile pierwsza nazwa jest zapewne znana większości z Was o tyle druga może być niejasna. ]]></description>
			<content:encoded><![CDATA[<p>Branża IT ostatnimi czasy jest targana coraz to nowymi wiadomościami o łączeniu się firm. Początkowe spekulacje o tym, że <a href="http://ibm.com">IBM</a> chcę przejąć Javę zakończyły się tym, że <a href="http://oracle.com">Oracle</a> kupiło <a href="http://sun.com">Sun Microsystems</a>. Wywołało to nie lada falę w społeczności z pytaniami co dalej z Javą i bazą <a href="http://mysql.com">MySQL</a>?</p>
<p>Nie będziemy jednak roztrząsać strategii takiego giganta jak Oracle, ponieważ jest już świeższy news. :) Dwa dni temu, dokładnie 4 maja 2009 <a href="http://springsource.com/">SpringSource</a> przejęło <a href="http://hyperic.com">Hyperic</a>. O ile pierwsza nazwa jest zapewne znana większości z Was o tyle druga może być niejasna. </p>
<p>Hyperic jest producentem oprogramowania do monitoringu IT, jego czołowym produktem jest Hyperic HQ w wersji <a href="http://www.hyperic.com/products/enterprise-systems-monitoring.html">Enterprise</a> oraz <a href="http://www.hyperic.com/products/open-source-systems-monitoring.html">Open Source</a>. HQ jest również przygotowane do tego by je <a href="http://support.hyperic.com/display/DOC/Plugin+Development+Center">rozszerzać</a>. W oparciu o nie <a href="http://fusesource.com">FUSE Source</a> dostarcza <a href="http://fusesource.com/products/fuse-hq/">FUSE HQ</a> a samo SpringSource narzędzie nazwane <a href="http://www.springsource.com/products/ams">Application Management Suite</a> (w skrócie AMS). O popularności samego HQ może świadczyć fakt, że jego darmowa wersja jest uruchomiona w liczbie 5 000 instancji.</p>
<p>Na czym jest zbudowane Hyperic HQ? Otóż w HQ jest wydzielony agent oraz serwer. Agent to niewielki program uruchomiony na monitorowanej maszynie który wykrywa usługi. Serwer do którego się łączy agent agreguje przesłane dane i w oparciu o nie może wysyłać powiadomienia o wyczerpującym się miejscu na dysku, zbyt dużym obciążeniu bazy danych. Serwer jest oparty o JBoss AS (wyobrażacie sobie klaster monitoringu). Kod aplikacji to typowe J2EE z Hibernate, Quartzem i innymi dobrze znanymi rozwiązaniami pod spodem.</p>
<p>Co przemawiało za tym zakupem? SpringSource już przy przejmowaniu <a href="http://g2one.com/">G2One</a> mówił o zainteresowaniu czymś związanym z wirtualizacją i hardware &#8211; Hyperic w tym wypadku jest bardzo dobrym zakupem dzięki któremu firma stojąca za Springiem będzie mogło zaoferować wsparcie od najwcześniejszych faz projektu po wdrożenie go na dziesiątki serwerów. Nikt nie spekulował o tym że celem może być Hyperic, i jest to miła niespodzianka. Pytanie czy do wykupu ma się przygotowywać <a href="http://gridgain.com">GridGain</a> i <a href="http://www.terracotta.org/">Terracota</a>? Na odpowiedź w Code-House czekamy z wypiekami na twarzy. :) Rod Johnson na oficjalnym blogu podkreśla że ten zakup będzie procentował łatwością monitorowania aplikacji opartych o Springa i serwerów które produkuje SpringSource. Nie pomija on również faktu że obie firmy rozwijały się w podobny sposób, z tym że w nieco innych obszarach.</p>
<p>Z perspektywy Code-House zakup ten jest powodem do radości ponieważ zarówno z pierwszą jak i drugą firmą prowadziliśmy rozmowy o możliwości współpracy. Połączenie tych dwóch kompanii z pewnością uprości przystępowanie do programów partnerskich i miejmy nadzieję obniży koszty. SpringSource realizuje jasną wizję, co bardzo się nam podoba.</p>
<p>Więcej w sieci:</p>
<ul>
<li><a href="http://www.hyperic.com/springsource/">Oficjalna informacja na stronie Hyperic.</a></li>
<li><a href="http://www.hyperic.com/blog/springsource/">Wpis na blogu Hyperic.</a></li>
<li><a href="http://blog.springsource.com/2009/05/04/hyperic/">Wypowiedź Roda Johnson ze SpringSource.</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.code-house.org/2009/05/springsource-kupuje-hyperic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

