List Info

Thread: - WebServiceRef & HandlerChain annotations




- WebServiceRef & HandlerChain annotations
country flaguser name
United States
2007-10-28 05:24:48
I think I found a bug with the way the HandlerChain
annotation is implemented in JBossWS 2.0.1.SP2 on JBoss
4.2.2

It happends when I use HandlerChain in the following condition:
1) A field in a Stateless Session Bean
2) The type of the field is the port type
3) The field is annotated with WebServiceRef

An example of the declaration:

  | HandlerChain(file =
"MyWsClient_HandlerChains.xml")
  | WebServiceRef(name = "ws/MyWs",
wsdlLocation = "META-INF/wsdl/MyWs.wsdl")
  | private MyWsPort wsPort;
  | 

In that case I get the following errror:

  | Caused by: org.jboss.ws.WSException: Cannot resolve
handler file 'be/egelke/MyWsClient_HandlerChains.xml' on
javax.xml.ws.Service
  |         at
org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.get
HandlerChainsMetaData(JAXWSMetaDataBuilder.java:235)
  |         at
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.<init>
(ServiceDelegateImpl.java:150)
  |         at
org.jboss.ws.core.jaxws.spi.ProviderImpl.createServiceDelega
te(ProviderImpl.java:61)
  |         at
javax.xml.ws.Service.<init>(Service.java:83)
  |         at
javax.xml.ws.Service.create(Service.java:721)
  |         at
org.jboss.ws.core.jaxws.client.ServiceObjectFactoryJAXWS.get
ObjectInstance(ServiceObjectFactoryJAXWS.java:135)
  |         at
javax.naming.spi.NamingManager.getObjectInstance(NamingManag
er.java:304)
  |         at
org.jnp.interfaces.NamingContext.getObjectInstance(NamingCon
text.java:1273)
  |         at
org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailur
e(NamingContext.java:1290)
  |         ... 143 more
  | 

I did check the code and found the following on the line
specified in the above exception:

  | // Try the filename relative to class
  | if (fileURL == null)
  | {
  |    String filepath = filename;
  |    String packagePath =
wsClass.getPackage().getName().replace('.', '/');
  |    String resourcePath = packagePath + "/" +
filepath;
  |    while (filepath.startsWith("../"))
  |    {
  |       packagePath = packagePath.substring(0,
packagePath.lastIndexOf("/"));
  |       filepath = filepath.substring(3);
  |       resourcePath = packagePath + "/" +
filepath;
  |    }
  |    fileURL =
wsClass.getClassLoader().getResource(resourcePath);
  | }
  | 
  | if (fileURL == null)
  |    throw new WSException("Cannot resolve handler
file '" + filename + "' on " +
wsClass.getName());
  | 

As you can see, the above tries the load my handler file
with the classloader from the javax.xml.ws.Service class. 
Obviously, my handler file can't be found.

Is there a way that I can make it work or is this a bug or
limitation?

I did find some ways to get arround the problem, but all
have there disadvantages:

  | 1) Replace the Port class of the field by the Service
Client class: requires extra code which complicates unit
testing.
  | 2) Specify the correct service implementation class:
only available in JBoss 5.0
  | 

View the original post : http://www.jboss.com/index.html?
module=bb&op=viewtopic&p=4099646#4099646

Reply to the post : http://www.jboss.com/index.
html?module=bb&op=posting&mode=reply&p=4099646
_______________________________________________
jbossws-users mailing list
jbossws-userslists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbossws-users


[1]

about | contact  Other archives ( Real Estate discussion Medical topics )