users@glassfish.java.net

exception deploying custom jax-ws SOAPHandler in v1 UR1

From: <glassfish_at_javadesktop.org>
Date: Tue, 06 Mar 2007 10:41:39 PST

I have the need to set a soap header while hitting a service on a Biztalk server that I'm
integrating with. This lead me to discover the jax-ws "customization file" facility discussed
here...

   http://blogs.sun.com/sdimilla/entry/implementing_handlers_using_jaxws_2

...and, since I'm using Netbeans 5.5, I found how to configure a handler by right-clicking
on the Web Service Reference node in question, allowing me to select the simple hello-world
handler class that I had created. (It does nothing but log.)

 /*
 * BiztalkClientMessageHandler.java
 *
 * Created on March 5, 2007, 6:46 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package net.nanonation.rccl.handler;

import java.util.Collections;
import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import java.util.logging.Logger;

/**
 *
 * @author pohl
 */
public class BiztalkClientMessageHandler implements SOAPHandler<SOAPMessageContext> {
    private static final Logger log = Logger.getLogger("net.nanonation.rccl.handler");
    
    static {
        log.info("BiztalkClientMessageHandler: static initializer called.");
    }
    
    public boolean handleMessage(SOAPMessageContext messageContext) {
        SOAPMessage msg = messageContext.getMessage();
        log.info("BiztalkClientMessageHandler: handleMessage() called.");
        return true;
    }
    
    public Set<QName> getHeaders() {
        log.info("BiztalkClientMessageHandler: getHeaders() called.");
        return Collections.EMPTY_SET;
    }
    
    public boolean handleFault(SOAPMessageContext messageContext) {
        log.info("BiztalkClientMessageHandler: handleFault() called.");
        return true;
    }
    
    public void close(MessageContext context) {
        log.info("BiztalkClientMessageHandler: close() called.");
    }
    
}

Netbeans generated the following jax-ws customization file...

<?xml version="1.0" encoding="UTF-8"?>
<bindings
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns="http://java.sun.com/xml/ns/jaxws" wsdlLocation="../wsdl/BizTalkWebService.wsdl">

    <bindings node="wsdl:definitions" xmlns:jws="http://java.sun.com/xml/ns/javaee">
        <jws:handler-chains>
            <jws:handler-chain>
                <jws:handler xmlns="http://java.sun.com/xml/ns/javaee">
                    <jws:handler-class>net.nanonation.rccl.handler.BiztalkClientMessageHandler</jws:handler-class>
                </jws:handler>
            </jws:handler-chain>
        </jws:handler-chains>
    </bindings>
</bindings>

Upon deployment, I got a really nasty StackOverflowError...


BiztalkClientMessageHandler: static initializer called.
java.lang.reflect.InvocationTargetException
        at sun.reflect.GeneratedConstructorAccessor155.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
        at com.sun.enterprise.naming.NamingManagerImpl.initiateInstance(NamingManagerImpl.java:1012)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1052)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
        at com.sun.enterprise.webservice.WsUtil.processConfiguredHandlers(WsUtil.java:2357)
        at com.sun.enterprise.webservice.WsUtil.configureJAXWSClientHandlers(WsUtil.java:2502)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1129)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
...
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
        at com.sun.enterprise.webservice.WsUtil.processConfiguredHandlers(WsUtil.java:2357)
        at com.sun.enterprise.webservice.WsUtil.configureJAXWSClientHandlers(WsUtil.java:2502)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1129)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
        at com.sun.enterprise.webservice.WsUtil.processConfiguredHandlers(WsUtil.java:2357)
        at com.sun.enterprise.webservice.WsUtil.configureJAXWSClientHandlers(WsUtil.java:2502)
Caused by: java.lang.StackOverflowError
        at java.lang.String.indexOf(String.java:1352)
        at java.net.URLStreamHandler.parseURL(URLStreamHandler.java:127)
        at sun.net.www.protocol.file.Handler.parseURL(Handler.java:50)
        at java.net.URL.<init>(URL.java:596)
        at java.net.URL.<init>(URL.java:464)
        at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:881)
        at sun.misc.URLClassPath$FileLoader.findResource(URLClassPath.java:871)
        at sun.misc.URLClassPath.findResource(URLClassPath.java:142)
        at java.net.URLClassLoader$2.run(URLClassLoader.java:362)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findResource(URLClassLoader.java:359)
        at java.lang.ClassLoader.getResource(ClassLoader.java:977)
        at java.lang.ClassLoader.getResource(ClassLoader.java:972)
        at java.lang.ClassLoader.getResource(ClassLoader.java:972)
        at java.lang.ClassLoader.getResource(ClassLoader.java:972)
        at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159)
        at com.sun.enterprise.loader.EJBClassLoader.getResourceAsStream(EJBClassLoader.java:782)
        at org.apache.catalina.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1229)
        at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:83)
        at javax.xml.ws.spi.Provider.provider(Provider.java:76)
        at javax.xml.ws.Service.<init>(Service.java:57)
        at net.nanonation.rccl.client.reservations.Reservations.<init>(Reservations.java:36)
        at sun.reflect.GeneratedConstructorAccessor155.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
        at com.sun.enterprise.naming.NamingManagerImpl.initiateInstance(NamingManagerImpl.java:1012)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1052)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
        at com.sun.enterprise.webservice.WsUtil.processConfiguredHandlers(WsUtil.java:2357)
        at com.sun.enterprise.webservice.WsUtil.configureJAXWSClientHandlers(WsUtil.java:2502)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1129)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
        at com.sun.enterprise.webservice.WsUtil.processConfiguredHandlers(WsUtil.java:2357)
        at com.sun.enterprise.webservice.WsUtil.configureJAXWSClientHandlers(WsUtil.java:2502)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1129)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
...
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
        at com.sun.enterprise.webservice.WsUtil.processConfiguredHandlers(WsUtil.java:2357)
        at com.sun.enterprise.webservice.WsUtil.configureJAXWSClientHandlers(WsUtil.java:2502)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1129)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPReservations/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPReservations Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
        at com.sun.enterprise.naming.NamingManagerImpl.initiateInstance(NamingManagerImpl.java:1012)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1052)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
...
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
        at com.sun.enterprise.webservice.WsUtil.processConfiguredHandlers(WsUtil.java:2357)
        at com.sun.enterprise.webservice.WsUtil.configureJAXWSClientHandlers(WsUtil.java:2502)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1129)
        at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:917)
        at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:156)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:307)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:274)
        at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:193)
        at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:87)
        at com.sun.enterprise.webservice.WsUtil.processConfiguredHandlers(WsUtil.java:2357)
Caused by: java.lang.StackOverflowError
        at java.util.jar.JarFile.getEntry(JarFile.java:204)
        at java.util.jar.JarFile.getJarEntry(JarFile.java:187)
        at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:674)
        at sun.misc.URLClassPath$JarLoader.findResource(URLClassPath.java:663)
        at sun.misc.URLClassPath.findResource(URLClassPath.java:142)
        at java.net.URLClassLoader$2.run(URLClassLoader.java:362)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findResource(URLClassLoader.java:359)
        at java.lang.ClassLoader.getResource(ClassLoader.java:977)
        at java.lang.ClassLoader.getResource(ClassLoader.java:972)
        at java.lang.ClassLoader.getResource(ClassLoader.java:972)
        at java.lang.ClassLoader.getResource(ClassLoader.java:972)
        at java.lang.ClassLoader.getResource(ClassLoader.java:972)
        at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159)
        at com.sun.enterprise.loader.EJBClassLoader.getResourceAsStream(EJBClassLoader.java:782)
        at org.apache.catalina.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1229)
        at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:83)
        at javax.xml.ws.spi.Provider.provider(Provider.java:76)
        at javax.xml.ws.Service.<init>(Service.java:57)
        at net.nanonation.rccl.client.biztalkwebservice.BizTalkWebService.<init>(BizTalkWebService.java:38)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
        at com.sun.enterprise.naming.NamingManagerImpl.initiateInstance(NamingManagerImpl.java:1012)
        at com.sun.enterprise.naming.NamingManagerImpl.getClientServiceObject(NamingManagerImpl.java:1052)
        ... 998 more
Handler net.nanonation.rccl.handler.BiztalkClientMessageHandler instance injection failed : Exception attempting to inject Env-Prop: net.nanonation.rccl.service.NPDataTypes/service_at_Field-Injectable Resource. Class name = net.nanonation.rccl.service.NPDataTypes Field name=service_at_javax.jws.WebServiceRef@@@ into class net.nanonation.rccl.handler.BiztalkClientMessageHandler


Have I done something wrong?
[Message sent by forum member 'pohl' (pohl)]

http://forums.java.net/jive/thread.jspa?messageID=206507