<?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>Rafael Liu Blog &#187; endorsed</title>
	<atom:link href="http://rafaelliu.net/tag/endorsed/feed/" rel="self" type="application/rss+xml" />
	<link>http://rafaelliu.net</link>
	<description>Café, pinguins e outras coisas</description>
	<lastBuildDate>Wed, 28 Mar 2012 21:54:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>setProperty must be overridden by all subclasses of SOAPMessage</title>
		<link>http://rafaelliu.net/2008/05/08/setproperty-must-be-overridden-by-all-subclasses-of-soapmessage/</link>
		<comments>http://rafaelliu.net/2008/05/08/setproperty-must-be-overridden-by-all-subclasses-of-soapmessage/#comments</comments>
		<pubDate>Fri, 09 May 2008 01:19:14 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Web Services]]></category>
		<category><![CDATA[endorsed]]></category>
		<category><![CDATA[jboss 4]]></category>
		<category><![CDATA[jboss 5]]></category>
		<category><![CDATA[SAAJ]]></category>
		<category><![CDATA[UnsupportedOperationException]]></category>

		<guid isPermaLink="false">http://rafaelliu.wordpress.com/?p=11</guid>
		<description><![CDATA[Tive recentemente que fazer uma prova de conceito, usando web services. Criei uma aplicação usando JAX-WS no JBoss 4.2.2 rodando na JDK 6 da Sun e me deparei um a seguinte exceção: java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage at javax.xml.soap.SOAPMessage.setProperty&#40;SOAPMessage.java:424&#41; at org.jboss.ws.core.soap.SOAPMessageImpl.&#60;init&#62;&#40;SOAPMessageImpl.java:83&#41; at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage&#40;MessageFactoryImpl.java:161&#41; Pesquisando um pouco achei vários relatos similares [...]]]></description>
			<content:encoded><![CDATA[<p>Tive recentemente que fazer uma prova de conceito, usando web services. Criei uma aplicação usando JAX-WS no JBoss 4.2.2 rodando na JDK 6 da Sun e me deparei um a seguinte exceção:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">UnsupportedOperationException</span><span style="color: #339933;">:</span> setProperty must be overridden by all subclasses of SOAPMessage
at javax.<span style="color: #006633;">xml</span>.<span style="color: #006633;">soap</span>.<span style="color: #006633;">SOAPMessage</span>.<span style="color: #006633;">setProperty</span><span style="color: #009900;">&#40;</span>SOAPMessage.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">424</span><span style="color: #009900;">&#41;</span>
at org.<span style="color: #006633;">jboss</span>.<span style="color: #006633;">ws</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">soap</span>.<span style="color: #006633;">SOAPMessageImpl</span>.<span style="color: #339933;">&lt;</span>init<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span>SOAPMessageImpl.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">83</span><span style="color: #009900;">&#41;</span>
at org.<span style="color: #006633;">jboss</span>.<span style="color: #006633;">ws</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">soap</span>.<span style="color: #006633;">MessageFactoryImpl</span>.<span style="color: #006633;">createMessage</span><span style="color: #009900;">&#40;</span>MessageFactoryImpl.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">161</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>Pesquisando um pouco achei vários relatos similares e até <a href="http://jira.jboss.org/jira/browse/JBWS-1439" target="_blank">uma entrada no JIRA</a>. A classe SOAPMessage é da biblioteca SAAJ, e o problema é entre o JBoss e a JDK 6. Até a versão 6, essa biblioteca era distruida separadamente, mas na nova versão ela já vem integrada. O problema é que o JBoss já possui uma implementação própria dessa biblioteca e ao se carregar o SOAPMessage a biblioteca da Sun é utilizada, a qual está implementada de forma lançar um UnsupportedOperationException.</p>
<p>Uma solução é usar o esquema de <em>endorsed</em> da JVM. Bibliotecas <em>endorsed</em> são carregadas antes, tendo prioridade então sobre quaisquer outras bibliotecas. Assim, basta adicionarmos o jboss-saaj.jar (em &lt;CONFIG_HOME&gt;/lib) ao &lt;JBOSS_HOME&gt;/lib/endorsed. O script run.sh define a variável JBOSS_ENDORSED_DIRS=&#8221;$JBOSS_HOME/lib/endorsed&#8221; e cuida de setar esse diretório na propriedade java.endorsed.dirs da JVM.</p>
<h4>Mas eu estou rodando o JBoss para JDK 6! (EDIT)</h4>
<p>Existe uma &#8220;peculiaridade&#8221; se você estiver rodando o JBoss 5 para JDK 6 no WTP do Eclipse. O JBoss 5 usa o $JBOSS_HOME/lib/endorsed como o java.endorsed.dirs, setando esse parâmetro quando executamos o $JBOSS_HOME/bin/run.sh. O problema quando executamos via WTP é que o eclipse não usar o run.sh, portanto não seta o diretório endorsed e caímos no mesmo problema do JBoss 4.</p>
<p>Para resolver o problema basta clicar no &#8220;launch configuration&#8221; do servidor e adicionar o seguinte parâmetro no &#8220;VM arguments&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">-Djava.endorsed.dirs=..<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>endorsed</pre></div></div>

<p><strong>IMPORTANTE:</strong> O JBoss não é oficialmente suportado na JDK 6 e outros imprevistos podem vir a ocorrer. Recomenda-se utilizar a JDK 5, ao invés.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2008/05/08/setproperty-must-be-overridden-by-all-subclasses-of-soapmessage/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

