<?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>YarcRamble</title>
	<atom:link href="http://yarc.name/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://yarc.name/blog</link>
	<description>The ramblings of Yarc</description>
	<lastBuildDate>Mon, 06 Sep 2010 12:41:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Some Oasis WS standards</title>
		<link>http://yarc.name/blog/?p=184</link>
		<comments>http://yarc.name/blog/?p=184#comments</comments>
		<pubDate>Mon, 06 Sep 2010 12:41:56 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=184</guid>
		<description><![CDATA[<p>A small check-list and reminder on some of the central ws security standards;</p>

WS-Security: signing, encrypting and attaching tokens
WS-Trust: deals with security tokens (STS)
WS-SecureConversation: less overhead with frequent secure exchanges
WS-Policy: how to add constraints including reliability, transactions, security.
WS-SecurityPolicy: set constraints on various security attributes like transport level security, required parts to be signed or encrypted, algorithms
WS-Federation: [...]]]></description>
			<content:encoded><![CDATA[<p>A small check-list and reminder on some of the central ws security standards;</p>
<ul>
<li><strong>WS-Security</strong>: signing, encrypting and attaching tokens</li>
<li><strong>WS-Trust</strong>: deals with security tokens (STS)</li>
<li><strong>WS-SecureConversation</strong>: less overhead with frequent secure exchanges</li>
<li><strong>WS-Policy</strong>: how to add constraints including reliability, transactions, security.</li>
<li><strong>WS-SecurityPolicy</strong>: set constraints on various security attributes like transport level security, required parts to be signed or encrypted, algorithms</li>
<li><strong>WS-Federation</strong>: how to broker identity between various realms</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=184</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web service security mechanisms (Metro, WSIT)</title>
		<link>http://yarc.name/blog/?p=165</link>
		<comments>http://yarc.name/blog/?p=165#comments</comments>
		<pubDate>Mon, 06 Sep 2010 12:25:17 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[cx]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=165</guid>
		<description><![CDATA[<p>In project Metro &#8211; a java/glassfish web services stack &#8211; we have the Web Services Interoperability Technologies (WSIT) project. It caters for a number of novel, often security related, web service specifications, like  WS-Trust, WS-SecureConversation, WS-SecurityPolicy, WS-ReliableMessaging, WS-AtomicTransactions/Coordination, WS-MetadataExchange and SOAP over TCP.</p>
<p>These are essential ingredients for an enterprise approach to web service solutions. Usefully, [...]]]></description>
			<content:encoded><![CDATA[<p>In project <a href="https://metro.dev.java.net/">Metro</a> &#8211; a java/glassfish web services stack &#8211; we have the Web Services Interoperability Technologies (<a href="https://wsit.dev.java.net/">WSIT</a>) project. It caters for a number of novel, often security related, web service specifications, like  WS-Trust, WS-SecureConversation, WS-SecurityPolicy, WS-ReliableMessaging, WS-AtomicTransactions/Coordination, WS-MetadataExchange and SOAP over TCP.</p>
<p>These are essential ingredients for an enterprise approach to web service solutions. Usefully, the WSIT team has provided a longish list with explanations on the <a href="https://wsit-docs.dev.java.net/releases/m6/WSIT_Security4.html">different security mechanism</a> options you might employ with WSIT. This is an educational list w.r.t. what one&#8217;s security options in general are for secure messaging. So, let&#8217;s have a brief summary;</p>
<ol>
<li>&#8220;<strong>Username Authentication with Symmetric Keys&#8221;</strong>: Client logs in with username, password. Client generates secret key with servers certificate and shares this with server.</li>
<li><strong>&#8220;Mutual Certificates Security&#8221;</strong>: As with option 1, but this time bidirectionally. The server needs to know the client&#8217;s public certificate to provide a server generated key. Provides additional confidence in the client I guess.</li>
<li><strong>&#8220;Transport Security&#8221;</strong>: Simply using certificates over SSL. Provides transport layer security such that application layer negotiation &#8211; ploicy, tokens, usernames as well as business content &#8211; can be done in privacy.</li>
<li><strong>&#8220;Message Authentication over SSL&#8221;</strong>: Option 3 in addition to that the same certificates are used to send an authentication token with the message. I&#8217;m a bit unclear on what advantages this provides? It is also a bit unclear to me whether this, as is with SAML, one may use a separate identity provider for the generation of the authentication token.</li>
<li><strong>&#8220;SAML Authorization over SSL&#8221;</strong>: Client requests a service. The service issues an authentication request back to the client. The client asks a SAML identity provider for an authentication token. The client forwards the token and requests the service again. Note that you don&#8217;t need to use a separate token service; the client may form the SAML assertion itself.</li>
<li><strong>&#8220;Endorsing certificate&#8221;</strong>: A third party is used to countersign the message. The client asks a third party to countersign the message and the server verifies.</li>
<li><strong>&#8220;SAML Sender Vouches with certificates&#8221;</strong>: A variant of the normal SAML, but where there is an intermediary acting on behalf of the end-user.<em> The underlying problem here is to make sure that the SAML assertion corresponds to the SOAP request, i.e. that the request actually originates from the subject of the SAML assertion (Thanks to<a href="http://www.jroller.com/gmazza/entry/saml_subject_confirmation_methods_holder"> Glen Mazza</a> for putting this in simple terms)</em>. In this case, an intermediary takes care of signing and packaging the SAML assertion and the SOAP request on behalf of a client. The client has typically been authenticated with the intermediary using some other means.</li>
<li><strong>&#8220;SAML Holder-of-Key (HOK)&#8221;</strong>: In difference to option 7, here the client itself signs the SAML assertion and SOAP request package, making it possible to verify that the request originates from the subject of the SAML assertion.</li>
<li><strong>&#8220;Secure Token Service (STS) issued token&#8221;</strong>: The client asks an STS identity provider for an authentication token. The client  forwards the token and requests the service.</li>
</ol>
<p>It seems a bit confusing to mix message level security (ws-security) and transport level security in the same list of mechanisms. I reason one might have message level security with or without transport level security. And vice versa. Generally it  seems that you have</p>
<ul>
<li>basic authentication,</li>
<li>certificates/pki</li>
<li>a third party serving as an identity provider (<a href="http://msdn.microsoft.com/en-us/library/ff650503.aspx">Brokered Authentication</a>) and an</li>
<li>endorsing mechanism.</li>
</ul>
<p>In addition you may have transport layer security.</p>
<p>Another issue regards the difference between SAML and STS. My understanding is that the SAML protocol specifies</p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=165</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>32% civilian death rate in drone attacks on pakistani soil?</title>
		<link>http://yarc.name/blog/?p=153</link>
		<comments>http://yarc.name/blog/?p=153#comments</comments>
		<pubDate>Fri, 02 Jul 2010 06:50:31 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[pakistan]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=153</guid>
		<description><![CDATA[<p>Boingboing writes:</p>
<p>&#8220;Our study shows that the 114 reported drone strikes in northwest Pakistan, including 18 in 2010, from 2004 to the present have killed approximately between 834 and 1,216 individuals, of whom around 549 to 849 were described as militants in reliable press accounts, about 2/3 of total on average. Thus, the true civilian fatality [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://boingboing.net/2010/03/04/us-drone-attacks-in.html">Boingboing</a> writes:</p>
<blockquote><p>&#8220;Our study shows that the 114 reported drone strikes in northwest Pakistan, including 18 in 2010, from 2004 to the present have killed approximately between 834 and 1,216 individuals, of whom around 549 to 849 were described as militants in reliable press accounts, about 2/3 of total on average. Thus, the true civilian fatality rate since 2004 according to our analysis is approximately 32%.&#8221;.</p></blockquote>
<p>They themselves quote http://counterterrorism.newamerica.net/drones.</p>
<p>It&#8217;s clearly hard to separate facts from fiction here. But 1/3 civilian casualty rate, if roughly right, is hard to justify I&#8217;d say.</p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=153</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>soap 1.1 vs soap 1.2 content types</title>
		<link>http://yarc.name/blog/?p=156</link>
		<comments>http://yarc.name/blog/?p=156#comments</comments>
		<pubDate>Thu, 01 Jul 2010 11:10:27 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[cx]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=156</guid>
		<description><![CDATA[<p>Playing around with Metro, I get this error in my tomcat log;</p>
SEVERE: Unsupported Content-Type: application/soap+xml Supported ones are: [text
/xml]
<p>I scratch my head, and find that</p>
<p>&#8220;These errors are related to SOAP 1.1 or 1.2 versions:
SOAP 1.1 uses text/xml
SOAP 1.2 uses application/soap+xml&#8221;</p>
<p>thanks to Adrian.</p>
<p>
</p>
]]></description>
			<content:encoded><![CDATA[<p>Playing around with <a href="https://metro.dev.java.net/">Metro</a>, I get this error in my <a href="http://tomcat.apache.org/">tomcat</a> log;</p>
<pre>SEVERE: Unsupported Content-Type: application/soap+xml Supported ones are: [text
/xml]</pre>
<p>I scratch my head, and find that</p>
<blockquote><p>&#8220;These errors are related to <strong>SOAP</strong> 1.1 or 1.2 versions:<br />
<strong>SOAP</strong> 1.1 uses text/<strong>xml</strong><br />
<strong>SOAP</strong> 1.2 uses <strong>application</strong>/<strong>soap</strong>+<strong>xml&#8221;</strong></p></blockquote>
<p>thanks to <a href="http://old.nabble.com/Unsupported-Content-Type:-text-xml--charset%3D%22utf-8%22-td22676562.html">Adrian</a>.</p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=156</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get subdirs from wget and getting past robot disallows</title>
		<link>http://yarc.name/blog/?p=146</link>
		<comments>http://yarc.name/blog/?p=146#comments</comments>
		<pubDate>Sat, 19 Jun 2010 05:46:18 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[cygwin]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=146</guid>
		<description><![CDATA[<p>I&#8217;m going to a place where there is no net, and was thinking of reading the metro manual. A naive approach</p>
$ wget -r https://metro.dev.java.net/guide/
<p>gets me nowhere however, as wget stops pretty fast and leaves a file that states</p>
User-agent: CEE
Disallow:
User-agent: *
Disallow: /
<p>I can do &#8216;-e robots=off&#8217; mixed with some stuff from  Voelkers excellent wget examples:</p>
wget -P [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to a place where there is no net, and was thinking of reading the <a href="https://metro.dev.java.net/guide/">metro</a> manual. A naive approach</p>
<pre>$ wget -r https://metro.dev.java.net/guide/</pre>
<p>gets me nowhere however, as wget stops pretty fast and leaves a file that states</p>
<pre>User-agent: CEE</pre>
<pre>Disallow:
User-agent: *</pre>
<pre>Disallow: /</pre>
<p>I can do &#8216;-e robots=off&#8217; mixed with some stuff from  <a href="http://doc.univ.kiev.ua/documentation/howto%20wget/index.html">Voelkers</a> excellent wget examples:</p>
<pre>wget -P guide -e robots=off -r -p -k --no-parent -nH --cut-dirs=1 -e robots=off https://metro.dev.java.net/guide/</pre>
<p>That does the trick.</p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=146</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mda for integration</title>
		<link>http://yarc.name/blog/?p=143</link>
		<comments>http://yarc.name/blog/?p=143#comments</comments>
		<pubDate>Tue, 15 Jun 2010 19:36:51 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[cx]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=143</guid>
		<description><![CDATA[<p>On a project I work on, we&#8217;re doing something I&#8217;ve only done as student exercises and never in a large scale commercial project. All interfaces that are exposed and used by external agents are development-wise managed by a model driven architecture (MDA). All web services exposed and file transfers that are shared with some external [...]]]></description>
			<content:encoded><![CDATA[<p>On a project I work on, we&#8217;re doing something I&#8217;ve only done as student exercises and never in a large scale commercial project. All interfaces that are exposed and used by external agents are development-wise managed by a model driven architecture (MDA). All web services exposed and file transfers that are shared with some external partner is governed this way. Let&#8217;s for brevity name all these <em>exposed services</em>. Architecturally, there is a separate integration server that handles all <em>exposed services</em> and there is an application server that relates to this integration server.</p>
<ul>
<li>Now, we maintain a UML model of the exposed services, it&#8217;s dependent objetcs, as well as the service interfaces between the integration server and the application server.</li>
<li>We then use<a href="http://www.andromda.org/index.php"> Andromda</a> to transform the model to java source code, produce wsdl and xsds and the like.
<ul>
<li> We use a custom cartridge dependent on <a href="http://freemarker.sourceforge.net/">Freemarker</a> as a template engine for producing these source files.</li>
</ul>
</li>
</ul>
<p>So what do we gain by this?</p>
<p>I&#8217;m not entirely sure. We&#8217;ve sort of inherited this unusual and fancy setup. A common problem with integration work is that definitions and terms are maintained separately in on each agent being part of the relation and as such needs to be kept in synch. E.g. if an object definition changes then all its serializations, be it xsd or java, needs to be updated and on all hosts that partake in some exchange based on this object.</p>
<p>With an MDA approach which spans multiple hosts, one needs only one update however, and then the andromda wizardry will take care of that all serializations of this definition are generated and are identical.</p>
<p>One may counter however, that with a traditional dependent project (a jar or a maven2 pom) which contains the shared definitions, then all that synchronization work will do itself. And that&#8217;s probably true. But without some custom script, code or other magic, you won&#8217;t get synchronized xsd&#8217;s (and possibly wsdl&#8217;s if you embed your xsd&#8217;s).</p>
<p>Still, the advantage is debatable given the cost of maintaining and configuring the andromda and custom cartridges though.</p>
<p>Finally, you get very nice documentation and overviews.  It is easier for a newbie to see the totality and understand the scope of the system.</p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=143</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hiding fullscreen citrix in linux</title>
		<link>http://yarc.name/blog/?p=140</link>
		<comments>http://yarc.name/blog/?p=140#comments</comments>
		<pubDate>Fri, 11 Jun 2010 09:01:40 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[citrix]]></category>
		<category><![CDATA[cx]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu 64 bit]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=140</guid>
		<description><![CDATA[<p>I remote to various workplaces over citrix. I&#8217;d prefer other technologies, but that&#8217;s another story. I work in fullscreen. But, I often need to switch out of my citrix environment and back to the linux host to do other things. This does the trick;</p>

ctrl-f2, tells citrix that the next keystroke is to be passed through
alt-f9, [...]]]></description>
			<content:encoded><![CDATA[<p>I remote to various workplaces over citrix. I&#8217;d prefer other technologies, but that&#8217;s another story. I work in fullscreen. But, I often need to switch out of my citrix environment and back to the linux host to do other things. This does the trick;</p>
<ul>
<li>ctrl-f2, tells citrix that the next keystroke is to be passed through</li>
<li>alt-f9, this makes gnome pack away the window.</li>
</ul>
<p>Thanks to <a href="http://forums.citrix.com/thread.jspa?threadID=249493&amp;tstart=0">Scott McDonald</a> for this handy tip.</p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=140</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mule debug and config files</title>
		<link>http://yarc.name/blog/?p=137</link>
		<comments>http://yarc.name/blog/?p=137#comments</comments>
		<pubDate>Sat, 05 Jun 2010 19:03:38 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[cx]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[mule]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=137</guid>
		<description><![CDATA[<p>1. You may attach a debugger by editing the wrapper.conf file;</p>
wrapper.java.additional.3=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
<p>Additionally, I added to the invocation of mule a -debug flag, e.g. in the hello example;</p>
 exec "$MULE_BASE/bin/mule" -debug -config hello-http-config.xml
<p>2. Let&#8217;s look at the hello example; The config.xml file consists of a set of definitional items, e.g.</p>
 &#60;custom-transformer name="StringToNameString"/&#62;
<p>and then continues [...]]]></description>
			<content:encoded><![CDATA[<p>1. You may attach a debugger by editing the wrapper.conf file;</p>
<pre>wrapper.java.additional.3=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005</pre>
<p>Additionally, I added to the invocation of mule a -debug flag, e.g. in the hello example;</p>
<pre> exec "$MULE_BASE/bin/mule" -debug -config hello-http-config.xml</pre>
<p>2. Let&#8217;s look at the hello example; The config.xml file consists of a set of definitional items, e.g.</p>
<pre> &lt;custom-transformer name="StringToNameString"/&gt;</pre>
<p>and then continues with a model which consists of a set of services;</p>
<pre>&lt;model name="helloSample"&gt;</pre>
<pre> &lt;service name="GreeterUMO"&gt;</pre>
<pre> &lt;/service&gt;</pre>
<pre>
 &lt;service name="ChitChatUMO"&gt;</pre>
<pre> &lt;/service&gt;</pre>
<pre>
 &lt;service name="UserErrorHandler"&gt;</pre>
<pre> &lt;/service&gt;</pre>
<pre>
 &lt;service name="SystemErrorHandler"&gt;</pre>
<pre> &lt;/service&gt;</pre>
<pre>
 &lt;/model&gt;</pre>
<pre>
</pre>
<p>Each service seems to feature an &lt;inbound&gt;, a &lt;component&gt; and an &lt;outbound&gt; section;</p>
<pre> &lt;inbound&gt;</pre>
<pre> &lt;inbound-endpoint address="http://localhost:8888" transformer-refs="HttpRequestToNameString" synchronous="true"&gt;</pre>
<pre> &lt;/inbound-endpoint&gt;</pre>
<pre>
 &lt;inbound-endpoint address="servlet://name" transformer-refs="HttpRequestToNameString" synchronous="true"&gt;</pre>
<pre> &lt;/inbound-endpoint&gt;</pre>
<pre> &lt;inbound-endpoint address="servlet://rest" transformer-refs="HttpRequestToParameter StringToNameString" responseTransformer-refs="PlainTextResponseTransformer" synchronous="true"/&gt;</pre>
<pre>
</pre>
<pre> &lt;vm:inbound-endpoint path="greeter" transformer-refs="StringToNameString" synchronous="true"/&gt;</pre>
<pre> &lt;/inbound&gt;</pre>
<pre>
 &lt;component/&gt;</pre>
<pre>
 &lt;outbound&gt;</pre>
<pre> &lt;filtering-router&gt;</pre>
<pre> &lt;vm:outbound-endpoint path="chitchatter" synchronous="true"/&gt;</pre>
<pre> &lt;payload-type-filter expectedType="org.mule.example.hello.NameString"/&gt;</pre>
<pre> &lt;/filtering-router&gt;</pre>
<pre>
 &lt;filtering-router&gt;</pre>
<pre> &lt;vm:outbound-endpoint path="userErrorHandler" synchronous="true"/&gt;</pre>
<pre> &lt;payload-type-filter expectedType="java.lang.Exception"/&gt;</pre>
<pre> &lt;/filtering-router&gt;</pre>
<pre> &lt;/outbound&gt;</pre>
<pre>
 &lt;!-- Route unexpected errors to separate error handler --&gt;</pre>
<pre> &lt;default-service-exception-strategy&gt;</pre>
<pre> &lt;vm:outbound-endpoint path="systemErrorHandler"/&gt;</pre>
<pre> &lt;/default-service-exception-strategy&gt;</pre>
<pre>
</pre>
<p>You may, it seems define multiple inbound-endpoints. It seems there is a vm:inbound-endpoint for every service and which precedes the component part.</p>
<p>2.1. outbound and inbound endpoints seem to match on path, e.g.</p>
<pre> &lt;vm:outbound-endpoint path="chitchatter" synchronous="true"/&gt;</pre>
<p>matches</p>
<pre>&lt;vm:inbound-endpoint path="chitchatter" ../&gt;</pre>
<p>2.2. Which method on components are called? Seems there is a fair amount of reflection going on. With the</p>
<pre> &lt;service name="ChitChatUMO"&gt;</pre>
<pre> &lt;inbound&gt;</pre>
<pre> &lt;vm:inbound-endpoint path="chitchatter" transformer-refs="NameStringToChatString" responseTransformer-refs="ChatStringToString" synchronous="true"/&gt;</pre>
<pre> &lt;/inbound&gt;</pre>
<pre> &lt;component/&gt;</pre>
<pre> &lt;/service&gt;</pre>
<pre>
</pre>
<p>mule will pick a unique public method from ChitChatter that doesn&#8217;t match</p>
<p>&#8220;ignoredMethods=[getClass, clone, equals, hashCode, getInvocationHandler, get*, wait, is*, notify, toString, notifyAll]&#8221;</p>
<p>If there are more than one match, you add a method parameter, url style;</p>
<pre> &lt;vm:inbound-endpoint path="chitchatter?method=chat1"../&gt;</pre>
<p>2.3. How does Mule know which types to use when calling and filtering?</p>
<p>a. In &lt;inbound-endpoint address=&#8221;http://localhost:8888&#8243; transformer-refs=&#8221;HttpRequestToNameString&#8221; synchronous=&#8221;true&#8221;&gt;</p>
<p>HttpRequestToNameString is an AbstractTranformer and returns a NameString.</p>
<p>b. Greeter.greet(NameString) receives this data.</p>
<p>c. In the filtering-router, the router selects according to type; &lt;payload-type-filter expectedType=&#8221;org.mule.example.hello.NameString&#8221;/&gt;</p>
<p>d. in  &lt;vm:inbound-endpoint path=&#8221;chitchatter&#8221; transformer-refs=&#8221;NameStringToChatString&#8221; responseTransformer-refs=&#8221;ChatStringToString&#8221; synchronous=&#8221;true&#8221;/&gt; the component class is called after the transformer NameStringToChatString is called. Input is then ok.</p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=137</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unagile TOGAF</title>
		<link>http://yarc.name/blog/?p=132</link>
		<comments>http://yarc.name/blog/?p=132#comments</comments>
		<pubDate>Sat, 22 May 2010 07:10:21 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[architecture]]></category>
		<category><![CDATA[cx]]></category>
		<category><![CDATA[togaf]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=132</guid>
		<description><![CDATA[<p>I&#8217;m TOGAF certifying myself. Going through an 800 page book. Authorless by the way. A set of contributors are listed, but there are no editors and authors per se. That&#8217;s quite unusual.</p>
<p>Anyway, one cannot help but think of how software engineering was before agile came along, when one works with this framework. A majority of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m TOGAF certifying myself. Going through an 800 page book. Authorless by the way. A set of contributors are listed, but there are no editors and authors per se. That&#8217;s quite unusual.</p>
<p>Anyway, one cannot help but think of how software engineering was before agile came along, when one works with this framework. A majority of the methodological steps are about defining things (architectures and all that follows). As opposed to implementing and realizing. And the number of documents and textual deliverables is staggering. It seems so cumbersome and bureaucratic. It reminds me of the definitions, plans and specifications that were prescribed by pre-agile software development methods.</p>
<p>Now, the proponents of TOGAF will surely put forward that the framework must be tailored to the needs and constraints of the business and case at hand. And that one may, given the right circumstance, skip and trim to make the process lighter. Hmm.</p>
<p>That echoes arguments we heard from pre-agile s/w development method proponents when agile came with it&#8217;s fairly revolutionary approach as well.  And then there were the chorus from pre-agile s/w development method proponents saying that the agile way would go off the rails and it would be chaos without clear definitions and full specifications before the actual development could start.</p>
<p>I realize that enterprise architectural work is quite different from software development. And it might be that in fact you need to be as stringent and document centric as TOGAF prescribes.</p>
<p>But still..</p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=132</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>reuse of visual content in java projects</title>
		<link>http://yarc.name/blog/?p=128</link>
		<comments>http://yarc.name/blog/?p=128#comments</comments>
		<pubDate>Fri, 05 Mar 2010 13:19:55 +0000</pubDate>
		<dc:creator>yarc</dc:creator>
				<category><![CDATA[cx]]></category>
		<category><![CDATA[facelets]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://yarc.name/blog/?p=128</guid>
		<description><![CDATA[<p>Hm.. what are my options when you want to reuse some visual content rendered by some other runtime component?</p>
<p>Let&#8217;s say you have war A that renders some pages. Let&#8217;s say you&#8217;re writing another war (B)  and you suddenly want to reuse some ot the content from A. Let&#8217;s say you want to inherit, but also [...]]]></description>
			<content:encoded><![CDATA[<p>Hm.. what are my options when you want to reuse some visual content rendered by some other runtime component?</p>
<p>Let&#8217;s say you have war A that renders some pages. Let&#8217;s say you&#8217;re writing another war (B)  and you suddenly want to reuse some ot the content from A. Let&#8217;s say you want to inherit, but also tweak. Parameterize I guess. I could..</p>
<ul>
<li>do: jstl &lt;c:import url=&#8221;&lt;absolute or relative url&gt;&#8221;/&gt;in a jsp page. This includes<em> rendered</em> content however, so you don&#8217;t get to influence the content before rendering.</li>
</ul>
<ul>
<li>do: <code>response.sendRedirect(&lt;absolute or relative url</code><code>);</code> on the server side. Ditto disadvantage as above.</li>
<li>make a jsp taglib. I principle I guess you may put anything in the start and end tag methods, but in practice it is at best an unelegant method for reusing visual content with some size and layout</li>
<li>use maven2&#8217;s <a href="http://maven.apache.org/plugins/maven-war-plugin/overlays.html">war plugin&#8217;s overlay</a> functionality. This works, but is somewhat crude, and requires good control over naming and directories.</li>
<li>make a (jsf 2.0+) facelet taglib. No disadvantages, but a huge added bonus that you may include all kinds of fancy layout and composition as you would normally do with facelets. And paramterization works just fine. <img src='http://yarc.name/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </li>
</ul>
<p>So this last option is the only good option in my opinion. Let&#8217;s have a look;</p>
<h2>Component A</h2>
<p>In web.xml you define the taglib;</p>
<pre>&lt;context-param&gt;
 &lt;param-name&gt;javax.faces.FACELETS_LIBRARIES&lt;/param-name&gt;
 &lt;param-value&gt;
 /META-INF/mfoTags.taglib.xml
 &lt;/param-value&gt;
 &lt;/context-param&gt;</pre>
<p>In META-INF (<em>nowhere else</em>, or the inter-module/war dependency will not work) you define mfoTags.taglib.xml (and it <em>needs</em> to have both taglib and xml as postfixes) :</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
 &lt;facelet-taglib&gt;
 &lt;namespace&gt;http://yarc.name/mfoFaceletTags&lt;/namespace&gt;
 &lt;tag&gt;
 &lt;tag-name&gt;siteNav&lt;/tag-name&gt;
 &lt;source&gt;../WEB-INF/tags/siteNav.xhtml&lt;/source&gt;
 &lt;/tag&gt;
 &lt;/facelet-taglib&gt;
</pre>
<p>..and you need (at least) an empty faces-config.xml:</p>
<pre>&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE faces-config PUBLIC
 "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
 "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"&gt;
&lt;faces-config&gt;
&lt;/faces-config&gt;
</pre>
<p>Finally, you need to package this as a jar (not a war). My solution here was to make a symbolic link since I wanted component A to remain a war since it is used as a war component on it&#8217;s own.</p>
<p>That&#8217;s it. Now for the user of this component;</p>
<h2>Component B</h2>
<p><!-- template.xhtml -->You need to include a classpath ref to the above mentioned jar.</p>
<p>In the .xhtml file you&#8217;re going to refer to the facelet tag</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
 &lt;html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:ui="http://java.sun.com/jsf/facelets"
 xmlns:mf="http://yarc.name/mfoFaceletTags"

...

&gt;
 &lt;head&gt;
 &lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;
 ...
 &lt;/head&gt;
 &lt;body&gt;
 ...
 &lt;mf:siteNav/&gt;
 &lt;/body&gt;
 &lt;/html&gt;
</pre>
<p>&#8211;</p>
<p>If that isn&#8217;t simple and beautiful, then I don&#8217;t know what. Almost poetry. <img src='http://yarc.name/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Week-end time!</p>
<p>Thanks to <a href="http://www.laliluna.de/articles/jsf-2-evaluation-test.html">Laliluna</a> for small tricks and hints and the excellent<a href="https://facelets.dev.java.net/nonav/docs/dev/docbook.html"> facelet documentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://yarc.name/blog/?feed=rss2&amp;p=128</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
