Hi Saminda, I am not sure I get everything right. So let's clarify it. 1) My understanding is that I should create a JIRA about WSDLSupplier parameter, right? But I think this is a more or less feature than a bug? I mean, 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"/> ? We need to think more deeply which one is preferable. But anyway I can open a JIRA like this. Anyway the effect should be that in this case axis will know the type of the artifact/parameter and will try to load it from the classpath. 2) I do not want to use "useOriginalWSDL", but dynamically generate and provide the WSDL at server side based on some criteria. So my understanding is that the mail thread http://marc.info/?l=axis-dev&m=118399944531093&w=2considers exactly this use case, providing the ability to hook an implementation of WSDLSupplier that should return the WSDL ? Am I wrong? I will change the message receiver and have a look at the link you provided to me. Thank you in advance! Dobri On Feb 5, 2008 10:41 AM, Saminda Abeyruwan <[EMAIL PROTECTED]> wrote: > Hi Dobri, > > In deed, if the parameter is defined as prior, it would cause a class cast > exception. This should be fixed. The intended used case for WSDLSupplier is > IMHO not what you have identified. You'll be able to find a use case in [1]. > > > Since you are using org.apache.axis2.rpc.receivers.RPCMessageReceiver, > this will generate the WSDL for your POJO. And if policy is applied, it will > be correctly attached to the WSDL. > > If you have a pre-defined WSDL, please use the parameter > > <parameter name="useOrignalWSDL"> true </parameter> > > > Where wsdl's endpoint should be named exactly as the service name. In > this case "Test1". > > Please do log a JIRA to prevent class cast exception. > > Thank you > > Saminda > > Reference: > > [1] . > https://wso2.org/repos/wso2/trunk/commons/deployers/axis1deployer/src/main/java/a1deployer/ > > > > > > > > > On Feb 4, 2008 8:52 PM, Dobri Kitipov <[EMAIL PROTECTED]> > wrote: > > > 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=" > > org.apache.axis2.rpc.receivers.RPCMessageReceiver" 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. > > > > Please, advise me how it should be done. I did not find anything that > > explains this. > > > > Thank you in advance! > > > > Dobri > > > > > > > -- > Saminda Abeyruwan > > Senior Software Engineer > WSO2 Inc. - www.wso2.org
