Custom WSDL

We are using Native Web Services on Oracle 11g. The auto-generated WSDL isn't specific enough for our customers, so we wrote our own WSDL. What is the best way to make this new WSDL available to our customers? I guess we could simply place the wsdl file on our web server, but I would prefer to be able to serve the wsdl from the same package that contains the functions and procedures we're exposing as web services. Is there a way to do this? Should we create a function named "getwsdl" that returns the wsdl file's content the same way that our regular web service functions return xml content? Or should we use htp.p inside of a function to send the wsdl content to the requester? We're new to web services, so I'm not sure the best way.
Thanks,
Darrin

Thanks, Mark. I'll give that a try.
I'm not opposed to using a function in the package to return WSDL, but I wasn't sure how that would look. If we have our WSDL content already defined, would we do something like this:
function getWSDL
return xmltype
begin
return xmltype('<wsdl content here>');
end getWSDL;
This is similar to how the web service functions return a result, but the way the WSDL file is generated is different, right? Don't we have to send this to the browser as if it's a file instead of a soap response? Maybe it's simpler/easier to use the folder approach you mentioned. Thanks again for all your help!
Thanks,
Darrin

Similar Messages

  • How do I support multiple custom WSDL files in one application?

    I am developing an application that will integrate with SOD. This application will be run at multiple customers - each of which could have their own set of custom fields defined for the various objects that we're interested in. Is there a web service that allows you to access custom objects and fields in a generic fashion or am I going to have to obtain each customer's custom WSDL file and write some sort of adapter for each that plugs into our main integration logic?
    Based on everything I've tried and read, it seems like the latter is true.
    Edited by: user3029444 on Mar 27, 2009 5:11 AM

    Hi !
    As I am developing many customer applications with OCOD interface, I confirm that the only way I see is to have an adapter. For example, having a folder WSDL containing one sub folder for each customer. And these sub folders will contain the customer specific wsdl.
    Then you'll have to run your application in a customer context, I mean knowing who is running the application and then set your wsdl path regarding this identification.
    Hoep this will help, feel free to ask more !
    Max

  • Using custom wsdl to esb routing service node

    Hi,
    I am working on a ESB flow, The entire flow works with ESB generated WSDLs. But, now, I want to use our own WSDL files, so I configured the starting Routing Service node to use existing WSDL.
    To do this, I made the following changes.
    Initially I was feeding XML file throug a File Reader node, and it was easy to test. Now, since I am working with our own WSDL, I removed File Reader node and created another Routing Service node with uses our custom WSDL file. I am now testing the flow by using OC4J web services feature. It provided me a web based form where in I can populate/feed values in. When I do this, I get an error like below:
    java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: Software caused connection abort: connect
    Does anybody know how to fix this?
    Thanks,

    sorry your '"mysoapaction"' funda didnt work....
    can you tell me that what should be the value in p_url??
    http_req := utl_http.begin_request(p_url, 'POST', 'HTTP/1.1');
    utl_http.set_header(http_req, 'Content-Type', 'text/xml');
    utl_http.set_header(http_req, 'Content-Length', length(request_text));
    utl_http.set_header(http_req, 'SOAPAction', p_soap_action);
    utl_http.write_text(http_req, request_text);
    http_resp := utl_http.get_response(http_req);
    utl_http.get_header_by_name(http_resp,'Content-Length',l_head_out);
    l_cont_length := to_number(l_head_out);
    IF l_cont_length > 0
    THEN
    utl_http.read_text(http_resp, p_response);
    END IF;

  • WSA wsdl-gen won't get a custom WSDL

    Hi,
    I'm trying to make Web Service Assembler in OC4J 10.1.2 get my custom WSDL file, but it won't no matter what i change. This is the config file i'm using now:
    <web-service>
         <display-name>Web Service Demo</display-name>
         <description>Web Service Demo for OC4J</description>
         <destination-path>./build/wsd-services.ear</destination-path>
         <temporary-directory>c:\temp</temporary-directory>
         <context>/wsdemo-ws</context>
         <stateless-java-service>
         <interface-name>es.wsd.services.DemoServiceInt</interface-name>
         <class-name>es.wsd.services.DemoService</class-name>
         <uri>/demoService</uri>
         <java-resource>./bin</java-resource>
         </stateless-java-service>
         <wsdl-gen>
         <wsdl-dir>./wsaconfig</wsdl-dir>
         <option name="force">false</option>
         <option name="packageIt">true</option>
         <option name="httpServerURL">http://localhost:8888</option>     
         </wsdl-gen>
    </web-service>
    Well, i have a DemoServiceInt.wsdl file in the wsaconfig folder hanging from my project's root, and use this ant target to launch WSA:
    <property name="WSA.dir" value="c:\desarrollo\java\oc4j\webservices\lib"/>
    <property name="WSA.dir.config" value="./wsaconfig"/>
    <target name="build.wsa" depends="build.src">
    <java jar="${WSA.dir}/WebServicesAssembler.jar" fork="true">
         <arg value="-config"/>
         <arg value="${WSA.dir.config}/config.xml"/>
    </java>
    </target>
    Thank you in advance.
    Best regards.
    Juan Alvarez Ferrando

    Let's take it one step further. Reset your network settings on your touch. Tap Settings > General > Reset > Reset Network settings. When it restarts, log back onto your network.
    Since you are using the same router as before as your access point, what really has changed? The default on DNS is "Use ISP's DNS" isn't it?

  • Troubleshooting Custom WSDL files and duplication

    I am attempting to provide a web service for my company's CRM with Siebel, requiring multiple types(Specifically: Lead, Campaign, Contact, Activity).
    However, when I import the custom WSDL files for these into my C# project, there are roughly alot of build errors due to the duplication of partial classes(and the fields therein)
    Is there anyway around this besides manually going through the duplicates and removing them?

    Thanks for the response.
    I have it working now.
    I used wsdl.exe to create .cs files and imported those.
    Each .cs file has its own namespace(I just used the class name again).
    So instead of calling Campaign.CampaignInsert(CampaignWS_CampaignInsert_Input), its Campaign.Campaign.CampaignInsert(Campaign.CampaignWS_CampaignInsert_Input)
    and so on for the other classes/methods.

  • Oracle XML Gateway - custom WSDL configuration in service partner setup

    We are trying to configure a custom WSDL for service partners to send/receive outbound/inbound messages using OTA. I have a coded a WSDL that pretty much replicates the Generic WSDL template that was provided with the gateway. When i configured it, it has trouble finding the endpoint of the custom WSDL. Has anyone run into this situation before? Please throw some light on this issue. We are pretty much stuck right now!!

    No. I am afraid that your understanding is incorrect. Oracle B2B is part of Oracle SOA suite and XML Gateway is part of Oracle Apps. Yes both of them have some overlapping areas of work but apart from that both products do not have any connection in between.
    Regards,
    Anuj

  • Why use custom wsdl vs. generic wsdl?

    I downloaded the custom wsdl and it's generic version and the generic version is double the size of the custom one.
    1) Why generic version is so big?
    2) Why would you use custom wsdl vs. generic version other than the fact the name is easy to read for custom wsdl?
    Thanks

    #1, because custom wsdl only contains the fields you used, while generic version show all of them.
    #2, like you mentioned, custom name is easy to read. what's more, if you have some functional extension integration development experience, you will find it will much more convenient for developer to build and maintain the code.

  • Issues With Generic/Custom WSDL

    Whenever I generate a Custom WSDL it seems to be providing the same output as the generic WSDL option. Furthermore, I do not see all of my custom fields listed in the WSDL. These were not created recently and have been present in the system and data loads for quite some time. I tried searching by the technical name and the short name but can not find many of my custom fields in any of the WSDLs. Please advise.

    Hi,
    You can get real name of the object from UI by clicking "Rename" and the "Advance" on field setup of the object or You can use Field Management Web Service to get the real name of the fields. Use SoapUI, its free tool.

  • 'Payload not Serializable' with custom WSDL data types in message-style web service

    I'm implementing a message-style web service which publishes to a JMS Queue.
    I had the web service built and deployed, but noticed that the "sendRequest" message's
    part was of type "xsd:anyType." This is not specific enough for our interface,
    since it is externally facing and needs to describe the object we're expecting
    on the back end.
    So I replaced xsd:anyType with mynamespace:MyType, which is defined as a complex
    type in the same WSDL document.
    My problem is that when I test the web service with the new WSDL (using the client.jar),
    I get a server-side exception from the DestinationSendAdapter.doPost() method.
    The exception reads:
    javax.servlet.ServletException: Payload not Serializable
    at weblogic.soap.server.servlet.DestinationSendAdapter.doPost(DestinationSendAdapter.java:129)
    The domain object ('classic' JavaBean) that it should map to on the server side
    extends a class that implements Serializable, so it should inherit the trait.
    So my questions are:
    1) Did I properly go about trying to restrict the object type that gets sent to
    my Destination?
    2) If no, what is the correct way? If yes, why am I receiving the Payload not
    Serializable error if the domain object implements Serializable?
    Thanks in advance.

    Resolved:
    Apparently this is the right approach, as it boiled down to a classpath issue
    on the client-side. Thanks anyway.

  • ESB:  Is it possible to create custom WSDL for routing service?

    Hello all!
    I have an unchangeable requirement in my project - ESB routing services must confom to WSDL specifications that are already used before we started this integration project.
    For example, we have to implement not only the same logical part of WSDL description:
    <message name="AuthorisationRequestSoapIn">
    <part name="AuthorisationRequest" element="tns:AuthorisationRequest"/>
    </message>
    <message name="AuthorisationRequestResponseSoapOut">
    <part name="AuthorisationRequestResponse" element="tns:AuthorisationRequestResponse"/>
    </message>
    <portType name="OnlineServicesSoap">
    <operation name="AuthorisationRequest">
    <input message="tns:AuthorisationRequestSoapIn"/>
    <output message="tns:AuthorisationRequestResponseSoapOut"/>
    </operation>
    </portType>
    but the binding and service sections must conform to WSDL document too:
    <binding name="OnlineServicesSoapBinding" type="tns:OnlineServicesSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="AuthorisationRequest">
    <soap:operation style="document" soapAction="AuthorisationRequest"/>
    <input>
    <soap:body use="literal" namespace="http://..../OnlineServices"/>
    </input>
    <output>
    <soap:body use="literal" namespace="http://..../OnlineServices"/>
    </output>
    </operation>
    </binding>
    <service name="OnlineServicesSoapService">
    <port name="OnlineServicesSoapPort" binding="tns:OnlineServicesSoapBinding">
    <soap:address location="....."/>
    </port>
    </service>
    And after registration of ESB routing service I've got the following service description (I ommit esb bindings and logical part here, it's ok with messages and portTypes):
    <binding name="__soap_OnlineServicesSoapService_OnlineServicesSoap" type="import:OnlineServicesSoap">
    <soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="AuthorisationRequest">
    <soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" style="document" soapAction="AuthorisationRequest"/>
    <input>
    <soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/>
    </input>
    <output>
    <soap:body xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" use="literal"/>
    </output>
    </operation>
    </binding>
    <service name="ESB_OnlineServicesSoapService_Service">
    <port name="__soap_OnlineServicesSoapService_OnlineServicesSoap" binding="tns:__soap_OnlineServicesSoapService_OnlineServicesSoap">
    <soap:address xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" location="http://..../event/DefaultSystem/OnlineServicesSoapService"/>
    </port>
    </service>
    How can I change WSDL that is generated for routing services? Is it possible to change the names of port and binding element?
    Thanks in advance,
    Oleg Olenin

    So, no docs, no answers, no life :) - I have only one way to get the answers:
    oracle.tip.esb.configuration.util.WSDLGenerator.addSOAPBindings():
    binding.setQName(new QName(targetNamespace, WSDLConstants.generateSOAPPortName(service.getName(),portType.getQName().getLocalPart())));
    oracle.tip.esb.configuration.util.WSDLConstants:
    public static final String generateSOAPPortName(String service, String operation)
    return "__soap_" + service + "_" + operation;
    So it is not possible to change the names of SOAP binding and port.
    And I guess there is no way to change WSDL that is generated for routing services.

  • WCF - Custom WSDL (Authentication)

    I`m looking for a way to generate a WSDL based on the permissions the user has.
    We using DigistAuthentication for authorization.
    What we have so far..
    When the user logon with his credentials I can produce the WSDL for this user because I have the UserIdentity and I can use IWsdlExportExtension with ExportContract to create the WSDL for this user.
    Whats the problem..
    After a user did logon to the webservice, the service description is created for the first user which logged on. I would like to be able to generate the WSDL (ServiceDescription) for each user.

    Since the authentication is not occurring where the service is hosted, the solution will be to hand-craft a WSDL file, and then tell WCF to reference it using
    externalmetadatalocation.

  • Should a new custom ESB contract wsdl required for such a scenario?

    Hi,
    I am using AIA 2.4 for my client who is integration Web-center 11g with JDE 9.0. The question is more pertaining to design approach that one needs to take for a scenario as this-
    The case - an ADF page tries to create a customer in the JDE and uses AIA layer for the movement of business data.Once the customer gets created in the JDE,JDE in turn returns the client Id which ADF needs to navigate to a different page.The ESB currently is based on the entity WSDL(CustomerPartyV2.wsdl) and the operation is create. Since create ops in the above Entity contract is defined as 'async-one way' we cant get any response back to the ADF page via the provider ABC service.
    Now to break the impasse, client has suggested if I can extend the entity wsdl file and create a new process wsdl file.But I couldn't convince myself as the need for a custom wsdl file for the EBS. This is becoz we are neither adding new operation nor we are extending a new EBO. The only thing that needs to be done is to make the create operation from async to sync in the wsdl. Unfortunately the Integration guide for 2.4 doesn't lay-down any step as how to tackle such an issue.
    Please provide me some guideline on design as how to approach this problem and break the impasse!
    Thanks
    Prabal
    Edited by: user10797754 on Apr 1, 2010 9:14 AM
    Edited by: user10797754 on Apr 1, 2010 1:36 PM
    Edited by: user10797754 on Apr 1, 2010 1:40 PM

    Hi,
    In AIA, the CRUD operations but for Query have implemented Asynchronous request / response patterns. Hence, these interfaces are modeled 2 one-way operations. The programming model stated in Integration Development Guide does specify how the client (in AIA, it might be Requester ABCS) can optionally choose to receive the outcome; and also about how the provider service needs to be coded to handle this.
    The “responseCode” attribute of the EBM verb is set to indicate to the providing service that the requesting service is expecting a response. This is evaluated in the providing service to send back a response. The Create verb has an optional “ResponseCode” attribute that communicates the payload that is expected in the response message to the “Create” request. . The possible values for the ResponseCode are restricted to either “ID” (response payload is expected to be the Identifier of the object that was created) or “OBJECT” (response payload is expected to be the entire object that was created).
    Even though the above programming model does allow for client services to receive the responses about the outcome of create / update / delete / sync operation in an asynchronous way, I would strongly discourage ADF page making a synchronous service call which in turn leverages AIA's asynchronous request / response pattern based services. This synchronous - asynchronous pattern could have performance impact.
    I would make two recommendations - one is to follow customer's suggestion - add a new synchronous request / response based operation in process wsdl. But that means, you need to implement requester as well as provider services for that operation; and have ADF page invoke that synchronous requester ABCS.
    The other option is to leverage the delivered existing services - clone the requester ABCS and make changes to cloned requester ABCS to update the requester application after receiving the response. Instead of cloning, you could also decide to make inline changes to the delivered requester ABCS - but need to be aware that those changes are not upgrade safe.
    The user experience will certainly have to be modified - have the user refresh the screen - refreshing the screen should result in retrieval of the identifier from the data store ; and that could be used to navigate to the specific object. There might slightly be an inconvenience to the end user - but the implementation has all of Quality of Service characteristics such as resiliency, transactionality, guaranteed delivery etc.
    Hope it helps.
    regards,
    Ravi
    I

  • Oracle OnDemand Generic WSDL Custom Element

    Hi,
      I have added a new field to the Activity object.
    I am trying to set value and get values for this newly created field using web service 2.0.
    If I download the Custom WSDL, I could see the tag name of the newly created field. But this does not appear in the Generic WSDL 2.0.
    Your document says,
    "For Generic WSDL files, custom fields are based on generic XML
    tags: CustomNumber0, CustomCurrency0, and so on. Using these placeholders, together with
    the Mapping Service or Field Management API allows applications to map the generic XML tags
    to the field names that your company uses."
    But it is not clear and I am unable to map the newly created fields using the mapping service.
    Could you please help me on this?
    Thanks,
    Baskar.S

    Hi, Would suggest custom, unless you like to build something that is generic which can work across multiple instances of CRMOD or goes across all fields / objects etc. Otherwise it may not worth the effort of managing the integration tags mapping related activities
    -- Venky CRMIT

  • Mapping wsdl - custom vs generic

    Would there ever be a difference in the custom and generic mapping wsdl files?
    Thanks!
    -Kevin

    Hi, It depends on the kind of application you develop. If you are developing something that dumps all the data from OnDemand using WS or building some app that can work across multiple instances, it is better to use generic wsdl otherwise custom is good. The problem with generic is it contains whole lot of fields and any integration tag changes for custom created fields would not be reflected in custom wsdl so it is going to be time confusion and tough to manage using generic WSDL. If the application is simple it may not worth to handle that complexity. Hope it helps
    -- Venky CRMIT

  • Fields "Completed" and "Completed Date" not available in Activity WSDL

    Hello All,
    We dont find the fields "Completed" and "Completed Date'" in Generic / Custom WSDL provided by OnDemand
    Any idea on the reasons? Any suggestions / workaround to query the above fields using Webservices?
    We tried guessing the integration tags as "Completed" and "CompletedDate" but it throws error
    Thanks for your help
    Regards,
    Venkatesan
    CRMIT

    I'm trying to WebService a large amount of activities from another system that we are converting to OnDemand. I would also like to update the completed date to match the date from the original system. I cannot find anyway to do this either.
    Has anybody else?
    I understand why they might not want you to update it via the UI, but via a WS it should be available. UGH !!!
    Thanks ...

Maybe you are looking for