<!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="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss 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;">
    NullPointerException in JAXWSMetaDataBuilder
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/xdury">Xavier Dury</a> in <i>JBoss Web Services</i> - <a href="https://community.jboss.org/message/772265#772265">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,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I'm using jboss 5.1.0 and I'm trying to attach a custom SOAPHandler to a WebService reference injected in an EJB:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>@Stateless</p><p>public class MyServiceBean implements MyService {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; @WebServiceRef(name = "services/MyWebService")</p><p>&#160;&#160;&#160; private MyWebServicePortType myWebService;</p><p>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>in jboss.xml:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&lt;session&gt;</p><p>&#160;&#160; &lt;ejb-name&gt;MyServiceBean &lt;/ejb-name&gt;</p><p>&#160;&#160; &lt;service-ref&gt;</p><p>&#160;&#160;&#160; &lt;service-ref-name&gt;services/MyWebService&lt;/service-ref-name&gt;</p><p><span>&#160;&#160;&#160; &lt;service-qname&gt;{</span><a class="jive-link-external-small" href="http://mycompany.com/MyWebService" target="_blank">http://mycompany.com/MyWebService</a><span>}MyWebService&lt;/service-qname&gt;</span></p><p>&#160;&#160;&#160; &lt;handler-chain&gt;jbossws-client-handlers.xml&lt;/handler-chain&gt;</p><p><span>&#160;&#160;&#160; &lt;wsdl-override&gt;</span><a class="jive-link-external-small" href="http://myserver/myservice?wsdl" target="_blank">http://myserver/myservice?wsdl</a><span>&lt;/wsdl-override&gt;</span></p><p>&#160; &lt;/service-ref&gt;</p><p>&lt;/session&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>When I call a method on my EJB which uses the WS, I get:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>java.lang.RuntimeException: Unable to inject jndi dependency: env/services/MyWebService into property com.mycompany.MyServiceBean.myWebService: null</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:82)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:99)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:89)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:61)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.injection.InjectionInvocation.invokeTarget(InjectionInvocation.java:89)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.injection.InjectionInvocation.invokeNext(InjectionInvocation.java:83)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.injection.InjectionInvocation.invokeNext(InjectionInvocation.java:74)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.EJBContainer.injectBeanContext(EJBContainer.java:1086)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.pool.AbstractPool.create(AbstractPool.java:83)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:56)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.InfinitePool.get(InfinitePool.java:51)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.pool.ThreadlocalPool.create(ThreadlocalPool.java:53)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.pool.ThreadlocalPool.get(ThreadlocalPool.java:93)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:58)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.security.RunAsSecurityInterceptorv2.invoke(RunAsSecurityInterceptorv2.java:94)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptorv2.invoke(RoleBasedAuthorizationInterceptorv2.java:201)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:176)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:216)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;...</p><p>Caused by: javax.naming.NamingException: Could not dereference object [Root exception is org.jboss.ws.WSException: Cannot create service]</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1504)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:822)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ejb3.JndiUtil.lookup(JndiUtil.java:44)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:75)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;... 161 more</p><p>Caused by: org.jboss.ws.WSException: Cannot create service</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ws.WSException.rethrow(WSException.java:60)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ws.core.jaxws.client.ServiceObjectFactoryJAXWS.getObjectInstance(ServiceObjectFactoryJAXWS.java:192)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1479)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1496)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;... 165 more</p><p>Caused by: java.lang.NullPointerException</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.getHandlerChainsMetaData(JAXWSMetaDataBuilder.java:221)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.&lt;init&gt;(ServiceDelegateImpl.java:157)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ws.core.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:63)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at javax.xml.ws.Service.&lt;init&gt;(Service.java:79)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at javax.xml.ws.Service.create(Service.java:96)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;at org.jboss.ws.core.jaxws.client.ServiceObjectFactoryJAXWS.getObjectInstance(ServiceObjectFactoryJAXWS.java:126)</p><p>&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;... 168 more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>It seems that JAXWSMetaDataBuilder.getHandlerChainsMetaData() receives javax.xml.ws.Service as wsClass parameter.</p><p>To load the handlers-chain file, JAXWSMetaDataBuilder tries to use wsClass.getClassloader().getResource(filename) but the returned classloader is null.</p><p>The comment on Class.getClassloader() says: "Returns the class loader for the class. Some implementations may use <strong>null</strong> to represent the bootstrap class loader. This method will return null in such implementations if this class was loaded by the bootstrap class loader."</p><p>That's normal because javax.xml.ws.Service is part of jdk6+.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I checked all versions of jbossws-native-cores (up to 4+) and all versions seem to do the same thing. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Is there any way to prevent that NPE or is it a bug that can't be avoided?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Regards,</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Xavier</p></div>

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


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

</div>

</body>
</html>