[ https://issues.apache.org/jira/browse/AXIS2-3492?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kishanthan Thangarajah updated AXIS2-3492: ------------------------------------------ Attachment: AXIS2-3492.patch > WSDLSupplier configuration and/or check is not proper/obvious > ------------------------------------------------------------- > > Key: AXIS2-3492 > URL: https://issues.apache.org/jira/browse/AXIS2-3492 > Project: Axis2 > Issue Type: Bug > Components: kernel > Reporter: Dobri Kitipov > Assignee: Amila Chinthaka Suriarachchi > Attachments: AXIS2-3492.patch > > > Hi everybody, > There is one mail thread http://marc.info/?l=axis-dev&m=118399944531093&w=2 > that talks about using WSDLSupplier that gives you the possibility to hook > your own WSDL on the fly. This is done implementing an interface > org.apache.axis2.dataretrieval.WSDLSupplier. > What I am currently trying to do is to test this feature. I implemented my > own WSDLSupplier, but not sure how to specify it. Looking into the above > mentioned thread we can read: > "I added a check in printWSDL() to see if there was a WSDLSupplier sitting in > the "WSDLSupplier" parameter of the AxisService. If so, it attempts to call > the WSDLSupplier to obtain the Definition object from there dynamically. It > then runs that WSDL through the usual printDefinitionObject() API. This > allows my custom service to plug in and generate its own WSDL." > IMHO I should add a parameter into the services.xml file like: > <serviceGroup> > <service name="Test1"> > <description>Web Service Test1</description> > <parameter > name="WSDLSupplier">com.test.wsdlsupplier.MyWSDLSupplier</parameter> > <messageReceivers> > <messageReceiver class="xxxxx" > mep="http://www.w3.org/2004/08/wsdl/in-out"/> > </messageReceivers> > <operation name="echo"/> > </service> > </serviceGroup> > The problem is that into org.apache.axis2.description.AxisService method > public void printWSDL(OutputStream out, String requestIP) the check is: > WSDLSupplier supplier = (WSDLSupplier)getParameterValue("WSDLSupplier"); > So I receive: > java.lang.ClassCastException: java.lang.String > org.apache.axis2.description.AxisService.printWSDL(AxisService.java:1167) > ... > which is something expected because getParameterValue("WSDLSupplier"); > returns a String object, but not WSDLSupplier. So it is not possible to cast > String to WSDLSupplier. > AFAIK when you add a parameter to services/axis2.xml it is supposed to be > retrieved as String. May be there is a need of an additional new attribute > like "type". E.g.: > <parameter name="WSDLSupplier " > type="class">com.test.wsdlsupplier.MyWSDLSupplier</parameter> > or for example something like specifing the deployer into axis2.xml: > <deployer extension=".class" directory="pojo" > class="org.apache.axis2.deployment.POJODeployer"/> > or in our case > <WSDLSupplier class="com.test.wsdlsupplier.MyWSDLSupplier"/> ? > May be more close to this is the way "ServiceClass" parameter is treated by > Axis. It finally loads it using a ClassLoader. > We need to think more deeply which one is preferable. > I was advised to open the JIRA > (http://www.mail-archive.com/axis-dev@ws.apache.org/msg39772.html). > Best regards, Dobri -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org For additional commands, e-mail: java-dev-h...@axis.apache.org