<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4831958408390717414</id><updated>2024-08-30T23:53:15.298-07:00</updated><category term="grails"/><category term="wps"/><category term="wid"/><category term="WAS"/><category term="błąd"/><category term="db2"/><category term="ibm"/><category term="instalacja"/><category term="mysql"/><category term="war"/><category term="wdrożenie"/><category term="HelloWorld"/><category term="JDK"/><category term="Permission Denied"/><category term="RedHat Enterprise Linux"/><category term="java.io.FileNotFoundException"/><category term="klient"/><category term="konfiguracja"/><category term="linux"/><category term="netbeans"/><category term="open files"/><category term="praktyka"/><category term="praktyki"/><category term="prezentacja"/><category term="problem"/><category term="projekt"/><category term="przykład"/><category term="serwer"/><category term="temat"/><category term="uruchomienie"/><category term="usługa sieciowa"/><category term="virtual host"/><title type='text'>Dziennik początkującego programisty</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-9001793917661996495</id><published>2010-07-19T20:58:00.000-07:00</published><updated>2010-07-19T12:11:30.936-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="klient"/><category scheme="http://www.blogger.com/atom/ns#" term="usługa sieciowa"/><title type='text'>Grails jako klient usługi sieciowej</title><content type='html'>W tym przykładzie pokażę jak można szybko i z łatwością stworzyć w Grails klienta usługi sieciowej dla &lt;a href=&quot;http://www.xmlme.com/WSShakespeare.asmx?WSDL&quot;&gt;LINK,&lt;/a&gt; bazując na informacjach i kodzie udostępnionych w &lt;a href=&quot;http://netbeans.dzone.com/websvc-on-netbeans-platform&quot;&gt;LINK&lt;/a&gt;. Interfejs użytkownika będzie w całości wygenerowany przez mechanizm rusztowania(ang. Scaffolding), minimalnie tylko zostanie zmodyfikowany jeden z widoków i strona główna.&lt;br /&gt;
&lt;br /&gt;
Teraz trochę o samej usłudze sieciowej, jest to prosta wyszukiwarka cytatów z dzieł Shakespeara. Należy podać część cytatu jaki chcemy odnaleźć, a wyszukiwarka zwraca nam tytuł sztuki, mówce i pełną frazę odpowiadającą szukanemu fragmentowi.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;1. Tworzenie projektu i instalacja biblioteki GroovyWS&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Tutaj znowu mamy pewną dowolność, możemy naszą aplikację Grailsową stworzyć w Netbeans IDE, czy też podając odpowiednią komendę w konsoli, tak czy inaczej zostanie wykonany skrypt napisany w języku Groovy, który inicjujemy poleceniem:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;&amp;gt; &lt;b&gt;grails create-app ShakesQuoteFinder&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;Do projektu potrzebujemy biblioteki GroovyWS, która umożliwi nam połączenie z usługą sieciową. Informacje na temat tej biblioteki możemy znaleźć w &lt;a href=&quot;http://groovy.codehaus.org/GroovyWS&quot;&gt;LINK&lt;/a&gt;, bezpośredni link do pobrania &lt;a href=&quot;http://repository.codehaus.org/org/codehaus/groovy/modules/groovyws/0.5.2/groovyws-0.5.2.jar&quot;&gt;LINK&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;Mamy przygotowany projekt do dalszej pracy, możemy teraz stworzyć klienta usługi bazującego na protokole SOAP.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;2. Modyfikacja i dodanie kodu&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Tworzymy dziedzinę problemu, klasę domenową, której atrybuty odpowiadać będą parametrom przesyłanym do i odbieranym od usługi zamieszczonej w internecie. W klasę domenową o nazwie ShakesQuote(&lt;b&gt;grails create-domain-class ShakesQuote&lt;/b&gt;) wklejamy kod:&lt;br /&gt;
&lt;pre class=&quot;brush:groovy&quot;&gt;class ShakesQuote {
&amp;nbsp;&amp;nbsp;&amp;nbsp; String phrase

&amp;nbsp;&amp;nbsp;&amp;nbsp; String play
&amp;nbsp;&amp;nbsp;&amp;nbsp; String speaker
&amp;nbsp;&amp;nbsp;&amp;nbsp; String words

&amp;nbsp;&amp;nbsp;&amp;nbsp; static constraints = {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phrase(nullable:true)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; play(nullable:true)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; speaker(nullable:true)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; words(nullable:true)
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
}&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;
Dalej, budujemy prostą usługę(zawierającą logikę biznesową) poprzez którą będziemy komunikować się z usługą WSShakespeare(do której link podałem na początku notki). Plik ShakesService(&lt;b&gt;grails create-service Shakes&lt;/b&gt;) nadpisujemy kodem:&lt;br /&gt;
&lt;pre class=&quot;brush:groovy&quot;&gt;import groovyx.net.ws.WSClient

class ShakesService {
    boolean transactional = false

    def findQuote(params){
        def proxy = new WSClient(&quot;http://www.xmlme.com/WSShakespeare.asmx?WSDL&quot;,
            this.class.classLoader)
        proxy.initialize()

        def speech = new XmlParser().parseText(proxy.GetSpeech(params.phrase))

        params.play = speech.PLAY.text()
        params.speaker = speech.SPEAKER.text()
        params.words = speech.text()

        return params
    }
}&lt;/pre&gt;Teraz pozostało już tylko wygenerować kontroler i widoki(&lt;b&gt;grails generate-all ShakesQuote&lt;/b&gt;) oraz zmodyfikować nieznacznie kod tak aby wykorzystać stworzoną usługę w wygenerowanym kontrolerze i lekko poprawić wygląd stworzonej aplikacji.&lt;br /&gt;
&lt;br /&gt;
Przechodzimy do ShakesQuoteController.groovy i dopisujemy dwie linijki kodu:&lt;br /&gt;
&lt;pre class=&quot;brush:groovy&quot;&gt;def ShakesService //umieszczamy swobodnie(nie w metodzie ani domknięciu) w dowolnym 
                  //miejscu, ta linijka pozwoli na dynamiczne stworzenie instancji
                  //usługi ShakesService

def save = {
        ShakesService.findQuote(params); //drugą linijkę wklejamy w domknięciu
        ...                              //odpowiadającym za zapis naszych danych
        ...
}&amp;nbsp;&lt;/pre&gt;Tak naprawdę w tym momencie mamy już gotowy, działający projekt, możemy przetestować jego działanie. Jednak chcę upiększyć nieznacznie stronę główną, w której domyślnie wyświetlane jest menu zawierające status aplikacji, zainstalowane pluginy i tekst powitalny, a żadne z tych rzeczy na tą chwilę nam nie są potrzebne.&lt;br /&gt;
&lt;br /&gt;
Zmiany w pliku index.gsp, który znajduje się w katalogu &lt;b&gt;\Views and Layouts\&lt;/b&gt; zamieszczam w tym miejscu &lt;a href=&quot;http://www.4shared.com/file/P5fV-CKk/index.html&quot;&gt;LINK&lt;/a&gt;. Myślę, że nie trzeba tłumaczyć, w których miejscach kod został zmieniony, można nadmienić cały kod, albo porównać wygenerowaną domyślną stronę z tą zmodyfikowaną. Zamieszczam dwa zrzuty ekranu prezentujące zmiany.&lt;br /&gt;
&lt;br /&gt;
Przed:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfldQja1qSTJreskoBxisFkh1TAYsWUVxoOo6fqhxPITj3tYlMdssF4Ng42LMPpoEVLYeJhMgCtZ1qSP1ABD7UdZYWZxxhxtFMJrEbWca8GubkeZvQUa9l4d-BKg98Etqgem4uFaq65UE/s1600/scr6crop.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;228&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfldQja1qSTJreskoBxisFkh1TAYsWUVxoOo6fqhxPITj3tYlMdssF4Ng42LMPpoEVLYeJhMgCtZ1qSP1ABD7UdZYWZxxhxtFMJrEbWca8GubkeZvQUa9l4d-BKg98Etqgem4uFaq65UE/s400/scr6crop.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Po:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHm0Fe-1VxZ0sKnGgX2bMjSu_jFqXNK4IbjDjUcaNkjDgnFwu9WCP7Bp-KNCJ30a9mdUnbyHf-7868HvTWB6gbH7KfM_98Lm5xaWD0J4if1GFHz3RvwgfCNCXNSLZzU6_GXaGRz7f49S0/s1600/scr1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;318&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHm0Fe-1VxZ0sKnGgX2bMjSu_jFqXNK4IbjDjUcaNkjDgnFwu9WCP7Bp-KNCJ30a9mdUnbyHf-7868HvTWB6gbH7KfM_98Lm5xaWD0J4if1GFHz3RvwgfCNCXNSLZzU6_GXaGRz7f49S0/s400/scr1.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Kolejna modyfikacja, tym razem w &lt;b&gt;\Views and Layouts\shakesQuote\&lt;/b&gt;, czyli w katalogu, w którym znajdują się wygenerowane wcześniej widoki dla naszej klasy dziedzinowej &lt;b&gt;ShakesQuote&lt;/b&gt;. Otwieramy plik &lt;b&gt;Create.gsp&lt;/b&gt;. Kod zmieniamy tak, aby widok wyświetlał nam tylko pole tekstowe Phrase, ponieważ na wstępie podajemy część cytatu, po którym chcemy szukać, a pozostałe parametry(&lt;b&gt;play, speaker, words&lt;/b&gt;) pobierane są z usługi sieciowej WSShakespeare. Pozbywamy się więc trzech wierszy(&lt;b&gt;&amp;lt;tr&amp;gt;&lt;/b&gt;) tabeli odpowiadających za trzy niepotrzebne parametry.&lt;br /&gt;
&lt;br /&gt;
Przed:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1MzBQQ3S8EzYqzZ4LBQP7v8Q5zhG0GpsKtyHWkBviIyyHQLGasJxoR50EEDXuAmNbKuf5GEeTAGx4Kn5BNnlwCEWpo7aw1jmgCk5XUNXUXQ4bKodssLONp-tG_4IIGeeFtPT5_fVnFNI/s1600/scr7crop.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;348&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1MzBQQ3S8EzYqzZ4LBQP7v8Q5zhG0GpsKtyHWkBviIyyHQLGasJxoR50EEDXuAmNbKuf5GEeTAGx4Kn5BNnlwCEWpo7aw1jmgCk5XUNXUXQ4bKodssLONp-tG_4IIGeeFtPT5_fVnFNI/s400/scr7crop.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Po:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTp_ZJYXPBUK6tnPQGAOIjSqnAor1ng35a4TcFIR4kjfb5oxDwUSMkhJgoKoQtEnuw47kYkJiscExApPNz-nyyyMtojB1BHwlzjnOO4S9PGwXiWjuSrt-cGPVd2x-5EHM9SE79K9Ixl6I/s1600/scr2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTp_ZJYXPBUK6tnPQGAOIjSqnAor1ng35a4TcFIR4kjfb5oxDwUSMkhJgoKoQtEnuw47kYkJiscExApPNz-nyyyMtojB1BHwlzjnOO4S9PGwXiWjuSrt-cGPVd2x-5EHM9SE79K9Ixl6I/s320/scr2.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;3. Podsumowanie i efekt końcowy&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHLt45O6ny3GChG7zfY8wdWvLrBBKcQvRxXzyBjXU08CCXSdTRUxCG-PqX74-nfw2hyphenhyphenevdtdJ6uaMss0aKNtbc2AO3APUEExochjJ-UcVB7UkKBC8sv6spKWI9KDfMjfOtYPL_MPjT31I/s1600/scr3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHLt45O6ny3GChG7zfY8wdWvLrBBKcQvRxXzyBjXU08CCXSdTRUxCG-PqX74-nfw2hyphenhyphenevdtdJ6uaMss0aKNtbc2AO3APUEExochjJ-UcVB7UkKBC8sv6spKWI9KDfMjfOtYPL_MPjT31I/s400/scr3.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLAYe5gzuXp1BLCNt6297sv7fji87y31sK8UduNNNMntcEnVM-jKZufZFd6M_gJ6GxzL80_R4VKNuJJZ_N6K0vxvf8gmP8KJdHxtmCMQApqtqVIXvf2CGwhoa4TVn9c9MyBHjZvRUlz0w/s1600/scr4crop.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLAYe5gzuXp1BLCNt6297sv7fji87y31sK8UduNNNMntcEnVM-jKZufZFd6M_gJ6GxzL80_R4VKNuJJZ_N6K0vxvf8gmP8KJdHxtmCMQApqtqVIXvf2CGwhoa4TVn9c9MyBHjZvRUlz0w/s400/scr4crop.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Klient usługi sieciowej gotowy, dzięki Grailsowi bez jakiegokolwiek wysiłku mamy dostęp do funkcjonalności CRUD(create-read-update-delete) oraz możliwość zapisania wyszukanych informacji w bazie danych. Myślę, że przykład pokazał możliwości jakie daje Grails, podobnie postępując możemy stworzyć interfejs użytkownika dla dowolnej usługi sieciowej. Zainteresowanych dalszą adaptacją usług sieciowych w Grails, odsyłam do serii dwóch artykułów &lt;a href=&quot;http://www.ibm.com/developerworks/java/library/j-grails01158/index.html&quot;&gt;LINK1&lt;/a&gt;, &lt;a href=&quot;http://www.ibm.com/developerworks/java/library/j-grails05208/index.html&quot;&gt;LINK2&lt;/a&gt;, których końcowym efektem jest aplikacja planująca podróż, zaznaczająca na mapie poszukiwane lotniska.</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/9001793917661996495/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/07/grails-jako-klient-usugi-sieciowej.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/9001793917661996495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/9001793917661996495'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/07/grails-jako-klient-usugi-sieciowej.html' title='Grails jako klient usługi sieciowej'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfldQja1qSTJreskoBxisFkh1TAYsWUVxoOo6fqhxPITj3tYlMdssF4Ng42LMPpoEVLYeJhMgCtZ1qSP1ABD7UdZYWZxxhxtFMJrEbWca8GubkeZvQUa9l4d-BKg98Etqgem4uFaq65UE/s72-c/scr6crop.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-5274413125296920399</id><published>2010-06-17T20:58:00.000-07:00</published><updated>2010-06-19T04:17:01.427-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ibm"/><category scheme="http://www.blogger.com/atom/ns#" term="praktyka"/><category scheme="http://www.blogger.com/atom/ns#" term="prezentacja"/><title type='text'>Zakończenie praktyk IBM</title><content type='html'>Praktyka IBM dobiegła końca wraz z oddaniem sprzętu i prezentacją końcową w głównej siedzibie IBM Polska w Warszawie w dniu 11.06.2010r. Ogólne wrażenia po odbytych praktykach - pozytywne, mimo, że były dla mnie dużym wyzwaniem, w szczególności praca z ludźmi, którzy są o kilka lat świetlnych przede mną jeżeli chodzi o wiedzę, umiejętności i doświadczenie w branży IT. Z rezultatów swojej pracy(mimo, że poświęciłem temu projektowi większość wolnego czasu) nie jestem do końca zadowolony, ale zawsze jest tak, że może być lepiej, więc postaram się tym nie przejmować.&lt;br /&gt;
&lt;br /&gt;
Udało mi się poznać środowisko Grails i jego olbrzymie możliwości(z tego jestem najbardziej zadowolony), w szczególności te ułatwiające budowanie interfejsu użytkownika. Uruchomiłem także aplikację z Grails na WebSphere Process Server z połączeniem z DB2, co pokazało, że można tą platformę z powodzeniem odpalić na serwerze IBM. Jednak nie starczyło czasu i wiedzy na to, aby pokazać, że możliwa jest integracja tego środowiska z usługami sieciowymi stworzonymi w WebSphere Integration Developer i bardziej skomplikowanymi procesami biznesowymi. Co nie zmienia faktu, że Grails z powodzeniem można używać do aplikacji zorientowanych na usługi, bardzo szybko można stworzyć interfejs użytkownika(np. dzięki wykorzystaniu mechanizmu rusztowania - ang. Scaffolding) dla usługi sieciowej. W następnej notce w końcu zamieszczę zaległy przykład takiego rozwiązania.&lt;br /&gt;
&lt;br /&gt;
Dwa najważniejsze slajdy w mojej prezentacji:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo4iaAJah4XxAq8tT_ULW_PdEYfhUFA_3VpFIVtn5qqt5yRiP4LvKf17HlgnJ4-f2rdSTbROoD_iQahZVi6tiiDwuXeJ_hYj0uA7dGcIKO5_zgaJhZyMxvZYEBRD3NvZYmchpwpq-6ffY/s1600/scr1.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo4iaAJah4XxAq8tT_ULW_PdEYfhUFA_3VpFIVtn5qqt5yRiP4LvKf17HlgnJ4-f2rdSTbROoD_iQahZVi6tiiDwuXeJ_hYj0uA7dGcIKO5_zgaJhZyMxvZYEBRD3NvZYmchpwpq-6ffY/s320/scr1.bmp&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikgfGOYCEPnVYBbFpGEsLVJ9KoTA3BiSEL3GSR8Wpc4m4MxqjadONx1DMU8L-DEvASu-zY-sY-51L0hhYPgMgnsZOXgyRl78TLwgdSdjfZ1DBdn_32fKyaWUPs4R00U32n9S1u79QZU-A/s1600/scr2.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikgfGOYCEPnVYBbFpGEsLVJ9KoTA3BiSEL3GSR8Wpc4m4MxqjadONx1DMU8L-DEvASu-zY-sY-51L0hhYPgMgnsZOXgyRl78TLwgdSdjfZ1DBdn_32fKyaWUPs4R00U32n9S1u79QZU-A/s320/scr2.bmp&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Same wystąpienie na prezentacji końcowej poszło kiepsko. Stress wziął nade mną górę i na pewno próba stworzenia zbyt technicznej prezentacji w tym wszystkim nie pomogła. Przygotowałem za dużo informacji jak na swoje możliwości oratorskie - co mnie zgubiło.&lt;br /&gt;
&lt;br /&gt;
Także podsumowując, oprócz moich wystąpień na prezentacjach, z praktyk jestem zadowolony. Dzięki nim mogłem się zmobilizować i wziąć udział w ciekawym projekcie, trochę poznać jak wygląda praca w wielkiej międzynarodowej korporacji i współpraca z fachowcami w swej dziedzinie.</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/5274413125296920399/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/06/zakonczenie-praktyk-ibm.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/5274413125296920399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/5274413125296920399'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/06/zakonczenie-praktyk-ibm.html' title='Zakończenie praktyk IBM'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo4iaAJah4XxAq8tT_ULW_PdEYfhUFA_3VpFIVtn5qqt5yRiP4LvKf17HlgnJ4-f2rdSTbROoD_iQahZVi6tiiDwuXeJ_hYj0uA7dGcIKO5_zgaJhZyMxvZYEBRD3NvZYmchpwpq-6ffY/s72-c/scr1.bmp" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-3169949006874292870</id><published>2010-05-12T13:08:00.000-07:00</published><updated>2010-05-12T06:24:55.927-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HelloWorld"/><category scheme="http://www.blogger.com/atom/ns#" term="przykład"/><category scheme="http://www.blogger.com/atom/ns#" term="wid"/><title type='text'>Początki pracy z WebSphere Integration Developer</title><content type='html'>Wygląda na to, że wraz z rozwiązaniem kłopotu z uruchomieniem &lt;b&gt;WPS&lt;/b&gt; pod &lt;b&gt;WID&#39;em&lt;/b&gt; w końcu mam gotowe środowisko do pracy. Dlatego teraz można przejść do konkretnych rzeczy nie martwiąc się o to, że coś nie działa, że czegoś nie da się uruchomić, że gdzieś tam wyskakuje jakiś błąd. Dalej będzie już na pewno mniej problemów z samym oprogramowaniem i linuksem.&lt;br /&gt;
&lt;br /&gt;
W tym miejscu chciałbym wspomnieć o tym, że bardzo cenię sobie materiały edukacyjne stworzone przez ekspertów z IBM, mam już trochę z nimi do czynienia nie tylko przy pracy nad tym projektem, muszę przyznać, że potrafią nawet takiego laika jak ja wprowadzić w nowe technologie, rozwiązania, czy też ułatwić pracę z nowo poznawanym oprogramowaniem. Technicznego wsparcia jest czasami nawet za dużo, ciężko jest nieraz przebić się przez taką ilość informacji i znaleźć to co nas w danym momencie interesuje. Ale za to, to czy znajdziemy odpowiedź jest zazwyczaj tylko kwestią czasu.&lt;br /&gt;
&lt;br /&gt;
Po uruchomieniu programu od razu możemy przejść do poznawania procesów biznesowych i usług sieciowych. Zaczynamy od zbudowania aplikacji &lt;b&gt;HelloWorld&lt;/b&gt;(&lt;i&gt;&quot;Hello World Part 1: Getting Started&quot;&lt;/i&gt;), która wywołuje usługę sieciową. Możemy także pójść na skróty i zaimportować już wykonany projekt, ale nie to mnie w tym momencie interesuje. Dlatego&amp;nbsp;wybieram opcje, w której krok po kroku konstruuję przykład(&lt;b&gt;Getting Started&amp;gt;Samples and Tutorials&amp;gt;View Instructions&lt;/b&gt;).&lt;br /&gt;
&lt;br /&gt;
Wraz z pierwszym przykładem uczymy się podstaw takich jak tworzenie, wdrażanie i uruchamianie mediacyjnych(ang. mediated, tylko jak to z sensem przetłumaczyć na polski?) zawołań do wcześniej stworzonej usługi sieciowej. W zasadzie nie stworzonej, tylko zaimportowanej gotowej usługi:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;public String getHello(String name){&lt;/div&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; return &quot;Hello &quot; + name;&lt;/div&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;}&lt;/div&gt;&lt;/blockquote&gt;Jedyne co oprócz tego musimy wiedzieć o samej usłudze, jest to, że jest dla niej plik &lt;b&gt;WSDL&lt;/b&gt; definiujący nie tylko interfejs, ale także sposób jej wywołania wykorzystujący &lt;b&gt;SOAP&lt;/b&gt;. &lt;br /&gt;
&lt;br /&gt;
Wykonując kolejne kroki docieramy do stanu, gdzie mamy 3 projekty: &lt;b&gt;HelloService&lt;/b&gt;(implementacja usługi sieciowej), &lt;b&gt;HelloWorldLibrary&lt;/b&gt;(projekt do współdzielenia zasobów takich jak interfejsy usług sieciowych, obiekty biznesowe, przyda się w kolejnym przykładzie) i &lt;b&gt;HelloWorldMediation&lt;/b&gt;. Ten ostatni jest projektem zawierającym logikę integrującą usługi, w tym przykładzie stwarza dostęp do usługi webowej &lt;b&gt;HelloService&lt;/b&gt; przekazując ją interfejsowi udostępniającemu tą usługę - &lt;b&gt;HelloWorld&lt;/b&gt;.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlqOeI6SGacW9VXSG1zEWgH93agMDjJoWQoExHh5YwkJ1otQc-qfv5BMV5CeGEwuKg7JDHw7p_ia0eELT0YVbjWM7Vfv8V676QnEh3X3OPkG73M9S9d1aAic5O3xPRX6spH0-XnT6j4yw/s1600/scr8GOtoSAMPLESandTUTORIALS.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlqOeI6SGacW9VXSG1zEWgH93agMDjJoWQoExHh5YwkJ1otQc-qfv5BMV5CeGEwuKg7JDHw7p_ia0eELT0YVbjWM7Vfv8V676QnEh3X3OPkG73M9S9d1aAic5O3xPRX6spH0-XnT6j4yw/s320/scr8GOtoSAMPLESandTUTORIALS.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Przykład uruchomić można bezpośrednio w &lt;b&gt;WID&lt;/b&gt;, używając &lt;b&gt;Integration Test Client&lt;/b&gt;, podajemy wartości dla każdego z wcześniej stworzonych pól w obiekcie biznesowym i otrzymujemy odpowiedz.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFf4hjKQomOFIAevJaF66TLk__q8CMtaVpmx96hszRARlo7J8bkNEMjw7vAaa3faOPWXbbVgw2uKAeNCo0BkY6zg2hbRfnpxAEyyyp2Dz8DJ5jNvzQyiOyIxqGBecpr0UknrwL1g4OSyg/s1600/SCR14invokeHELLOworldEXPORTpart1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFf4hjKQomOFIAevJaF66TLk__q8CMtaVpmx96hszRARlo7J8bkNEMjw7vAaa3faOPWXbbVgw2uKAeNCo0BkY6zg2hbRfnpxAEyyyp2Dz8DJ5jNvzQyiOyIxqGBecpr0UknrwL1g4OSyg/s320/SCR14invokeHELLOworldEXPORTpart1.png&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgceqL5KyJnwe2XLui0PGnEAfBvgPcq1JC4H0srokqzTUJfCDib69n1gbkxKNe09DoOsWZznq13ldsJESVCTXvWpHS8EyUALfmIiJxwSRed64yIC6ScTw_sB63B7iHk0MNW2AaJ2YFM6SI/s1600/SCR15resultOFinvokingHELLOworldEXPORTpart2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgceqL5KyJnwe2XLui0PGnEAfBvgPcq1JC4H0srokqzTUJfCDib69n1gbkxKNe09DoOsWZznq13ldsJESVCTXvWpHS8EyUALfmIiJxwSRed64yIC6ScTw_sB63B7iHk0MNW2AaJ2YFM6SI/s320/SCR15resultOFinvokingHELLOworldEXPORTpart2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Kolejnym stworzonym już dawno przykładem(ale dopiero parę dni temu udało mi się go uruchomić) będzie wykorzystanie powyższej usługi sieciowej do stworzenia prostej interakcji z użytkownikiem, który będzie miał za zadanie podać imię i nazwisko. Półki co interfejs użytkownika będzie zapewniony przez &lt;b&gt;Business Process Choreographer(BPC) Explorer&lt;/b&gt;, narzędzie to jest wbudowane w &lt;b&gt;WebSphere Process Server&lt;/b&gt;, służy do testowania procesów biznesowych i zadań użytkownika. Teraz, moim zadaniem jest stworzenie podobnego interfejsu, tyle, że w &lt;i&gt;&lt;b&gt;Grails&lt;/b&gt;&lt;/i&gt;. Jeżeli chodzi o wpisy, chcę jeszcze jeden zaległy przykład pokazać, który będzie zahaczał o tematykę zadań użytkownika.&lt;br /&gt;
&lt;o:p&gt;&lt;/o:p&gt;</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/3169949006874292870/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/05/poczatki-pracy-z-websphere-integration.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/3169949006874292870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/3169949006874292870'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/05/poczatki-pracy-z-websphere-integration.html' title='Początki pracy z WebSphere Integration Developer'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlqOeI6SGacW9VXSG1zEWgH93agMDjJoWQoExHh5YwkJ1otQc-qfv5BMV5CeGEwuKg7JDHw7p_ia0eELT0YVbjWM7Vfv8V676QnEh3X3OPkG73M9S9d1aAic5O3xPRX6spH0-XnT6j4yw/s72-c/scr8GOtoSAMPLESandTUTORIALS.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-138884424946197615</id><published>2010-04-27T15:22:00.000-07:00</published><updated>2010-05-15T01:33:59.375-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="serwer"/><category scheme="http://www.blogger.com/atom/ns#" term="uruchomienie"/><category scheme="http://www.blogger.com/atom/ns#" term="wid"/><category scheme="http://www.blogger.com/atom/ns#" term="wps"/><title type='text'>Tworzenie pierwszego przykładu procesu biznesowego typu Human Task na WID, problem z uruchomieniem WPS na WID.</title><content type='html'>Sama instalacja &lt;i&gt;WID&#39;a&lt;/i&gt; przebiegła bez większych trudności, tu wymagane było tylko uruchomienie instalatora z poziomu root&#39;a, po instalacji zastosowałem komendę &lt;b&gt;chown -R rafal&lt;/b&gt; na całym katalogu z &lt;i&gt;WID&#39;em&lt;/i&gt;. Jako, że wcześniej instalowałem &lt;i&gt;WAS/WPS&lt;/i&gt; na tym systemie pominąłem instalację &lt;i&gt;WAS&#39;a&lt;/i&gt; , miałem nadzieję, że z dodaniem wcześniej zainstalowanego serwera do &lt;i&gt;WID&#39;a&lt;/i&gt; nie będzie problemu i z samym dodaniem faktycznie nie było, ale z uruchomieniem już tak. Na początku myślałem, że to wina limitu na czas uruchomienia &lt;i&gt;WPS&#39;a&lt;/i&gt;, standardowo w programie ustawiony na 10 minut (a wiedziałem, że przynajmniej w tej konfiguracji sprzętowej potrafił się dłużej uruchamiać), zwiększyłem więc limit do 20, ale nie pomogło. Wszystko wskazuje na to, że serwer się uruchamia, tylko w programie po upłynięciu określonego czasu wyskakuje błąd:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUQoqJykpUucwhvUTMJdX2Vt3lBGQy3mnQcuI6gxTjuyaxZPfFaOuYqgNWgJqXhX5I5XObkmc3FJri0z4ypTV9Xf6C7qlYVVYjye3kUbZ4x5VJ6flnOLmTn8OLdjs-7ZhNDxmx4R0H_pM/s1600/scr4serwerWPSnaWIDnieWystartowal.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUQoqJykpUucwhvUTMJdX2Vt3lBGQy3mnQcuI6gxTjuyaxZPfFaOuYqgNWgJqXhX5I5XObkmc3FJri0z4ypTV9Xf6C7qlYVVYjye3kUbZ4x5VJ6flnOLmTn8OLdjs-7ZhNDxmx4R0H_pM/s320/scr4serwerWPSnaWIDnieWystartowal.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Czyli jak na razie chyba nie ma szansy żeby &lt;i&gt;WID&lt;/i&gt; pomógł wdrożyć stworzony proces biznesowy na &lt;i&gt;WPS&lt;/i&gt;, zamieszczam &lt;a href=&quot;http://www.speedyshare.com/files/22151033/download/SystemOut.log&quot;&gt;&lt;b&gt;&lt;b&gt;LOGI&lt;/b&gt;&lt;/b&gt;&lt;/a&gt;, w których półki co nie doszukałem się żadnej odpowiedzi(może dlatego, że serwer startuje bez błędu?), poświęcam teraz więcej czasu na naukę usług sieciowych i procesów biznesowych z zadaniem użytkownika (ang. Human Task). Gdy uda mi się przebrnąć przez stworzenie przykładu i uruchomienie go na &lt;i&gt;WPS&#39;ie &lt;/i&gt;zamieszczę tu wyniki.&lt;br /&gt;
&lt;br /&gt;
//EDIT 12-05-2010 13:30&lt;br /&gt;
&lt;br /&gt;
Miałem zamiar wcześniej uporać się z problemem wdrożenia na &lt;i&gt;WPS&lt;/i&gt; przykładów stworzonych w &lt;i&gt;WID&lt;/i&gt;. Wtedy po dwóch - trzech dniach dopisałbym efekty i uruchomienie pierwszego przykładu, ale niestety nie udało mi się tak szybko znaleźć rozwiązania, więc przykład zamieszczam w nowej notce.&lt;br /&gt;
&lt;br /&gt;
Co do samego problemu, rozwiązany był już jakiś czas temu, okazało się, że konieczne jest zainstalowanie &lt;i&gt;WebSphere Integration Developer V7.0.0 Fix Pack 2 for Linux&lt;/i&gt;, który wraz z intrukcją znajduje sie w &lt;a href=&quot;http://www-01.ibm.com/support/docview.wss?uid=swg24026557&quot;&gt;LINK&lt;/a&gt;. Menadżera instalacji &lt;i&gt;WID&lt;/i&gt; trzeba było uruchomić z uprawnieniami &lt;b&gt;root&lt;/b&gt;. Ważne jest także aby po uaktualnieniu oprogramowania ponownie nadać prawa użytkownikowi(&lt;b&gt;chown -R user&lt;/b&gt;) żeby wszystko działało poprawnie. Można także dodatkowo aktualizować &lt;i&gt;WPS&lt;/i&gt;, wystarczy odpalić menadżera instalacji dla tego programu i kliknąć aktualizuj, wszystko odbywa się automatycznie. &lt;br /&gt;
&lt;br /&gt;
Jednak to nie był koniec moich zmagań z uruchomieniem przykładów. Przy wywoływaniu pierwszego przykładu otrzymałem błąd:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9c1GPw_QUsaL6MkZfdgh-5yyEkSMGzhJjr0NxYM_xBL519THPqJ7D-i7tzWH8Bvme1U4mrX8VRZRwFwhyR94VuKkp7KRaGrawoGkfNA5njhQhdznZoc6Z-FewAQvHiNdIfP7WxMXrrgc/s1600/SCR11errorSERVERnotRUNNINGinDEVELOPMENTmode.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9c1GPw_QUsaL6MkZfdgh-5yyEkSMGzhJjr0NxYM_xBL519THPqJ7D-i7tzWH8Bvme1U4mrX8VRZRwFwhyR94VuKkp7KRaGrawoGkfNA5njhQhdznZoc6Z-FewAQvHiNdIfP7WxMXrrgc/s320/SCR11errorSERVERnotRUNNINGinDEVELOPMENTmode.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&quot;The server is not running in Development mode&quot; - z tym nie miałem większego problemu, przypomniało mi się, że kiedy wcześniej przeglądałem konsolę administratora napotkałem na opcję, której włączenie mogło pomóc. Zaznaczamy wariant znajdujący się w &lt;b&gt;Servers&amp;gt;Server Types&amp;gt;WebSphere Application Server&amp;gt;server1&amp;gt;Configuration&lt;/b&gt;.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgghknHotS-XBl7k8HJym4LCRa11g_9tTMx5wO5rAZdA7THalZjqieYcZReswQM7_i1RJw3IoorFkCe8ClJpBmBpwE1SYtgQnAHyAQD0lUtTCwQQuzMLMHCLkaUn2_HjikxAqiOxNiMM2I/s1600/SCR30runINdevelopment+mode.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;256&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgghknHotS-XBl7k8HJym4LCRa11g_9tTMx5wO5rAZdA7THalZjqieYcZReswQM7_i1RJw3IoorFkCe8ClJpBmBpwE1SYtgQnAHyAQD0lUtTCwQQuzMLMHCLkaUn2_HjikxAqiOxNiMM2I/s320/SCR30runINdevelopment+mode.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Po zrestartowaniu serwera przykład powinien uruchamiać się bez błędu. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/138884424946197615/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/04/tworzenie-pierwszego-przykadu-procesu.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/138884424946197615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/138884424946197615'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/04/tworzenie-pierwszego-przykadu-procesu.html' title='Tworzenie pierwszego przykładu procesu biznesowego typu Human Task na WID, problem z uruchomieniem WPS na WID.'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUQoqJykpUucwhvUTMJdX2Vt3lBGQy3mnQcuI6gxTjuyaxZPfFaOuYqgNWgJqXhX5I5XObkmc3FJri0z4ypTV9Xf6C7qlYVVYjye3kUbZ4x5VJ6flnOLmTn8OLdjs-7ZhNDxmx4R0H_pM/s72-c/scr4serwerWPSnaWIDnieWystartowal.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-3616344340542052478</id><published>2010-04-22T20:22:00.000-07:00</published><updated>2010-06-04T04:30:25.128-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="db2"/><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="instalacja"/><category scheme="http://www.blogger.com/atom/ns#" term="JDK"/><category scheme="http://www.blogger.com/atom/ns#" term="RedHat Enterprise Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="war"/><category scheme="http://www.blogger.com/atom/ns#" term="wdrożenie"/><category scheme="http://www.blogger.com/atom/ns#" term="wps"/><title type='text'>Instalacja DB2 na RedHat Enterprise Linux i uruchomienie aplikacji Grails na WPS</title><content type='html'>Nadszedł czas na napisanie kolejnej notki, co prawda, to co będę tu opisywał udało mi się wykonać z powodzeniem już jakiś czas temu(ostatni krok, czyli wdrożenie war&#39;a na &lt;i&gt;WPS&lt;/i&gt; z &lt;i&gt;DB2&lt;/i&gt; jakoś w poniedziałek), ale coś ostatnio nie mogłem zebrać myśli i podsumować zakończone zadanie na moim blogu.&lt;br /&gt;
&lt;br /&gt;
Zabieramy się do roboty, w tym miejscu Drogi Czytelniku zakładam, że masz zainstalowany serwer &lt;i&gt;WPS&lt;/i&gt; i stworzony odpowiedni profil(jeżeli nie odsyłam do poprzedniego wpisu &lt;a href=&quot;http://rwisniecki.blogspot.com/2010/04/instalacja-was-i-wps-na-red-hat.html&quot;&gt;LINK&lt;/a&gt;). Na początek potrzebujemy zainstalować &lt;i&gt;JDK&lt;/i&gt; i &lt;i&gt;Grails&lt;/i&gt;, żeby stworzyć war&#39;a, którego potem będziemy wdrażać na &lt;i&gt;WPS&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;Instalacja JDK, Grails i wyeksportowanie war&#39;a&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Pobieramy &lt;i&gt;JDK&lt;/i&gt; na &lt;i&gt;Linuxa&lt;/i&gt; - &lt;a href=&quot;http://java.sun.com/javase/downloads/widget/jdk6.jsp&quot;&gt;LINK&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
Pobieramy najnowszą(v 1.1.2) dostępną pod &lt;i&gt;Linux&#39;a&lt;/i&gt; wersję &lt;i&gt;Grails&lt;/i&gt; - &lt;a href=&quot;http://www.grails.org/download/archive/Grails&quot;&gt;LINK&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Instalujemy &lt;i&gt;JDK&lt;/i&gt;, myślę, że będzie lepiej jak nie będę tutaj opisywał krok po kroku co należy robić, znalazłem świetny materiał znajdujący się na &lt;i&gt;Polskim Forum Linuksa&lt;/i&gt; - &lt;a href=&quot;http://linuksowo.pl/index.php?t=tree&amp;amp;th=39&amp;amp;S=3e378b47b253462ca50e5a1c2d05c870&quot;&gt;LINK&lt;/a&gt;, który wyczerpuje ten temat. Wystarczy znaleźć interesujący nas podpunkt(ja wybrałem instalację &lt;i&gt;JDK&lt;/i&gt; ze źródeł z prawami administratora) i robić kolejno co jest tam napisane. Zwracamy szczególną uwagę przy dodawaniu zmiennych środowiskowych, ponieważ później przyda nam się ta wiedza przy dodawaniu zmiennych &lt;i&gt;Grails&#39;a&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Instalując &lt;i&gt;Grails&#39;a&lt;/i&gt; nie używamy komendy&amp;nbsp;&lt;b&gt;chmod a+x&lt;/b&gt;, ponieważ tak jak w przypadku &lt;i&gt;WPS&lt;/i&gt; chcemy, aby uprawnienia do wykonywania operacji na nim przypadły użytkownikowi. Dlatego też, rozpakowujemy nasze pliki w katalogu domowym wcześniej stworzonego użytkownika(u mnie &lt;b&gt;/home/rafal&lt;/b&gt;). Po dodaniu zmiennych środowiskowych tym razem wskazujących na katalog z &lt;i&gt;Grails&#39;em &lt;/i&gt;możemy zrestartować system żeby zmiany były widoczne.&lt;br /&gt;
&lt;br /&gt;
Dalej przygotujemy sobie plik war, pozostawiam tu Wam pewną dowolność, ponieważ sama aplikacja nie jest tutaj istotna, może to być najprostszy kod typu &lt;b&gt;HelloWorld&lt;/b&gt;, co nam teraz jest potrzebne, to wyeksportować plik war komendą:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;$ grails war NaszaAplikacja.war&lt;/div&gt;&lt;/blockquote&gt;Wygenerowana w konsoli odpowiedź naprowadzi nas na folder, w którym znajduje się stworzony plik. Jeżeli ktoś chce użyć przykładu stworzonego przeze mnie odsyłam do wcześniejszej notki - &lt;a href=&quot;http://rwisniecki.blogspot.com/2010_03_01_archive.html&quot;&gt;LINK&lt;/a&gt;(był on pisany na &lt;i&gt;Windows&#39;ie&lt;/i&gt;, ale na &lt;i&gt;Linux&#39;ie&lt;/i&gt; wszystko robimy analogicznie).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Instalacja DB2&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Pobieramy &lt;i&gt;DB2&lt;/i&gt; - &lt;a href=&quot;http://www-01.ibm.com/software/data/db2/express/download.html&quot;&gt;LINK&lt;/a&gt;&lt;b&gt;, &lt;/b&gt;rozpakowujemy w dowolnym miejscu w katalogu domowym użytkownika(instalacja &lt;i&gt;DB2&lt;/i&gt; jako non-root i tak domyślnie wrzuci nam pliki do &lt;b&gt;/home/nazwaUzytkownika/sqllib&lt;/b&gt;). Po zainstalowaniu otwieramy okno &lt;i&gt;First Steps&lt;/i&gt; w celu stworzenia &lt;i&gt;SAMPLE database&lt;/i&gt;. Wybieramy lokacje bazy danych, przeglądając później ten katalog widzimy, że stworzyliśmy węzeł(ang. &lt;i&gt;node&lt;/i&gt;) o domyślnym indeksie 0000 oraz z ID użytkownika, dla którego instalowaliśmy &lt;i&gt;DB2&lt;/i&gt;.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAH0td9RX7RarD5IatWTitSWm4jp6aMat9sDEWP2S-oOd8ji5fTKv4UQ9W_nDWIPhdZ2aqmB4NlU5lpDCf6mH8xMbTwvQLzJbsxaPB-VRKSrAMbV1xF76GL0RfAqc_E-arNQ8Jt-Edxwk/s1600/screen2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAH0td9RX7RarD5IatWTitSWm4jp6aMat9sDEWP2S-oOd8ji5fTKv4UQ9W_nDWIPhdZ2aqmB4NlU5lpDCf6mH8xMbTwvQLzJbsxaPB-VRKSrAMbV1xF76GL0RfAqc_E-arNQ8Jt-Edxwk/s320/screen2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Otwieramy &lt;i&gt;Applications&amp;gt;IBM DB2&amp;gt;Command Line Processor&lt;/i&gt;, uruchamiamy usługę DB2 komendą:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;db2 =&amp;gt; db2start&lt;/div&gt;&lt;/blockquote&gt;Tworzymy bazę danych, jeżeli stworzyliśmy aplikację Biblioteka, to tak jak podane jest w wcześniejszym wpisie tworzymy bazę danych i łączymy się z nią.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Tworzenie połączenia JDBC i wdrożenie war&#39;a na WPS&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Uruchamiamy serwer &lt;i&gt;WPS&lt;/i&gt;, klikamy i rozwijamy pierwszą opcję czyli &lt;i&gt;Guided Activities&amp;gt;Connecting to a database&lt;/i&gt;, tam mamy kolejno opcje do konfiguracji połączenia z bazą danych, na ten moment możemy ominąć pierwszy krok czyli &lt;i&gt;Configure credentials for secure database access&lt;/i&gt;. Przechodzimy zatem do &lt;i&gt;Configure a JDBC provider =&amp;gt; Click to perform&lt;/i&gt;. Po prawej w oknie gdzie figurują dostępni dostawcy JDBC klikamy &lt;b&gt;New&lt;/b&gt;.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj1fqnyGw4l8GgiUJXu6ProJRZIvCzuhfhqsp6bUiprpx0JsEH5b4Hja41N1hoYayD2DyFRcIoape3YGLV-9OsYeMay_8c_zTlY40y70-OD-F6Vx6d8rHzxyiBHYS5eWt4GatuiEQ32Us/s1600/screen3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj1fqnyGw4l8GgiUJXu6ProJRZIvCzuhfhqsp6bUiprpx0JsEH5b4Hja41N1hoYayD2DyFRcIoape3YGLV-9OsYeMay_8c_zTlY40y70-OD-F6Vx6d8rHzxyiBHYS5eWt4GatuiEQ32Us/s320/screen3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Wybieramy kolejno:&lt;br /&gt;
&lt;br /&gt;
Step 1: Create a new JDBC Provider:&lt;br /&gt;
*Database type: DB2&lt;br /&gt;
*Provider type: DB2 Using IBM JCC Driver&lt;br /&gt;
*Implementation type: Connection pool data source&lt;br /&gt;
&lt;br /&gt;
Step 2: Enter database class path information&lt;br /&gt;
${DB2_JCC_DRIVER_PATH}&lt;br /&gt;
/home/nazwaUzytkownika/sqllib/java&lt;br /&gt;
&lt;br /&gt;
Pole &lt;b&gt;Native library path&lt;/b&gt;(wiąże się to ze zmiennymi dla WebSphere&#39;a, patrz niżej) możemy zostawić puste i korzystamy z tego przywileju. Pomijamy także następny krok czyli &lt;b&gt;Configure WebSphere variables&lt;/b&gt;, ponieważ żadna taka zmienna nie jest nam potrzebna do połączenia z bazą. Klikamy &lt;b&gt;Next&lt;/b&gt; i dalej na podsumowaniu &lt;b&gt;Finish&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Teraz konfiguracja Datasource, wybieramy wcześniej utworzonego dostawcę JDBC i po prawej w rubryce &lt;b&gt;Additional Properties&lt;/b&gt; klikamy &lt;b&gt;Datasources.&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4RibcDuMQ3lGUWup0x-EbCLc09O4yT6HrEkHVdphZ7MCabSuXV1i2N1d_of7BczR4wZcntKb2B_hr-EdD36_T2OTQdwAi2yHVmuB0lWtSootGg-cs_WVk14piezIusGfgFKn8_dczD4Y/s1600/screen5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4RibcDuMQ3lGUWup0x-EbCLc09O4yT6HrEkHVdphZ7MCabSuXV1i2N1d_of7BczR4wZcntKb2B_hr-EdD36_T2OTQdwAi2yHVmuB0lWtSootGg-cs_WVk14piezIusGfgFKn8_dczD4Y/s320/screen5.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Podajemy JNDI name, dalej wybieramy &lt;b&gt;Driver type - 2&lt;/b&gt; i wpisujemy nazwę wcześniej utworzonej bazy danych, pole &lt;b&gt;Server name&lt;/b&gt; zostawiamy puste. Na tym konczymy naszą konfigurację połączenia.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaYymcV0ZDwyM7aiduUL0rwAl3uvxXVBzWSdwSJYwDErHQ0jlvJ-WCcZy_ZAfWAFd3AJosRd1z6fy4DnisASgVZF6jQ7Elqtwy-z7o1hnzclF1yP56JZxTwfTHOGRVnqn8KLmFLXyI8TM/s1600/screen4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaYymcV0ZDwyM7aiduUL0rwAl3uvxXVBzWSdwSJYwDErHQ0jlvJ-WCcZy_ZAfWAFd3AJosRd1z6fy4DnisASgVZF6jQ7Elqtwy-z7o1hnzclF1yP56JZxTwfTHOGRVnqn8KLmFLXyI8TM/s320/screen4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Testujemy nasze połączenie, pamiętając, że jeszcze musimy zapisać nasze zmiany, wyświetli się odpowiedni komunikat, klikamy &lt;b&gt;Save&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Nawiązanie połączenia po wykonaniu powyższych czynności powinno zakończyć się powodzeniem.&lt;br /&gt;
Zmieniamy plik &lt;b&gt;DataSource.groovy&lt;/b&gt; aby wygladal tak(w miejsce biblio możesz umieścić swoją nazwę):&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYERv0xIGgcswOzqX0aBaoTOPZMRrMWWq5Wj7SVRPrGdaPqsUcoaz5vsz-bpGa9wBVK-3ejvpnH0iwWVVIZQFyKGgbn39kxmmfxmxulyit-H9_tsxNtPFhZRDPEmXfbA0kv3MKRDcS3qE/s1600/screen6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYERv0xIGgcswOzqX0aBaoTOPZMRrMWWq5Wj7SVRPrGdaPqsUcoaz5vsz-bpGa9wBVK-3ejvpnH0iwWVVIZQFyKGgbn39kxmmfxmxulyit-H9_tsxNtPFhZRDPEmXfbA0kv3MKRDcS3qE/s320/screen6.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Wdrażamy war’a na &lt;i&gt;WPS&lt;/i&gt;, w konsoli administratora przechodzimy do &lt;i&gt;Application&amp;gt;New Application&amp;gt;New Enterprise Application&lt;/i&gt;.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiI_1QBAcylidG80Pho8sAox7aZo7djoM3Z6byNr8cHp8cqWAXARmwLRsuk4-oIRejP3DMFhrbobNbZpo8J9Xt1a0XMR0kdJ_IOFDxRNibPxGl5tcqT_QtfbOHE1YKuquTBz8xtYE-6P8/s1600/screen8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiI_1QBAcylidG80Pho8sAox7aZo7djoM3Z6byNr8cHp8cqWAXARmwLRsuk4-oIRejP3DMFhrbobNbZpo8J9Xt1a0XMR0kdJ_IOFDxRNibPxGl5tcqT_QtfbOHE1YKuquTBz8xtYE-6P8/s320/screen8.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Wyszukujemy nasz wcześniej stworzony plik, klikamy &lt;b&gt;next&lt;/b&gt;, wybieramy metodę instalacji - &lt;b&gt;Fast Path&lt;/b&gt;. :)&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
Dalej wszystkie ustawienia do kroku 4 zostawiamy domyślne, jedynie zmieniamy mapowanie &lt;b&gt;context root&lt;/b&gt;, jeżeli tego nie zrobimy prawdopodobnie otrzymamy taki błąd:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;com.ibm.ws.wswebcontainer.VirtualHost addWebApplication SRVE0164E: Web Application HumanTasks_war#/HumanTasks-production-0.1 uses the context root /*, which is already in use by Web Application DefaultApplication#Default Web Application. Web Application /HumanTasks-production-0.1 will not be loaded.&amp;nbsp; &lt;/div&gt;&lt;/blockquote&gt;Teraz przechodzimy do &lt;i&gt;Applications&amp;gt;Applications Types&amp;gt;WebSphere enterprise applications&lt;/i&gt;, zaznaczamy naszą aplikacje naciskamy &lt;b&gt;start&lt;/b&gt;.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheZFh3UuM9lzZtHc_3_lp8bK1bFHrAvNnvrAnoUPszuHznflN74MsGshxaIBWiX3ad7Nwc4KwEw9EJol0b_hr4HFXADKZr-Xi09YDn1_gFD7SqC8BzmfaTgN_aXEgql412Uie1QP4My98/s1600/screen1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheZFh3UuM9lzZtHc_3_lp8bK1bFHrAvNnvrAnoUPszuHznflN74MsGshxaIBWiX3ad7Nwc4KwEw9EJol0b_hr4HFXADKZr-Xi09YDn1_gFD7SqC8BzmfaTgN_aXEgql412Uie1QP4My98/s320/screen1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Następnie w zależności od podanego context root&#39;a dla naszej aplikacji i adresu waszego hosta(u mnie &lt;b&gt;defoult_host&lt;/b&gt; na porcie 9080) wpisujemy adres naszej aplikacji:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;http://localhost:9080/grails&lt;/div&gt;&lt;/blockquote&gt;I możemy cieszyć się rezultatem naszej pracy.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMRk_3hqvw2olEEbxxE1SO5fDfupNlLdhZBknpvQZpIHYnHC83PLUqMl2xI8A8tQp8YqNfPD8GeVYAJ4ZuTsu7RoYUmx07rsZ36yZZGbNsXF0cayrAOf_HWaTbxbASvkL6w-uSpg0NhJQ/s1600/screen7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMRk_3hqvw2olEEbxxE1SO5fDfupNlLdhZBknpvQZpIHYnHC83PLUqMl2xI8A8tQp8YqNfPD8GeVYAJ4ZuTsu7RoYUmx07rsZ36yZZGbNsXF0cayrAOf_HWaTbxbASvkL6w-uSpg0NhJQ/s320/screen7.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/3616344340542052478/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/04/instalacja-db2-na-redhat-enterprise.html#comment-form' title='Komentarze (2)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/3616344340542052478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/3616344340542052478'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/04/instalacja-db2-na-redhat-enterprise.html' title='Instalacja DB2 na RedHat Enterprise Linux i uruchomienie aplikacji Grails na WPS'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAH0td9RX7RarD5IatWTitSWm4jp6aMat9sDEWP2S-oOd8ji5fTKv4UQ9W_nDWIPhdZ2aqmB4NlU5lpDCf6mH8xMbTwvQLzJbsxaPB-VRKSrAMbV1xF76GL0RfAqc_E-arNQ8Jt-Edxwk/s72-c/screen2.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-6598545478575044070</id><published>2010-04-07T15:30:00.000-07:00</published><updated>2010-04-13T07:58:04.764-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="błąd"/><category scheme="http://www.blogger.com/atom/ns#" term="java.io.FileNotFoundException"/><category scheme="http://www.blogger.com/atom/ns#" term="open files"/><category scheme="http://www.blogger.com/atom/ns#" term="Permission Denied"/><category scheme="http://www.blogger.com/atom/ns#" term="virtual host"/><category scheme="http://www.blogger.com/atom/ns#" term="WAS"/><category scheme="http://www.blogger.com/atom/ns#" term="wps"/><title type='text'>Problem z uruchomieniem konsoli administratora dla WAS/WPS</title><content type='html'>Na kolejne trudności nie trzeba było długo czekać, po stworzeniu profilu WPS przyszedł czas na uruchomienie konsoli administratora w przeglądarce. I tu po wpisaniu prawidłowego adresu do mojego localhosta tj.:&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;http://localhost:9060/ibm/console&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp;pojawia się kolejny błąd.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibdRpM6MIa8MEamZ94pDo4zArt5A1aA2MWh0qN6R7iRaT9TfSONC-l6RPAoYRq075cQcwVtuHJoXToEthu_uKzV3eu9GL6h8RaSQXX-JVbPjHmZJlJ69K-xq8OlzvWAAv6vmYfoLq0ODo/s1600/foto1.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;131&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibdRpM6MIa8MEamZ94pDo4zArt5A1aA2MWh0qN6R7iRaT9TfSONC-l6RPAoYRq075cQcwVtuHJoXToEthu_uKzV3eu9GL6h8RaSQXX-JVbPjHmZJlJ69K-xq8OlzvWAAv6vmYfoLq0ODo/s640/foto1.bmp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;b&gt;//EDIT 1 - 09.04.2010r. 12:40&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Nadal nie uporałem się z powyższym problemem, dla zainteresowanych i chętnych do pomocy zamieszczam logi serwera wyrzucane podczas uruchamiania serwera - &lt;a href=&quot;http://www.speedyshare.com/files/21851279/download/SystemOut.log&quot;&gt;PLIK DO POBRANIA&lt;/a&gt;.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;b&gt;//EDIT 2 - 11.04/2010r 13:30&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Przyczyną błędu powodującego całe zamieszanie był systemowy limit na liczbę otwartych plików:&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;blockquote style=&quot;background-color: #eeeeee;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: inherit; text-align: left;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;java.io.FileNotFoundException: /home/rafal/ibm/WebSphere/ProcServer/profiles/ProcSrv01/databases/WPRCSDB/seg0/cb10.dat (Too many open files)&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Żeby rozwiązać ten problem odpowiednio modyfikujemy parametr ulimit, postępując zgodnie z &lt;a href=&quot;http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/x4733.html&quot;&gt;LINKIEM&lt;/a&gt;, logujemy się w terminalu jako root, podajemy komendę:&lt;/div&gt;&lt;blockquote&gt;&lt;div class=&quot;separator&quot; style=&quot;background-color: #eeeeee; clear: both; text-align: left;&quot;&gt;#vi /root/.bashrc&lt;/div&gt;&lt;/blockquote&gt;Naciskamy&lt;b&gt; &quot;&lt;/b&gt;&lt;b&gt;i&quot;&lt;/b&gt; i dopisujemy do pliku:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;ulimit -u unlimited&lt;/div&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;ulimit -n 90000 &lt;/div&gt;&lt;/blockquote&gt;Wciskamy &lt;b&gt;Esc&lt;/b&gt; i wpisujemy :wq aby wyjść z pliku i zapisać zmiany. Ustawiliśmy dzięki temu limit uruchomionych procesów dla użytkownika &lt;b&gt;root&lt;/b&gt; na nieskończony i maksymalną ilość otwartych plików dla danego procesu na 90 tyś.. Teraz trzeba się prze-logować, wejść z powrotem do terminala dla użytkownika root żeby zmiany były widoczne dla systemu, możemy sprawdzić zmianę ustawień wpisując komendę:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;# ulimit -a &lt;/div&gt;&lt;/blockquote&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjluELQMrhwQj5jw7ZYR-F7mvDy25Mbqh-fl48ayxKP4GLIjL85K6-rRrCmQgIUSO2Y3N54IgKcTKd6OAEv2SzzfXLjC-sISNquCqDmj7e6ILuwli68FjvhStOXx8lvyYI1u9xOT2EWVN8/s1600/foto1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;301&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjluELQMrhwQj5jw7ZYR-F7mvDy25Mbqh-fl48ayxKP4GLIjL85K6-rRrCmQgIUSO2Y3N54IgKcTKd6OAEv2SzzfXLjC-sISNquCqDmj7e6ILuwli68FjvhStOXx8lvyYI1u9xOT2EWVN8/s400/foto1.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Dzięki temu stworzona instancja serwera uruchamia się bez żadnych komplikacji i w końcu mamy dostęp do konsoli administratora.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;//EDIT 3 - 12.04.2010r 16:00&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Jeżeli chcemy korzystać z serwera z poziomu dowolnego użytkownika, najpierw upewniamy się, że nie otrzymamy ponownie błędu spowodowanego limitem na liczbę otwartych plików, tym razem zwiększamy limit dla danego użytkownika, pomocny &lt;a href=&quot;http://www.linuxask.com/questions/increase-the-maximum-number-of-open-files-file-descriptors&quot;&gt;LINK&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Otwieramy z poziomu roota plik &lt;b&gt;limits.conf:&lt;/b&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;# vi /etc/security/limits.conf&amp;nbsp; &lt;/span&gt;&lt;/blockquote&gt;Dodajemy dwie linijki tuż przed końcem pliku:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;uzytkownik hard nofile 65535&lt;/div&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;uzytkownik soft nofile 65535&lt;/div&gt;&lt;/blockquote&gt;Wychodzimy z pliku zapisując go i przechodzimy do najważniejszej części, czyli nadania wybranemu użytkownikowi praw do katalogu z WAS/WPS, logujemy się jako root w terminalu i wpisujemy komendę:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;# chown -R uzytkownik /katalog/z/WAS/WPS&lt;/div&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;w moim przypadku: # chown -R rafal /home/rafal/ibm &lt;/div&gt;&lt;/blockquote&gt;Dzięki temu serwer uruchamia się bez poniższego błędu:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;The system is unable to read document cells/localhostNode01Cell/nodes/localhostNode01/node-metadata.properties:java.io.IOException:Permission denied&lt;/div&gt;&lt;/blockquote&gt;Kolejnym krokiem w realizowanym projekcie będzie konfiguracja bazy danych DB2 i uruchomienie pierwszej aplikacji Grails na WPS.</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/6598545478575044070/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/04/problem-z-uruchomieniem-konsoli.html#comment-form' title='Komentarze (3)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/6598545478575044070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/6598545478575044070'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/04/problem-z-uruchomieniem-konsoli.html' title='Problem z uruchomieniem konsoli administratora dla WAS/WPS'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibdRpM6MIa8MEamZ94pDo4zArt5A1aA2MWh0qN6R7iRaT9TfSONC-l6RPAoYRq075cQcwVtuHJoXToEthu_uKzV3eu9GL6h8RaSQXX-JVbPjHmZJlJ69K-xq8OlzvWAAv6vmYfoLq0ODo/s72-c/foto1.bmp" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-2667075619752021752</id><published>2010-04-01T10:26:00.000-07:00</published><updated>2010-04-07T06:41:15.176-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="błąd"/><category scheme="http://www.blogger.com/atom/ns#" term="instalacja"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="problem"/><category scheme="http://www.blogger.com/atom/ns#" term="WAS"/><category scheme="http://www.blogger.com/atom/ns#" term="wps"/><title type='text'>Instalacja WAS i WPS na Red Hat Enterprise Linux</title><content type='html'>Zainstalowałem linuxa na VMware, przeglądarkę firefox (v. 3.6.2) i przy instalacji WebSphere Process Server v7 (WPS) zaczynają się schody. WebSphere Application Server v7 (WAS) instaluje się bez problemu, jednak gdy odpalam komendę ./launchpad.sh i próbuję zainstalować WPS nie jest już tak kolorowo. Już na samym starcie konsola pokazuje jakiś błąd, a kolejny pojawia się w momencie kliknięcia w miejsce, po którym powinna rozpocząć się instalacja WPS, oto błędy:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5XJj_HAWtWXVx5xfkcel9_xH1aXtprPC42YOgr0bnydZGfTOE1YlUVpKVEkhkzXFdYyXRhpUbw-wUT3hZZWYP3hJ5ul34QHiLSwGJIc_c4DrNsdf41U87Sqj4M5gzA_ggBBwMD2GHFcs/s1600/blad1.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;204&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5XJj_HAWtWXVx5xfkcel9_xH1aXtprPC42YOgr0bnydZGfTOE1YlUVpKVEkhkzXFdYyXRhpUbw-wUT3hZZWYP3hJ5ul34QHiLSwGJIc_c4DrNsdf41U87Sqj4M5gzA_ggBBwMD2GHFcs/s640/blad1.bmp&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ja próbuję dalej, pomysły jak rozwiązać ten problem mile widziane.&lt;br /&gt;
&lt;br /&gt;
//EDIT 1&lt;br /&gt;
&lt;br /&gt;
Gdy nie wywołuję launchpad.sh jako root i chcę zainstalować WPS jako non-root installation drugi błąd dalej występuje (bez pierwszego ostrzeżenia, które tak naprawdę można zignorować).&lt;br /&gt;
&lt;br /&gt;
//EDIT 2&lt;br /&gt;
&lt;br /&gt;
Problem rozwiązany, a był nim &lt;b&gt;Security-Enhanced Linux (SELinux) &lt;/b&gt;i pewnie po części moja niewiedza, bo jakbym wcześniej korzystał z Linuxa to może bym wiedział o tej koncepcji. A chodzi w niej o politykę bezpieczeństwa opartej na zapewnieniu jak najmniejszej ilości uprawnień dla danego obiektu (np. konta użytkownika, urządzenia, programu) potrzebnych do jego poprawnego funkcjonowania, co ogranicza wielkość wyrządzonych szkód po przejęciu kontroli nad obiektem przez osoby nie powołane(źródło: wikipedia).&lt;br /&gt;
&lt;br /&gt;
Aby temu zaradzić wybieramy z menu &lt;i&gt;System&amp;gt;Administration&amp;gt;SELinux Management&lt;/i&gt;  i zmieniamy ustawienia &lt;b&gt;Enforcing Mode&lt;/b&gt; na &lt;b&gt;Permissive&lt;/b&gt;(lub całkowicie wyłączamy tą usługę). Dalej instalacja przebiega bez powyższego błędu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WAS i WPS zainstalowany, profile stworzone, kolejnym realizowanym celem będzie uruchomienie pierwszej aplikacji Grails na WPS.</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/2667075619752021752/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/04/instalacja-was-i-wps-na-red-hat.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/2667075619752021752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/2667075619752021752'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/04/instalacja-was-i-wps-na-red-hat.html' title='Instalacja WAS i WPS na Red Hat Enterprise Linux'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5XJj_HAWtWXVx5xfkcel9_xH1aXtprPC42YOgr0bnydZGfTOE1YlUVpKVEkhkzXFdYyXRhpUbw-wUT3hZZWYP3hJ5ul34QHiLSwGJIc_c4DrNsdf41U87Sqj4M5gzA_ggBBwMD2GHFcs/s72-c/blad1.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-7441509886416416784</id><published>2010-03-26T16:20:00.000-07:00</published><updated>2010-04-07T06:42:25.665-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="db2"/><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="konfiguracja"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="war"/><category scheme="http://www.blogger.com/atom/ns#" term="wdrożenie"/><title type='text'>Grails - wdrożenie war na tomcat + utrwalenie danych w MySQL/DB2</title><content type='html'>&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;W ciągu ostatnich kilku dni zajmowałem się powyższym tematem, w końcu mogę się podzielić z Wami wynikami mojej pracy w postaci &quot;krótkiego&quot; tutorialu. Myślę, że warto poświęcić Grailsowi trochę czasu, szczególnie jeżeli ktoś zajmuje się tworzeniem aplikacji webowych, których programowanie ułatwia omawiana tu platforma. Co jest takiego fajnego w Grails? Przede wszystkim to, że zapewnia wysoką produktywność w tworzeniu aplikacji webowych opartych o platformę Java, wykorzystuje sprawdzone technologie takie jak Hibernate i Spring oraz zbudowany jest w oparciu o dynamiczny język Groovy. Jest łatwy w nauce &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;w szczególności &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dla programistów Java(ale nie tylko), ukrywa przed użytkownikiem wiele szczegółów konfiguracji i posiada wbudowane kompletne środowisko programistyczne(serwer aplikacji, bazę danych itp.).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Zakładam, że zmienne środowiskowe wskazujące na Grails i JDK są ustawione(jeżeli nie - wróć do poprzedniej notki). Otwieramy konsole Windows &lt;i&gt;start&amp;gt;uruchom&lt;/i&gt; i tam wpisujemy cmd.&lt;/span&gt;&lt;span style=&quot;font-family: Verdana,sans-serif; font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt; Wybieramy dysk, na którym chcemy u&lt;/span&gt;&lt;span style=&quot;font-family: Verdana,sans-serif; font-size: small;&quot;&gt;mieścić naszą aplikację, u mnie dysk D, wpisujemy:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot; style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;background-color: #eeeeee; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;C:\Documents and Settings\X&amp;gt;d:&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Tworzymy naszą aplikację:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;background-color: #eeeeee; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;D:\&amp;gt;grails create-app Biblioteka&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Chcemy mieć, co utrwalać, więc przechodzimy do katalogu naszej aplikacji, dalej będziemy tworzyć dwie domain-class i proste powiązanie między nimi:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote face=&quot;verdana&quot; style=&quot;background-color: #eeeeee; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;D:\&amp;gt;cd biblioteka&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;D:\Biblioteka&amp;gt;grails create-domain-class Ksiazka&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;WARNING: You have not specified a package... (y, Y, n, N)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Zatwierdzamy ostrzegają&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;cy komunikat(przez który wcześniej miałem problemy w Netbeans IDE) bo do prostej aplikacji nie potrzebujemy pakietów.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Tak jak poprzednio, tworzymy kolejną domain-class - Czytelnik.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Każda&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt; biblioteka ma swoich czytelników, w tym przykładzie również przyda nam się czytelnik, aby pokazać relację pomiędzy dwoma klasami, która będzie miała odzwierciedlenie w naszej bazie danych. Teraz chcemy powiązać te dwie klasy - wypożyczamy książkę czytelnikowi, w Groovy robimy to podobnie jak w Javie dodając pole Czytelnik do klasy Ksiazka. Każdy czytelnik może wypożyczyć wiele książek, a jedna książka może mieć maksymalnie jednego czytelnika, aby otrzymać relację wiele-do-jednego(ang. many-to-one &lt;a href=&quot;http://grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html#5.2.1.2%20One-to-many&quot;&gt;LINK&lt;/a&gt;) wystarczy w klasie Czytelnik dodać jedną linijkę kodu. Dodamy jeszcze inne pola klasy, przejdź do katalogu z nowo utworzonymi domain-class, czyli &lt;i&gt;D:\Biblioteka\grails-app\domain\&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Otwieramy najpierw klasę Ksiazka i uzupełniamy ją o poniższy kod:&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote style=&quot;background-color: #eeeeee;&quot;&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;class Ksiazka {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String autor&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String tytul&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String rokWydania&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Czytelnik czytelnik&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static constraints = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; autor()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tytul()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rokWydania()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; czytelnik(nullable : true)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;Dla zainteresowanych deklaracją constraints - &lt;a href=&quot;http://www.grails.org/Constraints+Influencing+Schema+Generation&quot;&gt;LINK&lt;/a&gt;.&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;Uzupełniamy klasę Czytelnik kodem:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote style=&quot;background-color: #eeeeee;&quot;&gt;&lt;div style=&quot;font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;class Czytelnik {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String imie&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String nazwisko&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; static hasMany = [ ksiazki : Ksiazka ]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static constraints = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; imie()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; nazwisko()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ksiazki(nullable : true)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} &lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Po wpisaniu kodu, wracamy do konsoli i wpisujemy komendę:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;background-color: #eeeeee; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;D:\Biblioteka&amp;gt;grails generate-all Ksiazka&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Tą samą komendę wywołujemy z parametrem Czytelnik, ta komenda generuje nam implementację elementu bardzo ułatwiającego życie programisty, czyli generuje interfejs CRUD (Create/Read/Update/Delete) dla wybranej klasy. &lt;a href=&quot;http://grails.org/doc/latest/ref/Command%20Line/generate-all.html&quot;&gt;LINK&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Przed konfiguracją bazy danych przygotujemy tomcata do pracy, ściągamy &lt;a href=&quot;http://ftp.tpnet.pl/vol/d1/apache/tomcat/tomcat-6/v6.0.26/bin/apache-tomcat-6.0.26.zip&quot;&gt;LINK&lt;/a&gt;, rozpakowujemy i ustawiamy zmienne środowiskowe &lt;a href=&quot;http://tomcat.apache.org/tomcat-3.3-doc/tomcat-ug.html#env_setup&quot;&gt;LINK&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;W projekcie realizowanym na praktykach używać będę DB2, więc skonfiguruję sobie połączenie z bazą DB2 i MySQL(z którą miałem wcześniej do czynienia).&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Jeżeli interesuje Cię tylko DB2 to omiń część notki poświęconą MySQL.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit; font-size: large;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Konfiguracja MySQL&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Dla tych, co zdecydowali się na MySQL &lt;a href=&quot;http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.45-win32.msi/from/http://gd.tuwien.ac.at/db/mysql/&quot;&gt;LINK&lt;/a&gt; do pobrania. Ściągamy od razu bibliotekę, którą wrzucimy później do naszej aplikacji - &lt;a href=&quot;http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.12.zip/from/http://gd.tuwien.ac.at/db/mysql/&quot;&gt;LINK&lt;/a&gt;.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Uruchamiamy serwer - można to zrobić na dwa sposoby, włączyć usługę ręcznie w &lt;i&gt;panelu sterowania&amp;gt;narzędzia administracyjne&amp;gt;usługi&lt;/i&gt; i znaleźć pozycję MySQL, lub wpisując komendę:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;background-color: #eeeeee; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;gt;net start mysql     //uruchamiamy usługę&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;gt;net stop mysql     //kończymy usługę&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Jednak powyższa metoda u mnie nie działa, mimo, że mam poprawnie ustawioną zmienną PATH dla MySQL oraz serwer zainstalowany jako usługę systemu Windows.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Teraz czas na stworzenie bazy danych, otwieramy linie poleceń MySQL (&lt;span style=&quot;font-style: italic;&quot;&gt;start&amp;gt;programy&amp;gt;MySQL Command Line Client&lt;/span&gt;), logujemy się podając wcześniej ustalone hasło dla swojego profilu i wpisujemy:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;background-color: #eeeeee; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;MySQL&amp;gt;create database biblioteka;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Grails przygotował dla swoich użytkowników kolejne ułatwienie podążając za sloganem &lt;i&gt;konwencja ponad konfiguracje &lt;/i&gt;(z ang. convention over configuration), tym razem zmieniając tylko kilka linijek kodu w pliku &lt;span style=&quot;font-style: italic;&quot;&gt;D:\Biblioteka\grails-app\conf\DataSource.Groovy &lt;/span&gt;konfigurujemy połączenie:&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;blockquote style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dataSource {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;pooled = true&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;driverClassName = &quot;com.mysql.jdbc.Driver&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;username = &quot;root&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;password = &quot;root&quot;&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;// environment specific settings&lt;br /&gt;
environments {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; development {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dbCreate = &quot;update&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url = &quot;jdbc:mysql://localhost:3306/biblioteka&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Zastępujemy bazowe ustawienia na powyższe, jeżeli będziemy korzystać z innych środowisk uruchomieniowych bazy danych to nadmieniamy tylko &lt;span style=&quot;font-style: italic;&quot;&gt;url&lt;/span&gt; do bazy danych &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dla danego środowiska.&lt;/span&gt; &lt;a href=&quot;http://grails.org/doc/1.0.x/guide/3.%20Configuration.html#3.2%20Environments&quot;&gt;LINK&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Mamy stworzoną aplikację, bazę danych, przygotowanego tomcata, odpaloną usługę MySQL, teraz tworzymy war uruchamiając komendę:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;D:\Biblioteka&amp;gt;grails war Biblioteka.war&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Kopiujemy utworzonego wara do katalogu &lt;span style=&quot;font-style: italic;&quot;&gt;\Apache Tomcat 6.0.20\webapps&lt;/span&gt; oraz wcześniej pobranego &lt;span style=&quot;font-style: italic;&quot;&gt;mysql-connector-java-5.1.12-bin.jar&lt;/span&gt; do folderu naszej aplikacji &lt;span style=&quot;font-style: italic;&quot;&gt;D:\Biblioteka\lib&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Komendą: &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;background-color: #eeeeee; color: black; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;gt;startup   &lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;        uruchamiamy tomcata.     &lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;o:p&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Widzimy w konsoli tomcata, którego wcześniej uruchomiliśmy, że rozpoczeło się automatyczne wdrażanie war na serwer, jeżeli wszystko przebiegło pomyślnie otwieramy naszą aplikację podając link:&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;blockquote&gt;&lt;span style=&quot;background-color: #eeeeee; font-size: small;&quot;&gt;http://localhost:8080/Bilbioteka&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Możemy teraz stworzyć czytelnika, potem dwie książki - wybierając w polu czytelnik wcześniej stworzoną osobę tak, aby upewnić się, że nasza relacja zachodzi - wracamy do czytelnika i widzimy, że w polu Książki ma podane dwie pozycję.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; face=&quot;verdana&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHdEDcRBZp_lir6XGiCnFHWry62UIrBUPl6QDszME6y7-chCg3ELrMIaeLmYV-RUeWjvnXmXKvIU7nCnDO8fLL05-Nv2OYAABto-gY3NxXnkJ38bn4VO2Otubc4P4zvDdbnWJvr2D8Ws8/s1600/foto2zmodyf.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;206&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHdEDcRBZp_lir6XGiCnFHWry62UIrBUPl6QDszME6y7-chCg3ELrMIaeLmYV-RUeWjvnXmXKvIU7nCnDO8fLL05-Nv2OYAABto-gY3NxXnkJ38bn4VO2Otubc4P4zvDdbnWJvr2D8Ws8/s400/foto2zmodyf.bmp&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKKnvF0dwqt66rQUKXLnbexCxiSAXiiomuVrRSZZnJiR8lEGA2ZGBUK8XlcTPjahYnKSgcKP4u-0kXjZ5T_jo5QUPFeclDoGPxjb5oPZ3LvLzUUFCQ_vHFlgm9sVoboiIAPkMN1tRZDlg/s1600/foto1zmodyf.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;205&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKKnvF0dwqt66rQUKXLnbexCxiSAXiiomuVrRSZZnJiR8lEGA2ZGBUK8XlcTPjahYnKSgcKP4u-0kXjZ5T_jo5QUPFeclDoGPxjb5oPZ3LvLzUUFCQ_vHFlgm9sVoboiIAPkMN1tRZDlg/s400/foto1zmodyf.bmp&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Konfiguracja DB2&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Pobranie DB2 nawet w wersji darmowej, czyli Express-C wymaga rejestracji na stronie IBM, rejestrujemy się, logujemy i pobieramy &lt;a href=&quot;http://www-01.ibm.com/software/data/db2/linux-unix-windows/download.html?S_TACT=download&amp;amp;S_CMP=expcsite&quot;&gt;LINK&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Instalujemy, zapamiętujemy użytkownika i hasło, które podaliśmy. Teraz jak poprzednio tworzymy bazę danych, ale najpierw uruchamiamy serwer, znowu na dwa sposoby albo uruchamiając usługę, albo &lt;i&gt;start&amp;gt;IBM DB2&amp;gt;Command Line Tools&amp;gt;Command Window&lt;/i&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;gt;db2start&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Teraz&lt;span style=&quot;font-style: italic;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;IBM DB2&amp;gt;Command Line Tools&amp;gt;Command Line Processor &lt;/span&gt;i wpisujemy:&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;db2 =&amp;gt;create database biblio&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Pamiętając o tym, że nasza baza danych może zawierać do 8 znaków bo inaczej otrzymamy błąd - &lt;a href=&quot;http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.messages.sql.doc/doc/msql01001n.html&quot;&gt;LINK.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Znowu nadmieniamy kod w pliku &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;i&gt;D:\Biblioteka\grails-app\conf\DataSource.Groovy&lt;/i&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;background-color: #eeeeee; font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dataSource {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pooled = true&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; driverClassName =&quot;COM.ibm.db2.jdbc.app.DB2Driver&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; username = &quot;MOJ_UZYTKOWNIK&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; password = &quot;MOJE_HASLO&quot;&lt;br /&gt;
}&lt;br /&gt;
environments {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; development {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; dataSource {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dbCreate = &quot;update&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; url = &quot;jdbc:db2:biblio&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Teraz część, z którą miałem więcej problemów, wybranie odpowiedniej biblioteki do połączenia z bazą danych. Na początku skonfigurowałem połączenie dla tomcata wbudowanego w Grails, kopiujemy plik z katalogu instalacyjnego DB2 u mnie &lt;span style=&quot;font-style: italic;&quot;&gt;\DB2express-c_971\SQLLIB\java\db2jcc4.jar&lt;/span&gt; do &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;D:\Biblioteka\lib.  &lt;/span&gt;Używając komendy:&amp;nbsp; &lt;span style=&quot;font-style: italic;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;background-color: #eeeeee; font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;D:\Bilbioteka&amp;gt;grails run-app&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;powinno wszystko działać.&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
Jednak żeby działało połączenie z DB2 na osobnym serwerze tomcat musiałem się trochę bardziej natrudzić, wiecej rzeczy przetestować i przewertować trochę wiecej informacji, aby w końcu natrafić na użyteczny &lt;a href=&quot;http://pages.cs.wisc.edu/%7Edbbook/openAccess/thirdEdition/DB2/Database%20Web%20Server%20Software%20Install%20Guide.htm&quot;&gt;LINK.&lt;/a&gt; W kroku 6 podpunkcie 3 znalazłem odpowiedź, &quot;wystarczy&quot; przekopiować plik &lt;/span&gt;&lt;span style=&quot;font-size: small; font-style: italic;&quot;&gt;\DB2express-c_971\SQLLIB\java\&lt;/span&gt;&lt;span style=&quot;font-size: small; font-style: italic;&quot;&gt;db2java.zip&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt; i zmienić jego rozszerzenie na .jar do katalogu &lt;/span&gt;&lt;span style=&quot;font-size: small; font-style: italic;&quot;&gt;\tomcat\lib&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;. Teraz gdy wrzucimy nasz plik Biblioteka.war do webapps w tomcat i zrestartujemy serwer możemy się cieszyć działającą aplikacją.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Kolejnym krokiem realizowanym w ramach praktyk będzie zainstalowanie &lt;/span&gt;IBM WebSphere Process Server (WPS) na wirtualnej maszynie z systemem Linux.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/7441509886416416784/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/03/grails-wdrozenie-war-na-tomcat_26.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/7441509886416416784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/7441509886416416784'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/03/grails-wdrozenie-war-na-tomcat_26.html' title='Grails - wdrożenie war na tomcat + utrwalenie danych w MySQL/DB2'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHdEDcRBZp_lir6XGiCnFHWry62UIrBUPl6QDszME6y7-chCg3ELrMIaeLmYV-RUeWjvnXmXKvIU7nCnDO8fLL05-Nv2OYAABto-gY3NxXnkJ38bn4VO2Otubc4P4zvDdbnWJvr2D8Ws8/s72-c/foto2zmodyf.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-4640324931953231039</id><published>2010-03-19T07:49:00.000-07:00</published><updated>2010-03-22T03:45:52.484-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="netbeans"/><title type='text'>Grails - pierwsze kroki, podsumowanie</title><content type='html'>&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;Stworzenie pierwszej aplikacji webowej w Grails jest bardzo proste więc myślę, że nie ma sensu opisywać szczegółowo jak to zrobić(tymbardziej, że jest już wiele dostępnych materiałów w sieci). Podam za to parę linków, które mogą pomóc początkującemu użytkownikowi Grails:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;1. Pobieramy Grails (najlepiej najnowszą wersję, ja korzystam z wersji 1.3-M1) - &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://www.grails.org/Download&quot;&gt;http://www.grails.org/Download&lt;/a&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;2. Ustawiamy zmienne środowiskowe - &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://www.grails.org/Installation&quot;&gt;http://www.grails.org/Installation&lt;/a&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;3. Możemy stworzyć naszą pierwszą aplikację:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;   a) najprostsza aplikacja z możliwych - &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://grails.org/doc/1.3.x/guide/2.%20Getting%20Started.html#2.3%20Creating%20an%20Application&quot;&gt;HelloWorld&lt;/a&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;   b) trochę większa aplikacja - opis &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;https://www.ibm.com/developerworks/java/library/j-grails01158/&quot;&gt;krok po kroku&lt;/a&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt; + utrwalanie danych w HSQL.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;   c) połączenie Grails z bazą danych MySQL - &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://www.jaceklaskowski.pl/wiki/Grails_z_MySQL&quot;&gt;http://www.jaceklaskowski.pl/wiki/Grails_z_MySQL&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;   d) zbiór tutoriali z developerWorks - http://www.grails.org/Tutorials&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;4. Możemy również zintegrować Grails z obsługującym go IDE i tam w jeszcze bardziej ułatwiony sposób tworzyć nasze aplikacje - &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://www.grails.org/IDE+Integration&quot;&gt;http://www.grails.org/IDE+Integration&lt;/a&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;Ja na początek wybrałem tą nieco łatwiejszą drogę, czyli Grails w środowisku Netbeans, chociaż praca przy samych tutorialach w konsoli windows jest równie prosta, ale bardziej czasochłonna. Miałem małe problemy, które jak się okazało później sam sobie przysporzyłem. Zainstalowałem Grails 1.2.1, zabrałem się do tworzenia pierwszej domain-class i w momencie tworzenia klasy, w oknie output w Netbeans pojawia się komunikat, ostrzeżenie, że nie powinno się tworzyć klas bez pakietów i czy chce kontynuować. W tym momencie Netbeans się zawiesza, można jedynie wpisać coś w okno tworzenia klasy i wtedy się odwiesza, tylko, że jedyne wyjście jakie pozostaje to wcisnąć cancel. :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;Jak się później okazało można było po prostu stworzyć klasy komendami Grails - prawym na projekt i run grails command. Jeszcze tego nie wiedząc zainstalowałem starszą wersję Grails 1.1.2. Co prawda naprawiło to wcześniejszy błąd, ale podczas późniejszej pracy z bazą danych MySQL pojawiły się kolejne błędy, które znowu naprawione były w nowszej wersji Grails.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;Do nauki na początek polecam książkę, o której przeczytałem na &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://jlaskowski.blogspot.com/&quot;&gt;blogu&lt;/a&gt; mojego mentora Jacka Laskowskiego - Dave Klein &lt;span style=&quot;font-style: italic;&quot;&gt;Grails A Quick Start Guide&lt;/span&gt;, Oct.2009. Jest w niej ciekawy przykład, książkę przyjemnie się czyta, a szczególnie zachęcająca jest ilość stron. :)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;Wiem jak pracuje się nad Grailsem w Netbeans i konsoli Windows, jak skonfigurować Grails żeby korzystał z bazy danych MySQL. Następny krok to własnoręczne wdrożenie wygenerowanego pliku war na osobny serwer tomcat i skonfigurowanie bazy danych DB2 albo Oracle XE.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/4640324931953231039/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/03/grails-pierwsze-kroki-podsumowanie.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/4640324931953231039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/4640324931953231039'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/03/grails-pierwsze-kroki-podsumowanie.html' title='Grails - pierwsze kroki, podsumowanie'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4831958408390717414.post-722714001174935472</id><published>2010-03-19T07:27:00.000-07:00</published><updated>2010-03-19T07:30:03.060-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grails"/><category scheme="http://www.blogger.com/atom/ns#" term="ibm"/><category scheme="http://www.blogger.com/atom/ns#" term="praktyki"/><category scheme="http://www.blogger.com/atom/ns#" term="projekt"/><category scheme="http://www.blogger.com/atom/ns#" term="temat"/><category scheme="http://www.blogger.com/atom/ns#" term="wid"/><category scheme="http://www.blogger.com/atom/ns#" term="wps"/><title type='text'>Notka wprowadzająca - praktyki IBM</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:worddocument&gt; &lt;w:view&gt;Normal&lt;/w:View&gt; &lt;w:zoom&gt;0&lt;/w:Zoom&gt; &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt; &lt;w:compatibility&gt; &lt;w:breakwrappedtables/&gt; &lt;w:snaptogridincell/&gt; &lt;w:wraptextwithpunct/&gt; &lt;w:useasianbreakrules/&gt; &lt;/w:Compatibility&gt; &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt; &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt; &lt;!-- /* Font Definitions */ @font-face {font-family:&quot;Book Antiqua&quot;; panose-1:2 4 6 2 5 3 5 3 3 4; mso-font-charset:238; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:&quot;&quot;; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:&quot;Times New Roman&quot;; mso-fareast-font-family:&quot;Times New Roman&quot;;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} --&gt; &lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:Standardowy; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:&quot;&quot;; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:&quot;Times New Roman&quot;;} &lt;/style&gt; &lt;![endif]--&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;Tytułem wstępu:&lt;/span&gt;  &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;Witam wszystkich na moim blogu. :)&lt;/span&gt;  &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;Jest to moja pierwsza styczność z notowaniem w internecie tego, co robię w swoim życiu, proszę o podwójną wyrozumiałość z tego względu, że będę się starał zamieszczać tutaj postępy moich prac nad nowo poznanymi technologiami, tworzonymi projektami itp., a nie jestem specjalistą w tej dziedzinie.&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;Jako, że niedługo kończę studia, a w CV nadal pusto, jakiś czas temu podjąłem decyzję o wzięciu udziału w praktykach IBM. Postaram się zamieszczać na swoim blogu postępy w mojej pracy nad tematem projektu jaki sobie wybrałem: &quot;Creating user interface for Human Tasks in IBM WebSphere Process Server V7 with Grails&quot;.&lt;/span&gt;  &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;Główne cele mojej pracy obejmować będą:&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;1. Naukę Grails.&lt;/span&gt;  &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;2. Uruchomienie Grails na Websphere Process Server (WPS).&lt;/span&gt;  &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;3. Stworzenie przykładowego procesu biznesowego w Websphere Integration Developer (WID) z zadaniem użytkownika (z ang. Human Task).&lt;/span&gt;  &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;4. Rozpoznanie sposobu tworzenia interfejsu użytkownika dla procesu biznesowego w Grails.&lt;/span&gt;  &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;5. Stworzenie interfejsu użytkownika, o którym mowa w powyższym punkcie.&lt;/span&gt;  &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;6. Podsumowanie pracy w postaci dokumentu.&lt;/span&gt; &lt;/p&gt; &lt;p style=&quot;font-family: verdana;&quot; class=&quot;MsoNormal&quot;&gt; &lt;span style=&quot;font-size:100%;&quot;&gt;Cała praca wykonana będzie na VMware z Linuksem. Już od jakiegoś czasu realizuję pierwszy cel, niedługo postaram się napisać jak mi idzie.&lt;/span&gt;  &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://rwisniecki.blogspot.com/feeds/722714001174935472/comments/default' title='Komentarze do posta'/><link rel='replies' type='text/html' href='http://rwisniecki.blogspot.com/2010/03/notka-wprowadzajaca-praktyki-ibm.html#comment-form' title='Komentarze (0)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/722714001174935472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4831958408390717414/posts/default/722714001174935472'/><link rel='alternate' type='text/html' href='http://rwisniecki.blogspot.com/2010/03/notka-wprowadzajaca-praktyki-ibm.html' title='Notka wprowadzająca - praktyki IBM'/><author><name>Rafał Wiśniecki</name><uri>http://www.blogger.com/profile/13569721523020562085</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>