[ 
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

Reply via email to