Oracle Service Bus 10.3 - Invoke a REST service in split join flow

Hi
I am using WebLogic Workshop to design a split-join service that needs to call 2 services and combine their responses.
Service A - WSDL based service
Service B - REST service
In the split join flow I am able to invoke Service A just fine. However I do not have a way to call Service B. When I open the invoke dialog it only list WSDL based services.
Does this mean in a split join I can only invoke WSDL based services or is this a bug in Weblogic Workshop.
I can get around this by creating a WSDL based proxy that calls the REST service but was hoping I do not have to go down this route.
Any guidance is appreciated.
Thanks,
-Nilay

I think that Split-Joins are implemented in BPEL. Just look at your .flow file and you will see all those BPEL directives. That's why you probably need your service to be described by WSDL, so you are probably on the right way.
http://technology.amis.nl/blog/1273/invoking-http-services-from-oracle-bpel-pm-soa-enabling-php-servlets-rss

Similar Messages

  • Not able to invoke ATG  Rest services

    Hi,
    I'm new ATG Rest service, To just create a dummy rest service I followed the below steps.
    1. added REST module in MANIFEST.MF file
    ATG-Required: DAS DPS DSS DCS B2CCommerce DAS REST
    2. created restSecurityCnfiguration.xml under atg/rest/seurity and following is the content of this file
    <programlisting>
         <rest-security>
              <default-acl value="Profile$login$admin:read,write,execute" />
              <resource component="/atg/service/TestComponent" secure="false"/>
         </rest-security>
    </programlisting>
    3. Created a TestComponent in my existing application and created a method testName
    public class TestComponent {
         public String getTestName(){
              return "arvind";
    4. Deployed my application on jboss.
    Now I'm trying to invoke this from a java class
    protected void execute() throws RestClientException {
              String mUsername = "admin";
              String mPassword = "admin";
              String mHost = "localhost";
              int mPort = 8080;
              RestSession mSession = null;
              RestResult result = null;
              mSession = RestSession.createSession(mHost, mPort, mUsername, mPassword);
              mSession.setUseHttpsForLogin(false);
              mSession.setUseInternalProfileForLogin(false);
              try {
                   mSession.login();
                   println("Login Successful");
                   result = RestComponentHelper.executeMethod("/atg/service/TestComponent", "testName", new Object[] {}, null, mSession);
              catch (Throwable t) {
                   println(t);
              } finally {
                   try {
                        mSession.logout();
                        println("Logout Successful");
                   } catch (RestClientException e) {
                        println(e);
    ----------------------------------------------------------------------out put ---------------------------------------------
    Login Successful
    atg.rest.client.RestClientException: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/service/TestComponent/testName
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:755)
         at atg.rest.client.RestComponentHelper.executeMethod(RestComponentHelper.java:252)
         at com.techm.restclient.RestClientSample.execute(RestClientSample.java:63)
         at com.techm.restclient.RestClientSample.main(RestClientSample.java:87)
    Caused by: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/service/TestComponent/testName
         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:745)
         ... 3 more
    Logout Successful
    Even if I provide any username and password, which don't even exist, it says login succussful but while invocation it fails. Please help me here,
    What is default user I can use? or way to create new user ?
    Thanks in Advance,
    Arvind
    Edited by: Arvind Pal on Oct 4, 2012 10:21 AM
    Edited by: Arvind Pal on Oct 4, 2012 10:22 AM

    I created a user through ACC, and made the following changes.
    <programlisting>
         <rest-security>
              <default-acl value="Profile$login$arvind:read,write,execute" />
              <resource component="/atg/service/TestComponent" secure="false"/>
         </rest-security>
    </programlisting>
    and now I'm getting the loginStatus i.e userid of user "arvind".
    But while executing the invocation of web service call I'm getting the same exception.
    Do we need to give some permission somewhere for this user ? or I'm doing something wrong with restSecurityConfiguration.xml
    Login status[390002]
    Login Successful
    atg.rest.client.RestClientException: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/service/TestComponent/getTestName
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:755)
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:722)
         at atg.rest.client.RestComponentHelper.getPropertyValue(RestComponentHelper.java:182)
         at com.techm.restclient.RestClientSample.execute(RestClientSample.java:98)
         at com.techm.restclient.RestClientSample.main(RestClientSample.java:128)
    Caused by: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/service/TestComponent/getTestName
         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:745)
         ... 4 more
    Logout Successful
    Edited by: Arvind Pal on Oct 4, 2012 12:36 PM

  • Web Service Proxy client to invoke a Web service on SSL (Jdev 10.1.3.1)

    Hi,
    I have to develope a Web Service proxy client to invoke a web service on SSL. First I'm testing with OC4J 10.1.3.1 and JDEV 10.1.3.1 and did this:
    1) Developed a basic PL/SQL Web Service with JDEV and publish on my standalone OC4J.
    2) Made a test with a browser, it worked OK
    3) Generated a proxy client from JDev 10.1.3.1 to invoke web service, it worked OK
    --- Now make it work on SSL----
    4) Then, added SSL configuration to oc4j , generated a certificate with keytool (updated server.xml, secure-web-site.xml), and shutting down and starting the OC4j instance.
    5) Import the certificate to JAVA_HOME/jre/lib/security/cacerts
    6) Test web service from browser on https and worked OK.
    7) When tried to modified proxy client (generated in step 3) to make it work on SSL, I realized that just changing the END_POINT to the new url (https) it worked!
    Questions----
    1.- By default the proxy client generated from JDEV 10.1.3.1 knows how to deal with SSL conections?
    2.- If I dont have previously the server certificate to import it into JAVA keystore (cacerts) how could I ,from proxy client code, capture it and import it before the validation occurs... because if the certificate is not in keystore , the program fails.
    Thanks in advance
    J.

    Hi,
    Could you please provide me with the steps necessary to create a web service proxy client through JDeveloper or any other mechanism when 2 way SSL (requiring client authentication) is enabled.
    Thanks a lot in advance
    Nilesh

  • What is the best approach to invoke secured REST Services from SOA

    Hi there,
    I've a REST service which expects username and password to access it.
    To Invoke it I'm passing the credentials as properties in composite.xml under <reference> section as shown below.
    <property name="oracle.webservices.auth.username" type="xs:string"
                    many="false" override="may">USERNAME</property>
    <property name="oracle.webservices.auth.password" type="xs:string"
                    many="false" override="may">PASSWORD</property>
    Is there any way to use OWSM to achieve the same?
    Please suggest if there is better approach. I'm Using SOA Suite PS6
    Thanks
    JGun

    For external entities, the best practice is to access the rest service in OSB (as Business Service) and if needed, virtualize the access via an Proxy Service (can be used a Web Service transaction) and than consume the OSB in SOA Suite.

  • Oracle EBS throwing exception while invoking the web service

    Hi,
    When I try to invoke the web service through SOAPUI it is working perfectly fine. however when I try to call it using a .net client. I am getting the below exception:
    oracle.apps.fnd.soa.util.SOAException: ServiceProcessingError: System ErrorServiceGenerationError: Error in Creating Response MessageServiceGenerationError: Error in getting translated error messagenull.
    Please help me.
    Thanks,
    Manish

    Hi Manish,
    Please check notes:
    R12.1.1: ISG BPEL Calls Results in java.net.sockettimeoutexception & oracle.apps.fnd.soa.util.SOAException (Doc ID 1103755.1)
    "Error in getting translated error messagenull" When Invoking a web service from SOAP UI (Doc ID 1507313.1)
    Thanks &
    Best Regards,
    Asif

  • Why did a service bus show up after adding mobile service?

    I created 1 mobile service (.NET backend) with default 20MB SQL database, then added a scheduled job (but didn't configure).
    When I logged back in to check something I noticed I also had 1 Service Bus and 1 Active directory.  
    Where did these come from since I didn't add these to my account?

    Hi,
    From my experience, if we add a new mobile service, it will not add service bus or active directory, I think this may be related with your mobile service, may be you use code to build service bus or active directory, I suggest you check your codes, if you
    encounter this issue when create new mobile service, please feel free to let me know.
    Best Regards 
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Invoking HTTP Restful services using OSB

    Hi,
    We have a reuirement to invoke below three URL's from OSB in sequence .
    like
    1.http://<IP Address:Port>/login
    2.http://<IP Address:Port>/getlist
    3.http://<IP Address:Port>/logout
    I have used three service callouts to invoke the same.
    Login service callout is giving the success response but the 2nd service is throwing the error as "Unauthorized"
    Three url's should be invoked in the same session i.e 2nd service should be invoked in the same session as of login service or else it will give error.
    I have enabled the "Transaction Required" flag and also set the QoS to "Exactly Once" but still giving the error.
    Can anybody please let me know if there is any another way to maintain the session.
    Thanks in advance.

    401 Unauthorized most likely means you have lost a cookie.
    On your first call to login the server sets HTTP header Set-Cookie; you get it back as User Headers. In response flow of the login call you need to get the value of the Set-Cookie and save it into a variable.
    On the second and third call you'll have to set Custom Header "Cookie" to the value you get from Set-Cookie.
    This is purely HTTP mechanism, transactions or QoS have nothing to do with it.

  • Is this the best design for asynchronous notifications (such as email)? Current design uses Web Site, Azure Service Bus Queue, Table Storage and Cloud Service Worker Role.

    I am asking for feedback on this design. Here is an example user story:
    As a group admin on the website I want to be notified when a user in my group uploads a file to the group.
    Easiest solution would be that in the code handling the upload, we just directly create an email message in there and send it. However, this seems like it isn't really the appropriate level of separation of concerns, so instead we are thinking to have a separate
    worker process which does nothing but send notifications. So, the website in the upload code handles receiving the file, extracting some metadata from it (like filename) and writing this to the database. As soon as it is done handling the file upload it then
    does two things: Writes the details of the notification to be sent (such as subject, filename, etc...) to a dedicated "notification" table and also creates a message in a queue which the notification sending worker process monitors. The entire sequence
    is shown in the diagram below.
    My questions are: Do you see any drawbacks in this design? Is there a better design? The team wants to use Azure Worker Roles, Queues and Table storage. Is it the right call to use these components or is this design unnecessarily complex? Quality attribute
    requirements are that it is easy to code, easy to maintain, easy to debug at runtime, auditable (history is available of when notifications were sent, etc...), monitor-able. Any other quality attributes you think we should be designing for?
    More info:
    We are creating a cloud application (in Azure) in which there are at least 2 components. The first is the "source" component (for example a UI / website) in which some action happens or some condition is met that triggers a second component or "worker"
    to perform some job. These jobs have details or metadata associated with them which we plan to store in Azure Table Storage. Here is the pattern we are considering:
    Steps:
    Condition for job met.
    Source writes job details to table.
    Source puts job in queue.
    Asynchronously:
    Worker accepts job from queue.
    Worker Records DateTimeStarted in table.
    Queue marks job marked as "in progress".
    Worker performs job.
    Worker updates table with details (including DateTimeCompleted).
    Worker reports completion to queue.
    Job deleted from queue.
    Please comment and let me know if I have this right, or if there is some better pattern. For example sake, consider the work to be "sending a notification" such as an email whose template fields are filled from the "details" mentioned in
    the pattern.

    Hi,
    Thanks for your posting.
    This development mode can exclude some errors, such as the file upload complete at the same time... from my experience, this is a good choice to achieve the goal.
    Best Regards,
    Jambor  
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Oracle Service Bus 10.3 - split join how to set header for invoked service

    In Oracle Service Bus 10.3 how can I set the header for the service being invoked. We make parallel calls to 2 different business services. One of the invoked service requires header to be set and I am unable to figure out how it can be done. Below are snippet of the code and WSDL.
    --- Login Operation start ---
    <operation name="login">
    <wsdlsoap:operation soapAction="blah"/>
    <input name="loginRequest">
    <wsdlsoap:body use="literal"/>
    <wsdlsoap:header message="passport:loginHeader" part="hppwsHeaderElement" use="literal"/>
    </input>
    <output name="loginResponse">
    <wsdlsoap:body use="literal"/>
    </output>
    <fault name="genericFaultException">
    <wsdlsoap:fault name="genericFaultException" use="literal"/>
    </fault>
    </operation>
    --- Login Operation end ---
    --- hppwsHeader Element --
    <complexType name="hppwsHeaderElement">
    <sequence>
    <element maxOccurs="1" minOccurs="0" name="version" type="tns1:version"/>
    <element maxOccurs="1" minOccurs="0" name="tx-id" type="tns1:tx-id"/>
    <element maxOccurs="1" minOccurs="1" name="systemLangCode" type="xsd:string"/>
    </sequence>
    </complexType>
    --- LoginRequest Element ---
    <xs:element name="loginRequestElement" type="s0:loginRequestType"/>
    <xs:complexType name="loginRequestType">
    <xs:sequence>
    <xs:element name="userId" minOccurs="1" maxOccurs="1" type="xs:string"/>
    <xs:element name="password" minOccurs="1" maxOccurs="1" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    --- LoginResponse Element ---
    <xs:element name="loginResponseElement" type="s0:loginResultType"/>
    <xs:complexType name="loginResultType">
    <xs:sequence>
    <xs:element name="sessionToken" minOccurs="1" maxOccurs="1" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    In Oracle Workshop for WebLogic when I create a split-join .flow file while adding the invoke service call to login operation I am prompted to create the loginRequest and loginResponse variables. I can assign the appropriate expression to loginRequest.loginRequestElement prior to making the invoke call but then the backend business call fails because "systemLangCode" is not defined and set. Actual fault is
    <ns1:genericFault xmlns:ns1="http://hppcbl.globalops.company.com/webservice">
    <systemLangCode>en</systemLangCode>
    <fault>
    <ruleNumber>589</ruleNumber>
    <fieldName>systemLangCode</fieldName>
    <code>field.empty</code>
    <desc>System language code is required.</desc>
    <ftype>2</ftype>
    </fault>
    </ns1:genericFault>
    I would really appreciate if someone could guide me on how to resolve this
    Regards,
    -Nilay

    There is this $header variable which you should populate before calling the BS. What is the type of BS? If it is WSDL BS , Any Soap BS then above solution will work. I assume that yours is WSDL based BS and setting $header should resolve this issue.
    AnyXML and Messaging type BS services requires that you create proper pay load (setting $header will not work).
    There is also other actions Set Transport Headers {outbound request/inbound response} which can be used to set transport related headers but not soap headers.
    Manoj

  • Domain Value Mapping in Oracle Service Bus

    Hi all,
    I am looking for a similar functionality with Oracle Service Bus that exist in the Enterprise Service Bus.
    The XPath function is lookup-dvm() that looks up the value based on a domain value mapping.
    The case is to use this in a XQuery mapping.
    Any input or experience on this?
    Thanks,
    Knut

    Currently out-of-box implement of similar functionality in OSB is not possible. This DVM feature will supplied out of box in future releases of OSB. Talk to your sales representative to get exact date lines for this feature.
    Thanks
    Manoj

  • SOA Suite 11.1.1.4.0 - Unable to invoke REST service from BPEL

    Hi all,
    I am trying to invoke a REST service from BPEL.
    I am supposed to call the following REST URL:
    http://apolloiserdev.corp.webex.com/ExportComplianceWS/webresources/ECCheck/emailDomainCheck/[email protected]
    In order to achieve this:
    1. I created an empty composite
    2. Added a HTTP Binding as external reference
         2.1 In the HTTP Binding wizard, I copied the above URL in 'Endpoint'
         2.2 Operation Name --> request-response
         2.3 Verb --> GET
         2.4 Created XSD for Req and resp and added those in 'Messages'
    Now, when I deploy and test this process, I get the following error messages:
    Unable to access the following endpoint(s): REPLACE_WITH_ACTUAL_URL
    Unable to access the following endpoint(s): http://apolloiserdev.corp.webex.com/ExportComplianceWS/webresources/ECCheck/emailDomainCheck/[email protected]/ExportComplianceWS/webresources/ECCheck/emailDomainCheck/[email protected]
    However, when I open the same URL using my web browser or test it using Mozilla REST client, I get a success response.
    Am I missing out something in my BPEL process?
    Regards,
    Arindam

    Not sure if this helps. But for rest based services we need to create a WSDL which has http protocol and get/post method like below
    types>
    <message name="HttpPostParamIn">
    <part name="param1" type="xsd:string"/>
    <part name="param2" type="xsd:string"/>
    </message>
    <message name="HttpPostParamOut">
    <part name="Body" element="get:Request"/>
    </message>
    <portType name="HttpPostParamPortType">
    <operation name="PostData">
    <input message="tns:HttpPostParamIn"/>
    <output message="tns:HttpPostParamOut"/>
    </operation>
    </portType>
    <binding name="HttpPostParamBinding" type="tns:HttpPostParamPortType">
    <http:binding verb="POST"/>
    <operation name="PostData">
    <http:operation location="/EchoApp/echo"/>
    <input>
    <mime:content type="application/x-www-form-urlencoded"/>
    </input>
    <output>
    <mime:mimeXml part="Body"/>
    </output>
    </operation>
    </binding>
    <service name="PostParamService">
    <port name="HttpPostParamPort" binding="tns:HttpPostParamBinding">
    <http:address location="http://localhost:7001"/>
    </port>
    </service>
    <plnk:partnerLinkType name="PostParamService">
    <plnk:role name="PostParamServiceProvider">
    <plnk:portType name="tns:HttpPostParamPortType"/>
    </plnk:role>
    </plnk:partnerLinkType>
    definitions>
    And then use this wsdl to invoke it from BPEL.like any other wsdl using partner link.

  • REST Services - Permission exceptions being thrown

    In setting up a mobile site which will make use of REST services we have started to see exceptions in the log file. These exceptions do not happen all the time - that is they are random in nature. We may see them for about an hour or so and then not see them for a day.
    We are seeing the same exceptions as identified in this Re: REST secureProductCatalog exception and I used the following [Not able to invoke ATG Rest services thread|https://forums.oracle.com/forums/thread.jspa?messageID=10615221&#10615221] as a reference as well.
    Working through the ATG10 document, have set up the restSecurityConfiguration.xml which identifies the beans with a secure setting of false, have set up the secureCustomCatalog.xml which identifies each of the item descriptors and the acl that is to be applied.
    Have created an external user as well.
    I created a simple unit test class - outside of my development environment - to simulate the remote call to the ATG server to verify the behavior. Everything passed.
    Now I was able to reproduce the issue if after I establish the session (LogIn) , I log out before the call to the repository.
    What I am wondering is -
    1. Is there any other way in which this kind of error can be created/occurred?
    2. Is there any other configuration that needs to happen?
    As a side note, is there any way in which to configure REST so that it does not dump a stack trace to the log file in the event of this error - possible to create a more meaningful shorter message? When the issue happens, it just fills up the log files.

    The issue turned out to be centered around the amount of connections from the mobile site to the REST service. This was verified via a load test.
    Solution was to modify the mobile logic that would check if a connection/session was already open/available and use it, otherwise create a new one.
    This seems to have addressed the issue

  • TNS timed out error while testing REST service

    4.2
    11g
    Hi There,
    We had a new application which was to get and post data using REST API which connects to an internal server. This works fine when we use the Google Chrome Advance REST application through the browser, but get a TNS timed out when trying through Apex
    Even a simple sql in the SQL workarea in Apex throws the same error
    select utl_http.request( 'http://ourserver.com/api/subscriptions') test
    from dual;
    ORA-29273: HTTP request failed ORA-06512: at &quot;SYS.UTL_HTTP&quot;, line 1130 ORA-12535: TNS:operation timed out
    Any idea, what the issue could be?   Works fine from the browser though using a REST client
    Trying this for the first time.
    thanks,
    Ryan

    Hi Ryan,
    During your installation, did you follow the steps to enable Network Services, which is one of the requirements when using web services in APEX.  You'll find the necessary information in the installation guide.   Also in your utl_http.request call, have you tried specifying a proxy, if one is required?  You might also want to take a look at at apex_web_service API, specifically the make_rest_request function, which might be useful if you're looking to invoke a RESTful Service via PL/SQL in your application.
    Regards,
    Hilary

  • Invoking a Web Service that Requests NTLM Authentication in BPEL Process

    Hi,
    I am trying to invoke a webservice which requires NTLM Authentication.able to test the service through SOAP ui .
    Followed the steps memntioned in the oracle doc in order to invoke the same service through BPEL Process, some how I am facing issue when BPEL invokes the service. Here is the error message
    oracle.fabric.common.FabricException: oracle.fabric.common.FabricException: Error in getting XML input stream: Response: '401: Unauthorized' for url:
    Oracle doc link  :-
    http://docs.oracle.com/cd/E28280_01/admin.1111/e10226/soacompapp_secure.htm#BABJEBIF
    http://www.albinsblog.com/2014/04/oraclewebservicespreemptivebasicauth.html#.VK5UEiuUeFM
    The above link discuss about the properties that need to be set in composite.xml file in order to invoke the service.
    I am using SOA 11.1.1.6,  tried to implement the same steps but i could see the error message "Unauthorized for url ********** "
    Could you please help me on this.
    Thanks

    Hi Guys ,
    Got to kow that this is a bug. Some how following link helps in sending the payload to webservice which requires NTLM authentication thru JAVA.
    Thoughts Oracle SOA OSB: NTML Authentication - Oracle SOA suite
    Thanks

  • Rest service DELETE doesn't work with OSB

    Hi,
    I am using OSB 11g, I am using OSB proxy to monitor external rest services call. I've created a business service that point to the external rest service and I created a proxy that is routed to my business service. I modified the flow by adding a piplinepairNode -->requestPipline-->stage -->created two assign and created two variable one for the id and another one for the productID. Then I modified the business service flow as follow:
    created two insert, one to define the method, which is DELETE and another one to set the relative-URI to the productID variable and I set the response to replace the . in the body with $body, following this post: http://blogs.oracle.com/jeffdavies/entry/restful_services_with_oracle_s_1
    When I test it using osb console Execute, I can see my productID variable is set to $inbound and it is passed all the way to the business service, where it should call the external rest service with the relative-URI, which is set to my productID. it doesn't work, I get 404 error, which is undefined, I believe the reason is because business service is trying to call the external rest service with
    http://localhost:{port}/deleteProduct and the rest service expect this URL
    http://localhost:{port}/deleteProduct/2 or {productID}
    can you please help and tell me what I'm doing wrong?
    appreciate any kind of help
    Thanks
    M.

    Please refer -
    http://blogs.oracle.com/jeffdavies/entry/enhanced_rest_support_in_oracl
    Regards,
    Anuj

Maybe you are looking for

  • How do I... Unblock an email address

    I have managed to put an email address of a friend to reject all messages.  The messages they send to me get sent back to them with a message of undeliverable. Any ideas on how to resolve the issue?  I have checked junk mail.  I have added the addres

  • Getting a 150:30 error message after a reinstall of my MAC OS

    Licensing has stopped working for my Web Premium CS4 and my InDesign CS4 software.

  • Master page issue

    Has the problem of objects in the master pages falling out of the document after exporting to pdf  been addressed in CS6?

  • Configuring Ejb 2.1 in different server

    Hi, I have two EJB's (Version 2.1) say CustomerEJB and AccountEJB both are stateless session beans. I have two Jboss servers configured in two different machines naming it Server 1and Server 2. These servers are not in cluster I like to deploy the Cu

  • Function for Sending Mail Thru SAP

    Please let me know if there is any function available in SAP thru wich I can send Emails to other mail box . Please give me some example code if any available.