[jboss-dev-forums] [JBoss ESB Development] - SOAPProxy+AS5: INVM contract unavailable w/classpath URI

dward do-not-reply at jboss.com
Wed Dec 9 13:22:18 EST 2009


This post is to discuss options for fixing https://jira.jboss.org/jira/browse/JBESB-3034.

Using ESB 4.7 deployed in AS 5.1, if you configure the SOAPProxy with a wsdl property using a classpath URI (like "classpath://helloworld.wsdl"), then attempt to look at the INVM service contract at http://localhost:8080/contract/, you will get the following error:

11:48:24,707 ERROR [AbstractWsdlContractPublisher] Failed to load WSDL contract information from WS Endpoint 'classpath:///helloworld.wsdl'.
  | java.lang.NullPointerException
  | 	at org.jboss.soa.esb.actions.soap.proxy.SOAPProxyWsdlContractPublisher.getWsdl(SOAPProxyWsdlContractPublisher.java:60)
  | 	at org.jboss.soa.esb.actions.soap.AbstractWsdlContractPublisher.getContractInfo(AbstractWsdlContractPublisher.java:141)
  | 	at org.apache.jsp.contract_jsp._jspService(contract_jsp.java:126)
  | 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
  | 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  | 	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
  | 	...

When deploying ESB into JBoss AS 4.2.3, both the HTTP and INVM wsdl is available through the contract JSP app.  But when deploying ESB into JBoss AS 5.1, only the HTTP wsdl is available.

I believe the problem is classloading visibility. In the contract JSP app, when clicking on the INVM wsdl link, the classloader of the web tier is used to lookup the classpath URL resource of "helloworld.wsdl". This is no problem on AS 4.2.3, most likely because of the behavior of the UnifiedClassLoader. However, on AS 5.1, classloading is obviously different, so the URL resource cannot be found. One would have to use the classloader of the deployed esb archive, I would assume (as that's where helloworld.wsdl lives).

But why does the HTTP wsdl link work through the contract JSP app, no matter if AS 4.2.3 or 5.1 is used? Because during the esb archive deployment, when the HttpGatewayServlet is initialized, the wsdl is obtained using the ContractProviderLifecycleResource, which handles it.

Thoughts on what we should do about this?

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

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4269844



More information about the jboss-dev-forums mailing list