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

<channel>
	<title>smash-it.de &#187; Netbeans WebService BPEL Glassfish Tutorial</title>
	<atom:link href="http://www.smash-it.de/blog/tag/netbeans-webservice-bpel-glassfish-tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.smash-it.de/blog</link>
	<description></description>
	<lastBuildDate>Sat, 24 Jul 2010 07:48:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>BPEL mit Netbeans</title>
		<link>http://www.smash-it.de/blog/2009/06/tutorial-bpel-prozess-in-netbeans/</link>
		<comments>http://www.smash-it.de/blog/2009/06/tutorial-bpel-prozess-in-netbeans/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 13:25:16 +0000</pubDate>
		<dc:creator>mash</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programmierung]]></category>
		<category><![CDATA[Netbeans WebService BPEL Glassfish Tutorial]]></category>

		<guid isPermaLink="false">http://www.smash-it.de/blog/2009/06/tutorial-bpel-prozess-in-netbeans/</guid>
		<description><![CDATA[Der folgende Artikel soll helfen einen BPEL Process mit Netbeans zu erstellen und auf den Glassfish Application Server zu deployen. Doch zun&#228;chste beschreibe ich kurz das vorhaben. Der BPEL Prozess nutzt insgesamt drei Web Services (YingService, YangService und MatchService). Der YingService ben&#246;tigt keinen Parameter und liefert den String &#34;Ying&#34; zur&#252;ck. Der YangService arbeitet analog zum [...]]]></description>
			<content:encoded><![CDATA[<p>Der folgende Artikel soll helfen einen BPEL Process mit Netbeans zu erstellen und auf den Glassfish Application Server zu deployen. Doch zun&#228;chste beschreibe ich kurz das vorhaben. Der BPEL Prozess nutzt insgesamt drei Web Services (YingService, YangService und MatchService). Der YingService ben&#246;tigt keinen Parameter und liefert den String &quot;Ying&quot; zur&#252;ck. Der YangService arbeitet analog zum YingService. Diese beiden Service arbeiten parallel! Der MatchService nimmt zwei Parameter vom Typ String entgegen und konkateniert diese beiden Strings und den String &quot;Fit&quot;. Danach wird der zusammengesetzte String vom MatchService zur&#252;ckgeliefert. Die einzelnen Web Services interessieren den Benutzer des BPEL Prozesses nicht, da dieser nach au&#223;en wie ein simpler Web Service (z.B. YingService) wirkt.</p>
<p>Nachdem das Ziel beschrieben ist kann die Arbeit beginnen. Ich habe sehr viele Screenshots verwendet um den Weg m&#246;glichst anschaulich zu machen. </p>
<p>Insgesamt werden 4 Projekte angelegt. Beginnen m&#246;chte ich mit einem Projekt, dass die einzelnen WebServices (YingService, YangService und MatchService) enth&#228;lt, die dann im BPEL Prozess verwendet werden.</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="170" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb.png" width="244" border="0" /></a>Dazu legen wir einfach eine neue Web Application an und f&#252;gen anschlie&#223;end die drei WebServices hinzu. </p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p> <span id="more-723"></span>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image1.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="254" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb1.png" width="244" border="0" /></a></p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image2.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="206" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb2.png" width="244" border="0" /></a> </p>
<p>Jeder dieser WebServices hat jeweils eine Methode, die man &#252;ber Add Operation hinzuf&#252;gen kann. In dem dazugeh&#246;rigen Dialog kann man sowohl Parameter als auch R&#252;ckgabetyp festlegen. In diesem Beispiel habe ich die Methoden sayYing(), sayYang() und concateStrings(String ying, String yang) genannt. Jede dieser Methoden gibt einen String zur&#252;ck.</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image3.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="141" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb3.png" width="244" border="0" /></a> </p>
<p>Das wiederholt man einfach noch f&#252;r die anderen beiden Web Services.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image4.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="126" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb4.png" width="244" border="0" /></a></p>
<p>Sind alle Web Services angelegt kann man sich daran machen ein BPEL Modul anzulegen. Dazu legt man ein neues Projekt an w&#228;hlt im Dialog &quot;SOA&quot; und anschlie&#223;end &quot;BPEL Module&quot;.</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image5.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb5.png" width="237" border="0" /></a>In diesem BPEL Module ben&#246;tigt man nun noch einen BPEL Prozess, den man &#252;ber &quot;New&quot; ganz einfach anlegen kann. Ich habe diesen Prozess ConcatProcess.bpel genannt.</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image6.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="393" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb6.png" width="240" border="0" /></a> </p>
<p>Um diesem neuen BPEL Prozess die zuvor erstellten Web Services aus dem anderen Projekt bekannt zu machen, nutzt man den komfortablen Befehl &#8222;Generate and Copy WDSL&#8220; in dem zuvor erstellten Projekt. Als Ziel w&#228;hlt man ein Verzeichnis in dem BPEL Module. Ich habe dazu ein Verzeichnis &quot;wsdls&quot; angelegt.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image7.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="380" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb7.png" width="242" border="0" /></a> </p>
<p>Die Abbildung links zeigt den momentanen Stand in meinem BPEL Module. Wenn die *Wrapper.wsdls und die *.xsds bei euch noch nicht vorhanden sind, liegt es daran, dass ihr die WebServices noch nicht im Prozess verwendet habt. Diese Dateien werden aber automatische erzeugt und sollten euch nicht verwundern.</p>
<p>Bitte &#252;berpr&#252;ft an dieser Stelle den Code der wsdl Dateien. Denn beim Kopieren wurde ein URL zur&#252;ckgesetzt, die nun angepasst werden muss.</p>
<p>Der folgende Code zeigt das Problem. Die Adress Location soll mit der aktuellen Service URL ersetzt werden.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<pre class="html" name="code">...
<service name="YingServiceService">
<port name="YingServicePort" binding="tns:YingServicePortBinding">
      <soap:address location="REPLACE_WITH_ACTUAL_URL" />
    </port>
  </service>
...</pre>
<pre class="html" name="code">...
<service name="YingServiceService">
<port name="YingServicePort" binding="tns:YingServicePortBinding">
      <soap:address location="http://localhost:8080/TestWS/YingServiceService?wsdl" />
    </port>
  </service>
...</pre>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image8.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="263" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb8.png" width="245" border="0" /></a> </p>
<p>Nun &#246;ffnet man den ConcatProcess.bpel und geht in den Designer Modus. Doch bevor der Process mit Hilfe des Designers erstellt wird, legt man am besten noch ein WSDL Dokument an, dass den BPEL Prozess nach au&#223;en repr&#228;sentiert. <a href="http://www.smash-it.de/blog/wp-content/2009/06/image9.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="225" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb9.png" width="246" border="0" /></a> </p>
<p>Da der ConcatProcess keinen Eingabe-Parameter hat, kann man den Eintrag getrost entfernen.</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image10.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="227" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb10.png" width="248" border="0" /></a> </p>
<p>In diesem Beispiel werden SOAP und der Binding SubType &quot;RPC literal&quot; verwendet.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image11.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="153" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb11.png" width="244" border="0" /></a></p>
<p>In der Abbildung links sieht man erstmalig den Designer auf dem schon der Prozess zu sehen ist. Man kann nun munter die WSDL Datei auf solche Fl&#228;chen ziehen, wie sie im&#160; roten K&#228;stchen zu sehen sind. Die drei WebServices (YingService, YangService und MatchService) zieht man auf die rechten graue Fl&#228;che und das gerade eben erstellte wsdl Dokument auf die linke graue Fl&#228;che.</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image12.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="295" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb12.png" width="247" border="0" /></a></p>
<p>Die linke Abbildung zeigt die Palette mit BPEL Elementen. Uns sollen nur die Element Invoke, Receive, Reply, Assign&#160; und Flow interessieren.</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image13.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="229" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb13.png" width="244" border="0" /></a> </p>
<p>Bitte positioniert die einzelnen Elemente wie links dargestellt in der Oberfl&#228;che. Um die Verbindungslinien zwischen den Elementen k&#252;mmern wir uns in den n&#228;chsten Schritten.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image14.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="145" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb14.png" width="244" border="0" /></a>Zuerst macht man einen Doppelklick auf das Receive Element und nimmt die links abgebildeten Einstellungen vor.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image15.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="147" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb15.png" width="244" border="0" /></a>Als n&#228;chstes macht man ein Doppelklick auf eines der Invoke Element im Flow und erstellt einen Partnerlink zum YingService. Dazu erstellt man sowohl Input als auch Output-Variable. Den Vorgang wiederholt man f&#252;r den YangService.</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image15.png" class="liinternal"></a></p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image16.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="115" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb16.png" width="244" border="0" /></a></p>
<p>Nun klickt man auf das oberste Assign Element und ein Mapper &#246;ffnet sich. In solch einem Mapper kann man die Variablen zwischen zwei Elementen zuordnen. Da wir im Receive keine Variable erhalten haben, erstellen wir String Literale, den Variablen SayYingIn und SayYangIn zugeordnet werden. </p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image17.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="116" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb17.png" width="246" border="0" /></a> Bei dem n&#228;chsten Assign Element sind bereits Variablen vorhanden, sodass die Mapping Pfeile vom linken zum rechten Baum f&#252;hren (siehe Abbildung links). </p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image18.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="182" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb18.png" width="244" border="0" /></a>Im letzten Assign ordnet man die Output Variable des MatchService der Gesamt-Prozess-Output Variable zu, die man vorher im Dialog des Reply Elements erstellt.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image19.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="170" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb19.png" width="244" border="0" /></a>Als n&#228;chstes legen wir ein neues Projekt (Composite Application) an, das sp&#228;ter den BPEL Prozess benutzt.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image20.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="185" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb20.png" width="244" border="0" /></a>Im n&#228;chsten Schritt f&#252;gen wir den erstellten Prozess der Composite Application hinzu.&#160; </p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image21.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="136" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb21.png" width="244" border="0" /></a> </p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image22.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb22.png" width="244" border="0" /></a>Nach dem Hinzuf&#252;gen des Prozesses sollte die Darstellung der Composite Application in etwas so aussehen. </p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image23.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="270" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb23.png" width="248" border="0" /></a>Nun kann es an das Deployment der einzelnen Projekte gehen. Zuerst sollte man den Glassfish Application Server starten. Ich nutze momentan noch den Server in der Version 2. Dieses Tutorial funktioniert aber auch mit der Version 3.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image24.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="301" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb24.png" width="246" border="0" /></a>Als erstes wird das Projekt mit den drei einzelnen WebServices auf dem Server deployed. Dazu reicht ein rechtsklick auf das Projekt und Deploy. Das Deployment dauert einen Augenblick.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image25.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="174" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb25.png" width="244" border="0" /></a> </p>
<p>Das erfolgreiche Deployment &#252;berpr&#252;ft man am besten in der Oberfl&#228;che des Glassfish Servers. Die erreicht man im Browser &#252;ber localhost:4848. Die Anmeldedaten sind standardm&#228;&#223;ig admin und adminadmin. Links unter Web Services sollten die Web Services zu sehen sein.</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image26.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="138" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb26.png" width="248" border="0" /></a>Nun kann man die Composite Application deployen. Diese findet man dann in der Glassfish Oberfl&#228;che unter JBI / Dienstgruppen.</p>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image27.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="145" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb27.png" width="246" border="0" /></a>Zum Testen der Composite Application erstellt man einfach einen WebService Client. In dem Dialog tr&#228;gt man als WSDL URL das folgende ein: </p>
<p><a href="http://localhost:9080/ConcatProcessService/ConcatProcessPort?wsdl" title="http://localhost:9080/ConcatProcessService/ConcatProcessPort?wsdl" class="liexternal">http://localhost:9080/ConcatProcessService/ConcatProcessPort?wsdl</a></p>
<p><a href="http://www.smash-it.de/blog/wp-content/2009/06/image28.png" class="liimagelink"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="image" src="http://www.smash-it.de/blog/wp-content/2009/06/image-thumb28.png" width="244" border="0" /></a></p>
<p>Danach sieht man den Client in der Projektstruktur. Wenn man den Baum so weit wie m&#246;glich &#246;ffnet sieht man die WebService Operation. Zieht man diese Operation mit der Maus in die main Methode sieht man den daraus entstehenden Code. Dieser Code gibt das Ergebnis der WebService Operation per println aus. </p>
<p>&#160;</p>
<p>Ich hoffe dieses Tutorial hat euch geholfen einen BPEL Prozess zu erstellen und zur Ausf&#252;hrung zu bringen. Viel Spa&#223; beim arbeiten mit BPEL!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.smash-it.de/blog/2009/06/tutorial-bpel-prozess-in-netbeans/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
