Service callout guidance for Payload configuration..
To all,
Scenario:
1. My proxy service calls Business service-A.
2. Business service-A returns response to proxy service.
3. Using this response + some original request fields the proxy service calls Service-B.
4. Service-B returns the response to proxy service. Proxy service then returns this response to Client.
I am using Proxy service--->Service callout to Business service-A and then after receiving the response from A-, the proxy service--->route to Business service-B as way to achieve above.
The problem:
While doing service call out to Business service-A, OSB prompts to enter following fields for "*configure SOAP Body*":
SOAP Request Body:
SOAP Response Body:
SOAP Request Header:
SOAP Response Header:
What should I enter in this?+
Also, what is the difference between *"Configure SOAP body"* and *"Configure Payload Parameters"*?*+
Fields in *"Configure Payload Parameters"*:
Request Parameters:
SiebelMessage:
StatusObject:
Response Parameters:
SiebelMessage:
SOAP Request Header:
SOAP Response Header:
The Business service-A is a Siebel service.
When i get response back, where should i store it? and how can i map the response from back end Siebel service to response desired in my schema format?
Please help! I am a newbie here.
Thanks and Regards,
Swapnil Kharwadkar.
Edited by: Swapnil Kharwadkar on May 27, 2010 1:44 AM
Hey all,
I have solved problem with help of one my friend..Actually its possible through routing the service. I agree its a different approach than service callout but it acts as a quick fix.
The key issue is to map :
1. Request in format of Proxy service schema to Request of Business service (Legacy service-In this case Siebel)
2. Response in format of Proxy service schema to Response of Business service (Legacy service-In this case Siebel)
This is possible using XQuery transformation.
Steps to achieve this::
1. Create a XQuery by mapping proxy service schema and business service schema.
2. Now Create message flow as following: Proxy service-->Pipeline Pair-->Stage1-->Route to business service.
3. Now in stage1, choose Add an action-->Message processing-->Replace.
4. In replace, do this - Replace ./* in variable body by Xquery which you created in 1.
This will work smoothly.
If any problems, let me know. If any insights on above, please comment.
Will update this thread whenever I get info about service callout working. Meanwhile anybody searching for quick fix, can use this.
Thanks and Regards,
Swapnil Kharwadkar.
Similar Messages
-
Shared services is asking for re-configuration.
Dear Gurus,
I am using 9.0 version shared services, it was working fine since long back, recently domain server have been changed, for the updation i edited the IP and restarted the shared services, surprisingly the shared services is not allowing me to login and is asking for re-configuration as the database is not configured properly.
I am using native directory also, so there should no data(user info and provision) loss.
i am going to perform the below steps:-
1) executing the Cssimportexport utility and take the back up.
2) taking the back-up of shared services repository
3) re-configuring the shared services with the existing repository.
4) executing the cssimportexport utility to restore
i have db-archive and db-recover utilities.
please let me know if iam going wrong.
thanks in advance
Giri PrasadThere is a document that I got from Oracle support called "System9-moving repository.doc" it goes thru the steps of rehosting. I it is more then just changing IP addresses. the document shows the configuration files that need to be modified and database entries.
You should request a copy from support. -
How to configure proxy services in OSB for Rest based services?
how to configure proxy services in OSB for Rest based services implemented using Jersey (Rest).
The Client need to contact OSB proxy servies by posting application/xml using jersey client and OSB proxy service will call the OSB business service.
i would like to know how to get this request in OSB proxy service and send it to the business service and get the response back.I would suggest you refer to the below links:
https://blogs.oracle.com/jeffdavies/entry/restful_services_with_oracle_s_1
https://blogs.oracle.com/jamesbayer/entry/using_rest_with_oracle_service
Hope this helps.
Thanks,
Patrick -
when i switch on my ipad 3 it asks for handset configuration and it declines it and my 3g services gets off? y?
oops.....that was for a Mac.
Try resetting the device (hold the home and power keys down until the Apple logo appears).
Barry
Message was edited by: Barry Hemphill -
OSB - Problem using the Service Callout control in a proxy service
Greetings,
Using a Service Callout control in a proxy service requires to check one of the following two options: Configure SOAP Body or Configure Payload Document. Both require to write SOAP code and to assign it to variables that will be used in the Service Callout control. I found quite inconsistent to have to write SOAP code in order to use a tool which is supoposed to avoid writing Java code. In this case I largely prefer to write Java code and doing things manually. Is there any other way to use this control ?
Many thanks in advance,
NicolasI'll try to explain again, however it seems very clear. I'm using a Service Callout control in order to call a JAX-WS web service. This web service is using a "document" style, of course. Consequently, all its operations (messages) are document-centric and they have only one parameter: the document. In order to use tha Service Callout control, one has to construct the <siap:body> element, to assign it to a variable and to provide the name of this variable in the Request Body test field of the Service Callout Properties dialog. Accortdingly, one needs to assign something like:
<soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<osb:myOperation xmlns:osb="http://www.simplex_software/fr/">
<osb: .../>
<osb:myOperation>
</soap>
Now, for those who have understood what I'm talking about, here come the question ? Is that the only way to use the Service Callout control ? If yes, this control is useless. If no, what is the other way to use the control in the given context while avoiding providing a <sopa:body> written manually ? -
Service Callout to HTTP Post Business Service?
Hi,
I have created a "Business Service" with following config,
1) Any XML Service
2) Prtocol- HTTP
3) HTTP Request Method- Post.
I have created a Proxy Service , which is "Any XML Service" based on HTTP ptotocol.
inside the message flow of proxy service i am routing to the Above Business Service passing query parameter. The business service returns an XML.
How do i make a service callout to the business service assing a query string?
I need this functionality to work because i have to call multiple business service (endpoint is a jsp which accepts query string) inside a proxy service and retreive xml from response , merge them and send it back to the client(invoking proxy service).
Thanks,
AnupHi Gregory,
In fact when i used route node to invoke a business service i modified "URL dynamically by setting the value in the pipeline variable $outbound", it worked here.
Same i tried on Service Callout, it did not work. Also when we create a service callout action it expects us to select either "confugure soap body" or "configure payload document" followed by
1) Request Document variable
2) Response Document variable.
What parameter should i set for above fields?
Thanks,
Anup -
Service Callout - Business Service
Hi.
I have followed this guide (http://biemond.blogspot.com/2009/06/osb-1031-with-database-adapter.html) to create my dbadapter for osb.
Now i'm trying to use a Service Callout to call the BS but the options to set the input variable for the service are not available.
I will try to set the $body and test to see what happens.
Under "Request Actions" of the service callout, $body is a local variable or any change made will mess up the global $body ?
Thank you.Service callout has two options -
1. Configure Soap Body
2. Configure Payload Document
Make sure that you are selecting the appropriate one.
Please refer section "4.11.31 Service Callout Action Properties" -
http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15866/ui_ref.htm#i1291067
Regards,
Anuj -
BEA-382502 -- OSB Service Callout action received an error response
Hi,
I am trying to develope a simple application with two proxy services and Business services. The first proxy sevice communicates with the second one which in turn communicates with Business service.
I am receving this error during the communication between the proxy services.
I have tried enabling both "configure Soap body" and "configure payload document" to pass the request from one proxy service to other. In either case am receving the same error. Can you please help me here.
Thanks in Advance,
Mahi
Edited by: Mahidhara on Sep 23, 2009 12:33 AMHey all,
I have solved problem with help of one my friend..Actually its possible through routing the service. I agree its a different approach than service callout but it acts as a quick fix.
The key issue is to map :
1. Request in format of Proxy service schema to Request of Business service (Legacy service-In this case Siebel)
2. Response in format of Proxy service schema to Response of Business service (Legacy service-In this case Siebel)
This is possible using XQuery transformation.
Steps to achieve this::
1. Create a XQuery by mapping proxy service schema and business service schema.
2. Now Create message flow as following: Proxy service-->Pipeline Pair-->Stage1-->Route to business service.
3. Now in stage1, choose Add an action-->Message processing-->Replace.
4. In replace, do this - Replace ./* in variable body by Xquery which you created in 1.
This will work smoothly.
If any problems, let me know. If any insights on above, please comment.
Will update this thread whenever I get info about service callout working. Meanwhile anybody searching for quick fix, can use this.
Thanks and Regards,
Swapnil Kharwadkar. -
Where is a simple example of using a service callout?
I am using the oracle service bus and am need to obtain the result string from a webservice.
1)
I am using a service callout in one of the stages:
Service Callout to D2L Webservices invoking getOrgRole
Configure Payload Document is checked
Request Document Variable: $body
Response Document Variable: $body
SOAP Request Header:
SOAP Response Header:
Request Action Assign $body/enterprise/person/sourcedid/id/text() to variable inData
Response Action:
2) I need to configure the payload so $body/enterprise/person/sourcedid/id/text() is passed to the Request Document Variable. How do I do that?
3) what do I use to get the retrun string from the webservice?
4) I am getting a BEA-382500 error.
<con:reason>
OSB Service Callout action received SOAP Fault response
</con:reason>
<con:details>
<con1:ReceivedFaultDetail xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
<con1:faultcode xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">soapenv:Client</con1:faultcode>
<con1:faultstring>Cannot find dispatch method for {}</con1:faultstring>
5) where is a simple example of calling a webservice from a message flow in oracle service bus?3) what do I use to get the retrun string from the webservice?If the web service call is successful, the response is stored in the context variable *$body*
4) I am getting a BEA-382500 error.
<con:reason>
OSB Service Callout action received SOAP Fault response
</con:reason>
<con:details>
<con1:ReceivedFaultDetail xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
<con1:faultcode xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">soapenv:Client</con1:faultcode>
<con1:faultstring> Cannot find dispatch method for {} </con1:faultstring>Looks like there is a problem in the operation you are trying to invoke via the business service. Also please verify the exact message going out of the wire to the Backend Webservice.
Are yo able to invoke the backend service directly from soapUI or similar tool? If yes, you can enable tracing on the Business service and capture the request sent out from OSB and compare the same with the one that works in soapUI. This should lead you to the exact issue.
5) where is a simple example of calling a webservice from a message flow in oracle service bus?Please refer to http://www.oracle.com/technetwork/middleware/service-bus/osbsamples-085201.html for the samples.
Hope this helps.
Thanks,
Patrick -
How to do service callout with the incoming JMS message in OSB 11g
Hello All,
I have a specific requirement for which I am creating a kind of POC where I need some help in OSB, however am new to OSB.
My Environment:
1> I have a request queue (deployed on a WLS domain) - WFReq_WS
2> I have a response queue (deployed on a WLS domain) - WFRes_WS
3> I have created a ProxyService (request/response type) in OSB 11g which is simply mapping the incoming message in WFReq_WS to WFRes_WS
4> I have a WebService (it is currently a simple hello WebService for testing) which takes a string and returns the same string with an added 'Hi' in front of it (e.g. If you send Jack, it will return 'Hi Jack')
My Requirement:
1> I have to do some mechanism in OSB, by which while mapping the message from WFReq_WS to WFRes_WS (through the proxy service I have), it will pick the JMS message (which will be a string/text) and will make a service callout to the Webservice I mentioned using the message as the input parameter of the WebService.
2>Now when the response of the WebService will come, OSB should send this response as the message in the response queue (WFRes_WS) I mentioned above.
To simplify the requirement using an example:
A> I will send a text/String message (say Jack) to the request queue (WFReq_WS)
B> OSB should pick the message (Jack) and make a service callout to the webservice
C> webservice will return 'Hi Jack'
D> OSB should send this to the response queue (WFRes_WS)
I know the above might look very basic question to the PROs, but please elaborate (step by step) what need to be done, since I do not know OSB.
Thanks a lot for your help !Your example points A and D are easily done by having a "Proxy Service" which has the following details:
Service Type = Messaging Service
Request and Response type = Text
Protocol = jms
Endpoint URI = your request queue (format like 'jms://localhost:7013/weblogic.jms.XAConnectionFactory/QueueJNDIName')
Checkmark "response" so that the proxy service automatically delivers the response to another queue - your response queue
Response URI = jms://localhost:7013/weblogic.jms.XAConnectionFactory/QueueResponse
Now since your "Hello" webservice is (probably) a SOAP xml service you need to "convert" your text based JMS message to xml before sending it on to the "Hello" service.
Your JMS proxy can do that by just doing a "Assign <whom>{$body/text()}</whom>" to a variable (lets call it 'reqHello')
Now your JMS proxy should actually call the Hello service and since your JMS proxy is text and the Hello service is SOAP you cannot just "pass" on to the Hello service in a "Route to". Instead you can do a Service Callout where you can specify your "reqHello" variable as payload and a "respHello" as response variable.
Now you have the "<whom>Hi jack</whom>" in the response variable and since the JMS response needs to be text format you can "extract" the text value into the body variable of the JMS proxy (use "replace /* in body with $respHello/text()" - replace node contents)
The actual Hello service is a simple "SOAP" based Proxy Service. Add a pipeline and add a stage in the reponse pipeline. Do a ...
Assign fn:concat("Hi ",$body/whom/text()) to $whomVar
Replace whom in body with $whomVar (replace node contents) -
How to do a service callout to a service with/without MTOM support
I have a problem trying to call a business service from a proxy service as a service callout related to MTOM.
Specifically, the service I have is a Java based web service with the following signature:
void archive(byte[] bytes, String fileName)
When the WSDL is generated it maps the byte array to base64Binary as follows:
<xs:element name="archive">
<xs:complexType>
<xs:sequence>
<xs:element name="bytes" type="xs:base64Binary"/>
<xs:element name="fileName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Now in order to call this I try to build the XML payload withint the proxy message flow and I get this (from the logger):
<8/06/2009 01:07:12 PM NZST> <Debug> <AlsbStagesTransformRuntime> <BEA-000000> <Service callout request payload:
<archive xmlns="http://mtm.oracle.com/tools">
<bytes>
<con:binary-content ref="cid:518df4b0:121bd6029c5:-7fd9" xmlns:con="http://www.bea.com/wli/sb/context"/>
</bytes>
<fileName>RQRETMAINT20090608130711.csv</fileName>
</archive>
as you can see the bytes are being passed by reference and then when the service is called I get the following ("*non-MTOM endpoint received a MTOM message*") error:
<8/06/2009 01:07:13 PM NZST> <Debug> <AlsbPipeline> <BEA-000000> <RegistryOutbound_SB_New/ProxyServices/ftpRqRetMaintToRegistry: +PipelineContextImpl.generateFault - messageID:2169050999921023879-518df4b0.121bd6029c5.-7fdc, errorCode:BEA-382500, errorReason:OSB Service Callout action received SOAP Fault response, errorDetails:<xml-fragment xmlns:con="http://www.bea.com/wli/sb/stages/transform/config">
<con:faultcode xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">soapenv:Server</con:faultcode>
<con:faultstring>[Server CodecHandler] Failed to decode
-> non-MTOM endpoint received a MTOM message</con:faultstring>
<con:detail>
<bea_fault:stacktrace xmlns:bea_fault="http://www.bea.com/servers/wls70/webservice/fault/1.0.0" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">weblogic.wsee.codec.CodecException: non-MTOM endpoint received a MTOM message
at weblogic.wsee.codec.soap11.SoapCodec.decode(SoapCodec.java:170)
at etc
</bea_fault:stacktrace>
</con:detail>
<con:http-response-code>500</con:http-response-code>
</xml-fragment>>
So it seems the business service expects the "bytes" passed by value whereas the proxy is passing by reference. I tried changing the proxy to not use MTOM by disabling XOP/MTOM support in the Message Content tab (actually I did this in the proxy that calls the one in question since it uses the local transport and so doesn't have such a tab) and leaving it enabled but pass by value and it had no effect for some reason.
I've read the User Guide section on MTOM support but it was not that helpful so any pointers to better information would be much appreciated.
regards
Edited by: mdsrobbins on Jun 8, 2009 1:44 PMCan you test back-end MTOM end point through a route node and see if its working? I doubt the issue has nothing to do with SC but with the MTOM end-point implementation.
non-MTOM endpoint received a MTOM message") error: hints that the service call out is sending a mtom message but the end-point is not accepting the message
Manoj
Edited by: mneelapu on Jun 8, 2009 11:25 AM -
OSB Service Callouts - HTTP Threads
Hi All,
We are having issues with OSB service callouts calling the business services from the Proxy Services. Due to excessive usage of Service Callouts, the proxy services are hanging out in the OSB server. From the Proxy services,we could able to successfully invoke the business services ( SOA Composistes , EJB Webservices etc ) and the webservices are taking few milliseconds to process the requests,but the response is not reaching the OSB Proxy Service. Ideally the behaviour is not happening for all requests, but for few messages. We have set up a dedicated Worker manager ( 10 Min Threads ) in the Admin Console and mapped the Worker manager to the business services ( dispatch policy ),but with no luck. We have followed the below link and its not working.
http://allthingsmdw.blogspot.co.uk/2012/09/osb-service-callouts-and-oql-part-3.html
Request to help us incase if you happen to see this behavior earlier.
Thanks,
PhaniHi Phani,
It is a known issue with ALSB/OSB. There is a documentation in oracle as well regarding that "ALSB/OSB - Proxy Service Callout Causes Stuck Threads Under High Load [ID 861724.1]".
Symptoms
Stuck threads when calling a proxy service with a service callout /publish under high load. Proxy services using only ROUTE work without problems.
Cause
The service callout instantiates a new thread.
As the proxy services are running in the default thread pool there will be no thread available for the callout under high load because all threads are blocked by the proxy services waiting for the response.
This is expected behavior when using a service callout action and can be resolved by correct thread tuning.
Solution
A separate Workmanager needs to be configured for the Proxy service. This can be done by using the Dispatch Policy for specific proxy services (JMS, WS ..).
For detailed information go to the OSB transport specific documentation and look for Dispatch Policy.
There you will also see the link to the WLS Workmanager documentation.
Please create a Workmanager using <max-threads-constraint> to limit the number of parallel executing proxies.
Using this configuration the proxy will not block threads in the default queue.
The service callout will still use the threads from the default thread pool.
Hope this helps.
Regards,
Karan
http://learn-oraclesoa.blogspot.com/ -
Conditional Branch after an service callout
Hi All
I am new to configuring services in OSB.What i want to do is first call a service and depending upon the returned value ,route to other services.But the result of the service callout is availabe in a variable ,say responseBody,and for conditional branch we need only xpath/xquery to test conditions.
Please Help.
Regards,
ChinmayHi All
I am new to configuring services in OSB.What i want to do is first call a service and depending upon the returned value ,route to other services.But the result of the service callout is availabe in a variable ,say responseBody,and for conditional branch we need only xpath/xquery to test conditions.
Please Help.
Regards,
Chinmay -
Binary Content with Local Proxy Service Callout
When we have a binary-content-ref and we call a local proxy (via Service Callout), the local proxy thinks that binary-content-ref is is just a regular text payload. So the publish to FTP BS from the local proxy just puts the ref in the file.
Is there a transport setting when calling the local proxy that will allow it to know the payload is actually a binary-content-ref?
Some background:
We tried using publish (best-effort) with an exception returned but ALSB's error handling, catching, and resuming did not suit our needs for trying secondary delivery channels so we need to use Service Callout in order to get a status value back.
ThanksThe Business Service is binary. As mentioned, it works fine with publish to the local proxy but not with Service callout.
In the meantime we have eliminated the lcoal proxies but it would be great if we could reuse some functionality.
Thanks -
OSB - Error handling, report via service callout?
I'd like to use Report Action on any error happened in my services. I'd also like to keep only one Report Action to be able to change its configuration later easily if needed.
As it seems currently, if I add the Report Action to the Error Handler of the service directly, it logs the error code/reason/etc correctly, but if I move the Report Action to a separate service and add a service callout to the Error Handler instead of calling the Report Action directly, I lose the error information (I get the report message but error code/reason/details will be all NULL in the database).
Am I doing something wrong here? Is that a limitation of the product? Is there any solution to keep the report actions centralized in this case?
Thanks..hi guys,
thanks for all the suggestions though it's still not working here. Hopefully clarifying the situation:
a) service -- error handler -- report error
b) service -- error handler -- service callout -- report error
a) works, b) does not.
The syndromes for not working is that the reported message has error code, reason and detail all empty (NULL if I look directly in the database). I suspect the problem is with my service callout in scenario b).
The service callout originally was made using the following parameters:
Request document variable: body
Response document variable: response
SOAP request header: header
SOAP response header: rheader
Reading your suggestions I tried to set the request document variable from 'body' to 'fault', but it did not help either: I get the report message but still no error information in the message.
How exactly should this service callout look like to properly transfer the error details to the called pipeline?
Maybe you are looking for
-
Does anyone have any idea why one week I could lose my playlist then this week lose most of my music from ITunes? How can I get it back without having to download it again
-
Multiple Payment Methods problem in F110 - Parameters
<b>Prob : Wehn I enter more than one payment method in Parameters in F110 only the 1st Payment method entered is saved. The other payment method gets deleted automatically.</b> Following is already done : 1. All the payment methods entered in F110 Pa
-
Making hidden javascript fields pass accessibility checks
I have created a fillable PDF form. In the date field, I was required to add a pop-up calendar using which creates lots of hidden fields of javascript from formrouter.com. The calendar feature works fine. All of those fields needed to create this c
-
How to create one soap interface with two soap action?
Hi, I need to create one SOAP Interface with two or more webmethods (soap action), for example: Interface: MI_Outb_User Webmethods: createUser, searchUser, deleteUser. Can anybody helpe me?
-
Where is the CLASSIC ROUTER SETUP SOFTWARE?
I'm using EA4500 in an no Internet connecting wireless network. So the classic firmware and classic router setup software are the best for me. But, Where are the download links for the both two gone in EA4500 support page? the GREAT Google tell me he