<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Problem with @XmlJavaTypeAdapter
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/haza">Umit Gezer</a> in <i>JBoss Web Services Metro</i> - <a href="http://community.jboss.org/message/538876#538876">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hi All,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I'm coding a set of web services and having some problems when using @XmlJavaTypeAdapter.</p><p>Here is the exception I get when I try to deploy to JBoss 5.1 and jbossmetro 3.2.2.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>{quote}</p><p>09:09:30,571 INFO&#160; [server] Dynamically creating request wrapper Class au.com.finsyn.acuritywebservices.services.member.jaxws.GetMemberDetails<br/>09:09:30,571 INFO&#160; [server] Dynamically creating response wrapper bean Class au.com.finsyn.acuritywebservices.services.member.jaxws.GetMemberDetailsResponse<br/>09:09:30,602 ERROR [AbstractKernelController] Error installing to Real: name=vfszip:/C:/jboss-5.1.0.GA/server/default/deploy/AcurityWebServices.war/ state=PreReal mode=Manual requiredState=Real<br/>org.jboss.deployers.spi.DeploymentException: Error during deploy: vfszip:/C:/jboss-5.1.0.GA/server/default/deploy/AcurityWebServices.war/</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.spi.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:49)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:177)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:362)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:255)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.lang.Thread.run(Thread.java:619)<br/>Caused by: javax.xml.ws.WebServiceException: Failed to build METRO runtime model<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.wsf.stack.metro.metadata.RuntimeModelDeploymentAspect.start(RuntimeModelDeploymentAspect.java:134)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer.internalDeploy(WSDeploymentAspectDeployer.java:107)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; ... 24 more<br/>Caused by: javax.xml.ws.WebServiceException: java.lang.IllegalArgumentException: value class au.com.finsyn.acuritywebservices.utils.MapAdapter<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.model.WrapperBeanGenerator.createResponseWrapperBean(WrapperBeanGenerator.java:280)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.model.RuntimeModeler.getResponseWrapperClass(RuntimeModeler.java:304)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.model.RuntimeModeler.processDocWrappedMethod(RuntimeModeler.java:699)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.model.RuntimeModeler.processMethod(RuntimeModeler.java:623)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.model.RuntimeModeler.processClass(RuntimeModeler.java:412)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:251)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:323)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:189)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:467)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.wsf.stack.metro.DeploymentDescriptorParserExt.parseAdapters(DeploymentDescriptorParserExt.java:295)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.wsf.stack.metro.DeploymentDescriptorParserExt.parse(DeploymentDescriptorParserExt.java:171)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.wsf.stack.metro.metadata.RuntimeModelDeploymentAspect.start(RuntimeModelDeploymentAspect.java:110)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; ... 27 more<br/>Caused by: java.lang.IllegalArgumentException: value class au.com.finsyn.acuritywebservices.utils.MapAdapter<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.org.objectweb.asm.ClassWriter.newConstItem(ClassWriter.java:893)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.org.objectweb.asm.AnnotationWriter.visit(AnnotationWriter.java:185)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.model.WrapperBeanGenerator.createBeanImage(WrapperBeanGenerator.java:122)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at com.sun.xml.ws.model.WrapperBeanGenerator.createResponseWrapperBean(WrapperBeanGenerator.java:276)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; ... 38 more<br/>09:09:30,946 WARN&#160; [HDScanner] Failed to process changes<br/>org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>*** DEPLOYMENTS IN ERROR: Name -&gt; Error</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>vfszip:/C:/jboss-5.1.0.GA/server/default/deploy/AcurityWebServices.war/ -&gt; org.jboss.deployers.spi.DeploymentException: Error during deploy: vfszip:/C:/jboss-5.1.0.GA/server/default/deploy/AcurityWebServices.war/</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>DEPLOYMENTS IN ERROR:<br/>&#160; Deployment "vfszip:/C:/jboss-5.1.0.GA/server/default/deploy/AcurityWebServices.war/" is in error due to the following reason(s): java.lang.IllegalArgumentException: value class au.com.finsyn.acuritywebservices.utils.MapAdapter</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:993)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:939)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:873)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.checkComplete(MainDeployerAdapter.java:128)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:369)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:255)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; at java.lang.Thread.run(Thread.java:619)</p><p>{quote}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>And below are some code snippets:</p><p>{code}</p><p>@WebService()<br/>public class Member</p><p>{</p><p>&#160;&#160;&#160; @WebMethod(operationName = "getMemberDetails")<br/>&#160;&#160;&#160; @XmlJavaTypeAdapter(MapAdapter.class)<br/>&#160;&#160;&#160; public Map&lt;String, String&gt; getMemberDetails(@WebParam(name = "fundCode") String MDz_Fund,<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; @WebParam(name = "memberCode") String MDz_Member)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throws AcurityWebServiceException<br/>&#160;&#160;&#160; {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; ...<br/>&#160;&#160;&#160; }</p><p>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>public class MapAdapter extends XmlAdapter&lt;MapElement[], Map&lt;String, String&gt;&gt;<br/>{</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; @Override<br/>&#160;&#160;&#160; public MapElement[] marshal(Map&lt;String, String&gt; map) throws Exception<br/>&#160;&#160;&#160; {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; MapElement[] mapElements = new MapElement[map.size()];</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; int i = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (Map.Entry&lt;String, String&gt; entry : map.entrySet())<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mapElements[i++] = new MapElement(entry.getKey(), entry.getValue());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return mapElements;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; @Override<br/>&#160;&#160;&#160; public Map&lt;String, String&gt; unmarshal(MapElement[] elementsList) throws Exception<br/>&#160;&#160;&#160; {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; Map&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; for (MapElement mapelement : elementsList)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; map.put(mapelement.key, mapelement.value);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return map;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public static class MapElement<br/>&#160;&#160;&#160; {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; @XmlElement<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; public String key;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; @XmlElement<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; public String value;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; private MapElement()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; } //Required by JAXB</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; public MapElement(String key, String value)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.key = key;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.value = value;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160; }<br/>}</p><p>{code}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>So, what am I doing wrong? The above code works fine in glassfish. But not JBoss.</p><p>Can anyone help?</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/538876#538876">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Web Services Metro at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2045">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>