Passing attachment from a SOAP Proxy to a REST Business Service
I am trying to create a SOAP proxy for a REST service on OSB 10g. I have to send a binary attachment as part of my SOAP request. I tried to use Service Callout to call my REST business service. Even though I receive the attachment as part of the request (I could log $attachments and see it), it is not being sent to the Business Service. I would appreciate any help. Thanks.
Ardi
OK, here is what I found out. I was using service callout to invoke the REST BS which does not seem to work, which I have not understood why?
If I change to Routing to the invoke the BS I could pass the attachment and get it to work. I would appreciate any thoughts on the Service Callout issue.
Thanks,
Ardi
Similar Messages
-
SOAP proxy for RESTful business service
Hi,
I have a requirement to consume a 3rd-party RESTful web service from within WebLogic Integration 9.2.3.
My organisation also has an OSB 10.3 installation which is lucky since WLI 9.2.3 does not readily support RESTful service consumption.
My plan is therefore to proxy the RESTful service via the OSB with a SOAP proxy service and consume the proxy from WLI.
Can anyone provide guidance on how I might go about this?
Cheers,
RobI want to give it a try :)
1. Create a business service with the 3rd-party RESTful web service WSDL and point it to the URL where it is currently deployed/hosted.
2. Create a Proxy Service to invoke the 3rd-party RESTful web service via the business service. (I think you will need to define a simple WSDL to be able to use this service from WLI)
3. Then import the ProxyService WSDL in WLI and invoke the same via the WebServiceControl.
I hope this works out well for you.
Thanks,
Patrick. -
ALSB passing NTLM security credentials to end point URL in business service
Hi,
We are using AXIS API to pass NTLM authentication details to SharePoint Web Service by setting the user name and password details as below.
call.setUsername
call.setPassword
This is working fine when we invoke the MOSS search WSDL directly. However, when we introduce ALSB in between and create proxy and business service, the user name and password set using call.setUsername and call.setPassword are not passed correctly and we are getting the below error.
BEA-380000: Unauthorized
Could any one help how this can be resolved?
Thanks
SampathRK,
Use the *$inbound/ctx:transport/ctx:request/http:query-string* element to get all the arguments in the URL.
http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/httppollertransport/transports.html#wp1083292.
After that You can have conditional routing to Route it specific BS either Fiction BS or WarBased BS or you can try using Routing Table.
For doing that do i need to maintain any schema for Business Service?No , I think if you just need to route the request to JMS BS coming from Other Application,
But if You want to validate the request which you would be sending to BS then use schema to validate your incoming request.
Regards,
Abhinav -
"NO_RECEIVER_CASE_BE" error with SOAP Sender assigned to a Business Service
Hi all,
we have a strange error with XI3.0
We created a configuration scenario where the initial step is done by a Business System, that uses a SOAP Sender communication channel to send its request. And this works great when testing it with XMLSpy.
But we then needed to shift from a Business System to a Business Service, as the machine sending the SOAP request changed and was not anymore part of the landscape, but elsewhere.
Hence we recreated a SOAP sender which we assigned to this new business service, doing absolutely the same configuration work as for the other soap sender of the former business system.
Yet when testing it through XMLSpy, we everytime get a NO_RECEIVER_CASE_BE error back, stating that "No receiver could be determined". Yet when checking in sxi_cache, receiver determination is clearly there. All the blogs I went into are only refering to Business System for a SOAP sender, so I was wondering if any of you already managed to assign a SOAP sender to a business Service.
Regards,
Cedrichi,
so you sue SOAP to make a query ? (sync)
or to send the data to XI ? (async)?
if async then make sure
you use <b>Quality of Service</b> other then BE
in your soap adapter channel
Regards,
michal
<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a> -
How to Pass Attachment from one process to other.
Hi,
Suppose there are two processes.I am starting 2nd process from 1st process through GP API.
How to pass the attachments?
Regards,
PratikHi,
I seems its GP related. Try out the link below hope u find the solution -
Cannot pass data from Web Dynpro to XI using a Web Service
Hi All,
We have been facing some issues when we try to pass on a SOAP / XML message via a WSDL from a WebDynpro App to XI - No data is reaching XI interface. The payload data details for the inbound message in XI is empty. When testing the WSDL separately using XML spy the data passes to the XI successfully.
The problem only occurs when we pass on the data from the WebDynpro component.
We are also passing additional information _user and _password to ensure authenticated access.
Steps that we completed so far:
1. Created a WSDL which we can use to communicate to XI interface.
2. Imported WSDL using webdynpro Web Service Model import
functionality.
3. Bound WSDL with webdynpro components.
4. Pass on data through WSDL contexts.
5. Execute WSDL model.
Any help would be much appreciated.
Thanks,
RRHi,
please check document:
Almost Everything about Transaction Launcher u2013 Part
http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/3059fb20-987f-2e10-ef82-d147b9b5e8b4
Denis -
Extract fields from the SOAP body during mapping
Hi all,
I have an Abap Proxy to SOAP scenario with a main payload and an attachment. During mapping I need the reference of the attachment to store the reference in the main payload. I don't need the attachment itself.
SOAP-Body:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Eingangs-Message
-->
- <SAP:Manifest xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="wsuid-manifest-5CABE13F5C59AB7FE10000000A1551F7">
- <SAP:Payload xlink:href="cid:payload-E742FF47D930DE5CE1000000C107826A @sap.com">
<SAP:Name>MainDocument</SAP:Name>
<SAP:Description />
<SAP:Type>Application</SAP:Type>
</SAP:Payload>
- <SAP:Payload xlink:href="cid:payload-EE42FF47D930DE5CE1000000C107826A @sap.com">
<SAP:Name>hugo.txt</SAP:Name>
<SAP:Description />
<SAP:Type>ApplicationAttachment</SAP:Type>
</SAP:Payload>
</SAP:Manifest>
I need the attachment reference as string inside my main payload: cid:payload-EE42FF47D930DE5CE1000000C107826A @sap.com
I wrote an user defined function to select the MessageId, but the MessageId is only part of the reference to the main payload.
String constant;
java.util.Map map;
map = container.getTransformationParameters();
constant = (String) map.get(StreamTransformationConstants.MESSAGE_ID);
return constant;
Has anybody an idea to get the reference of the attachment from the SOAP body with an user defined function or an adapter module?
Thanks and kind regards
FrankHello,
thank you all for the information. I found a solution for my problem on the sender side. I wrote an own helper class with the method create_attach_from_txt_withref. This method build an attachment with an own reference and write the reference back to the payload.
This reference will not be changed within the execute_asynchronous method of the proxy.
Method parameters:
P_DATA Importing Type STRING
P_TYPE Importing Type STRING
P_NAME Importing Type STRING
P_ATTACHMENT Exporting Type Ref IF_AI_ATTACHMENT
P_AREF Exporting Type STRING
Method coding:
METHOD create_attach_from_txt_withref.
DATA: lo_attachment TYPE REF TO cl_ai_attachment,
l_payload TYPE REF TO if_xms_payload,
l_pref TYPE sxms_mf_s,
l_guid TYPE guid_32,
l_aref TYPE string.
CLASS cl_ai_factory DEFINITION LOAD.
" create the attachment
p_attachment = cl_ai_factory=>create_attachment_from_text(
p_data = p_data " attachment data
p_type = p_type " attachment type
p_name = p_name ). " attachment name
" we need an implementing class of the interface if_ai_attachment
lo_attachment ?= p_attachment.
" get the new payload
l_payload = lo_attachment->get_payload( ).
" get the reference of the payload
l_pref = l_payload->getreference( ).
" build an own reference
CALL FUNCTION 'GUID_CREATE'
IMPORTING
ev_guid_32 = l_guid.
CONCATENATE 'payload-' l_guid '@sap.com' INTO l_aref.
CONCATENATE 'cid:' l_aref INTO l_pref-href.
" set our own reference
l_payload->setreference( reference = l_pref ).
" write back the modified payload
lo_attachment->set_payload( p_payload = l_payload ).
" return of the reference
p_aref = l_aref.
ENDMETHOD.
If anybody has an idea how to read the soap body within an adapter module please let me know.
Regards
Frank -
How come i can send an attachment from my aol mail
how come I can send an attachment from my aol mail
maybe because it's a service provided by most email providers?
-
Having problem in passing the values in business service in OSB.
hi ,
in my requirement i have to write a string in AQ , i have created a AQ adapter and a business service related to that now i have a variable which contains the string i have to pass, how i can paas this variable in my business service using service callout or publish ??
Edited by: 990437 on Mar 6, 2013 1:36 AMI checked the Business Service using the test console . It worked fine .
There is no listener on the AQ . The test messages and the messages sent using the service callout are still there.
I have logged the body variable and I can see its fine.
The thing is Service Callout works but at the end throws an error :
<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <0000Jp3_I_3ATOELn6k3yZ1HE3Q8000002> <1362640884743> <BEA-000000> <Started Payload Translation...>
<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <0000Jp3_I_3ATOELn6k3yZ1HE3Q8000002> <1362640884744> <BEA-000000> <End of Payload Translation...>
<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <0000Jp3_I_3ATOELn6k3yZ1HE3Q8000002> <1362640884744> <BEA-000000> <Extracting Header Properties from XMLRecord...>
<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <0000Jp3_I_3ATOELn6k3yZ1HE3Q8000002> <1362640884744> <BEA-000000> <No recipients specified...>
<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <0000Jp3_I_3ATOELn6k3yZ1HE3Q8000002> <1362640884746> <BEA-000000> <Successfully completed outbound interaction to queue - JOB_QUEUE>
<[ACTIVE]ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <0000Jp3_I_3ATOELn6k3yZ1HE3Q8000002> <1362640884750> <BEA-000000> <Closing Interaction...>
<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <0000Jp3_I_3ATOELn6k3yZ1HE3Q8000002> <1362640884750> <BEA-000000> <Closing Interaction...>
<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-01FF0221C1FA5B53DDE4> <0000Jp3_I_3ATOELn6k3yZ1HE3Q8000002> <1362640884751> <BEA-380003> <Exception on TransportManagerImpl.sendMessageAsync: unchecked exception:, java.lang.NullPointerException
java.lang.NullPointerException
at com.bea.wli.sb.transports.jca.codec.JCAAbstractMessage.getPart(JCAAbstractMessage.java:75)
at com.bea.wli.sb.transports.jca.codec.JCAAbstractMessage.getPart(JCAAbstractMessage.java:31)
at com.bea.alsb.ws.codec.internal.runtime.soap.SoapDocCodec.marshallBody(SoapDocCodec.java:67)
at com.bea.alsb.ws.codec.internal.runtime.soap.SoapCodec.marshall(SoapCodec.java:192)
at com.bea.alsb.ws.codec.internal.runtime.soap.SoapDocClientCodec.marshall(SoapDocClientCodec.java:58)
at com.bea.wli.sb.transports.jca.codec.JCAClientCodec.createResponse(JCAClientCodec.java:57)
at com.bea.wli.sb.transports.jca.binding.JCATransportOutboundOperationBindingServiceImpl.invoke(JCATransportOutboundOperationBindingServiceImpl.java:168)
at com.bea.wli.sb.transports.jca.JCATransportEndpoint.sendRequestResponse(JCATransportEndpoint.java:209)
at com.bea.wli.sb.transports.jca.JCATransportEndpoint.send(JCATransportEndpoint.java:170)
at com.bea.wli.sb.transports.jca.JCATransportProvider.sendMessageAsync(JCATransportProvider.java:574)
at sun.reflect.GeneratedMethodAccessor563.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)......................................
On the other hand the Publish Action with either QoS mode does nothing . No exception , No messages in the AQ . It does not do anything at all. -
Proxy business services in osb
In osb if i want to get data from a client then what is the procedure
I am using a business service whose endpointuri is a proxy service (protocol http)
And this business service is inturn called by my local proxy service
Is this procedure correct ?
if not then what is the correct procedure how many proxy and business services do i need to get data from my client
Thanks,
RahulHow many Proxy Services and Business Services to use depends on the use case.
For example, if your client will initiate a transaction when it has some data to send to another system then you will have to configure following flow:
First system (wants to send some data)--> Proxy Service(to receive data from Client) --> Business Service (to call the second system) --> second system web service API
Another scenario in which you need to get some data from the second system when requested by the first system (query scenario) the above flow would still remain the same.
Addition of another Proxy service depends on specific use case and scope of re-usability etc. For example if you want to fetch data from a system and that query can be reused in various processes or can also be called from various client applications then you can create a wrapper Proxy above the Business service and call this Proxy Service instead of calling the business service from your Proxy.
Domain structure also is a deciding factor, for example if you want to call a Proxy in one domain from another domain you can use a Business Service in the requesting domain. -
Proxy service routing to business services
Hi,
I'm trying to route from a proxy service to one of two business services based on a value in a message - similar to the first AquaLogic tutorial, but I've written mine from the ground up. The message flow I've configured can decide which service to invoke, but then fails with this fault message: "Failed to get operation name from the incoming request." My two "business service" web services work fine by themselves. Does the proxy service's wsdl need to match up with the business services' wsdl's? What else could I be doing wrong?
Thanks,
AndrewI mapped the operation name using the ALSB console. When selecting the business service to route to when editing the message flow, you are required by the console to select an operation. My two business services have one operation each. I have selected the operations I want to use in the routing table. Since the ALSB console is providing me with a GUI tool to select the business service and operation, I'm expecting that it will take care of putting the operation name in the message after the routing step.
-
OSB 10.3: proxy based on business service
Hello there,
the functionality to build a proxy based on a business service with Workshop10.3 seems to have "dissapeared" from ALSB 10 to OSB 10.3
Is it a bug or feature? (Or is it one of the "things will be different at Oracle now.")
As far as I can see it is nowhere documented.
thanks,
BarossaThis is still not documented and very confusing since the old docs are distributed with the downloads of the current OSB AND the "Definitive Guide to OSB" by Davies also tells you to do it with the Wizard. ;-)
Please document! But for this posting I would still be dazed and confused!! -
Removing Message Interface From Business Service
Hi Experts,
I want to remove one message interface from the Business Service.But, am not able to do so from ID.
Can anyone tell me how can this be done?
Thanks,
Sushamahi,
>>>Business Service.But, am not able to do so from ID.
if you're talking about business service (not business system)
then just select the message interface and press the minus sign
that's all
if this is not possible you may not have sufficient authorization
Regards,
Michal Krawczyk -
Extracting MIME attachment from email using OSB proxy service - email transport
Hi,
I'm reading email messages(multipart/mixed) with attachments(pdf, zip, xml and csv) from MS Exchange Server 2010 using OSB proxy service email transport.I need to save the attachments to a local folder and process one of the attachments, an XML file. Below is the proxy service config.
Proxy Service Configuration (Test1/Proxy Services/GetEmail)
Actions:
General Configuration
Service Type Messaging Service
Message Type Configuration
Request Message Type
Text
Response Message Type
None
Transport Configuration
Protocol email
Endpoint URI mailfrom:mailserver.net:143
Get All Headers No
Headers
EMAIL Transport Configuration
Email Protocol imap
Service Account Test1/Proxy Services/email_acc
Managed Server WLS_OSB1
Polling Interval 30
Read Limit 2
Pass By Reference false
Pass Attachments By Reference false
Post Read Action move
IMAP Move Folder processed
Attachments archive
Download Directory \\soasup-stor01\Vacancy\test\download
Archive Directory \\soasup-stor01\Vacancy\test\archive
Error Directory \\soasup-stor01\Vacancy\test\error
Request Encoding iso-8859-1
Message Handling Configuration
Transaction Required Disabled
Same Transaction For Response Disabled
Content Streaming Disabled
The polling is working fine. I've encoded the attachment variable to Base64 using a java callout.$attachments/ctx:attachment/ctx:body/ctx:binary-content has been passed as the byte[] input to the java method and the response is captured in $encodedAttachment. I've created a SaveFile BS(file type) with Request Message Type = Binary and Response Message Type = None. I've tried replacing the node ./ctx:binary-content in body variable with encodedAttachment in the request action of the Publish action to call the BS. One file is getting created with contents of the entire email, MIME headers and boundary parts along with the base64 encoded attachments.
<Contents from the created file>
MIME-Version: 1.0
Content-Type: multipart/related; boundary=MIME_Boundary;
type="binary/octet-stream"
--MIME_Boundary
Content-Type: binary/octet-stream
Content-Transfer-Encoding: 8bit
Thanks & Regards,
Samyajit Talukdar
: [email protected]
-----Original Message-----
From: Samyajit Talukdar
Sent: 10 April 2015 14:11
To: MS MLRP Returns
Subject: FW: 22222
Thanks & Regards,
Samyajit Talukdar
: [email protected]
--MIME_Boundary
Content-Type: application/vnd.ms-excel; name="soainfra_v$session.xls"
Content-Transfer-Encoding: base64
Content-Description: soainfra_v$session.xls
Content-Disposition: attachment; filename="soainfra_v$session.xls";
size=25618; creation-date="Thu, 27 Nov 2014 09:56:35 GMT";
modification-date="Fri, 10 Apr 2015 09:28:23 GMT"
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA
EAAAJgAAAAEAAAD+////AAAAAAAAAAD/////////////////////////////////////////////
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAA=
--MIME_Boundary--
If I put a delete action in the request to Publish action for SaveFile BS to delete the $attachments, the created file contains only the email body part and the attachment boundary part is missing.
I've uploaded the OSB log with full trace enabled.
How can I pass the encodedAttachment to the BS for saving the files?
Would iterating through the $aatachment/ctx:attachment give me the individual attachments for saving and processing, as there are separate binary-content refs in them?
Any help to achieve my requirement is highly appreciated.
Thanks in advance.Hi Manoj,
Thanks for the quick reply to my query.
The thing is, the link you have provided talks more from changing the business Service configurations i.e. the type of the service etc, but the concern is, that the Business Service is already Implemented and hence the change would not be an appropriate option for me.
Please let me know, if any more information is required.
Thanks & Regards,
Anu -
SOA Suite 11g - Email with attachments (Attachment from SOAP attachment)
Hello,
Can any one please help as to how I can do the following in Oracle SOA 11g:
Using a BPEL process how can I send an Email with attachments where the attachment itself is coming from a SOAP attachment.
The back ground is that we have portal sites from where the users can upload a document and then from their a SOA service is invoked and the attachment would be passed as (SOAP attachments) and then emails have to be send to users containing this uploaded document as the attachment.
Thanks.
feel free to email me [email protected]Yes, I need all supported standards and their version of SOA Suite 11g because my customer wants to upgrade from 10g to 11g, especially all supported standards and version number of OBPM 11g and OBPM 10g.
A people has pasted all support standards and version number of OBPM 10g. I get a standard list of OSB.
OBPM 11g supports:
BPEL
xml 1.0
Servlet 2.3\JSP1.2 (J2EE 1.2),
Servlet 2.4\JSP2.0(J2EE 1.4),
Servlet 2.5\JSP2.1(Java EE 1.5)
UDDI
SOAP
WSDL
WS-BPEL for People
XML Schema
XPDL
SOAP
XQuery
XLIFF
XSL map
XSLT
UML
Ant
EJB 2.1, JPA/EJB 3.0
JAAS
Spring
JAXB 1.0, JAXB 2.0
XHTML
HTML
JSP
JSF
JSR-168
XSQL
WS-Policy
But I cannot find the document about version number of the above standards
Maybe you are looking for
-
Is there a way to programati​cally call the LabVIEW "find" function?
Hi, My situation is this. I've inherited a LabVIEW program with about 375 vi's. Now when I build this into an executable, for memory reasons, I only want the "remove panel" feature set to no for vi's that are dynamically loaded. But I don't know exac
-
Photoshop 32bits does not start up anymore on Windows 7 64bits.
This is the situation: We have 2 PCs that have been configured identically, with the exception of a scanner (canonScan 9950F) attached to the computer and the 32 bits twain scanner driver installed. Both PCs worked correctly, the one with the scanner
-
In which table the production quantity stored after confirmation
Dear all, When the production order is confirmed through co11n,then where the order quantity get stored in which table so I could suggest my ABAPER to create the report in which these production quantity gets displayed. Regards deepak
-
Video chat not working, Please help.
Since upgrading to Tiger, I have tried just about everything suggested on this board to get ichat av to fully function. For months I have been trying off and on to use the AV functions of ichat. I have spent days reinstalling, clean installing, trash
-
How can I convert MP3 to AWB or AMR format
How can I convert MP3 to AWB, AMR format?