How to make a JMS Proxy Service Subscriber act as a synchronous service

I am trying to find the correct OSB pattern/configuration to support the following.
Use case:
Multiple messages put onto a JMS topic. The Java Web Service invoked by the Proxy Service subscriber should only ever have one instance active at a time so that it processes messages syncronously.
Current OSB Configuration:
JMS Topic -> ProxyServiceA -> BusinessServiceA (Java Synchronous Web Service)
-> ProxyServiceB -> BusinessServiceB (BPEL Synchronous Web Service)
Work Manager configured on ProxyServiceA with maxThreadCount = 1 and minThreadCount = 1
Issue:
Multiple instances of BusinessServiceA are active at the same time with the settings above. I am unable to make ProxyServiceA act as a synchronous process, so that it will not return until BusinessServiceA has completed.

JMS Topic -> ProxyServiceA -> BusinessServiceA (Java Synchronous Web Service)-> ProxyServiceB -> BusinessServiceB (BPEL Synchronous Web Service)
If I remember correct there were some issue with work-manager being configured in proxy is not used. Engineering has fixed that issue in Oracle Service Bus (11.1.1.3.0). You might want to check with support to get the requisite patch for your version.
You requirement for synchronous process can be achieved by two ways
Option1) Configure BusinessServiceA with Throttle Q with Maximum Concurrency 1 http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/operations/throttling.html
Multiple instances of BusinessServiceA are active at the same time with the settings above. I am unable to make ProxyServiceA act as a synchronous process, so that it will not return until BusinessServiceA has completed.Does BusinessServiceA (Java Synchronous Web Service) return response? Is it invoking the ProxyServiceB via HTTP?
Manoj

Similar Messages

  • OSB -11g - Calling JMS Proxy Service in a stage

    Hi,
    When we createa JMS based proxy service, the proxy service keeps on polling the JMS Queue for any new messages arriving in the queue. But I do not want the proxy service to keep on polling the Queue. Instead I want to call the JMS Proxy Service in any stage (of any other Proxy Service) using a service callout. It means that I do not want the Queue to be polled always, instead the queue should be polled only when this JMS Proxy Service is invoked.
    Is it possible to do? If so, how?
    Thanks,
    Sanjay

    Hi Anuj,
    Following is my requirement:
    The producer wants to interact with us using Web Services. The input payload has some more values (username and password) apart from the HL7 data (base64 encoded) itself. I have to receive the input payload, authenticate the call and convert the HL7 encoded message into an XML and send it to the consumer.
    What have I done till now:
    1) I have created two Proxy Services PS1 and PS2
    2) Proxy Service (PS1) will be invoked by the producer.
    3) Then I get the username, password and data from the payload
    4) Populate the username and password in the SOAP Header and HL7 data in SOAP Body
    5) Call PS2 from PS1
    6) In PS2 I have configured Message Level Security to authenticate with the username and password
    7) After authentication I make a Java Callout to decode the base64 encoded HL7 data
    8) I now have written my own HL7 sender (Java code) which wraps the decoded HL7 data with MLLP requirements and then send it to the B2B server using a Socket (TCP connection). I do a Java Callout to this Java class.
    9) In B2B I have configured a RTP (Remote Trading Partner) which has a MLLP channel.
    10) I created a ADT message document and a ACK document
    11) I created two agreements between HTP and RTP (one agreement receives the HL7 data from the TRP using MLLP and another which sends the ACK to the RTP using MLLP channel)
    12) In the receiveing agreement I have configured a JMS channel (on the HTP side) becuase of which B2B receives the HL7 Pipe delimited data and translates it and then pushes the XML data into the JMS queue (which needs to be transformed to producer XML)
    13) I have also configured a JMS channel for the RTP which I am using in second agreement to get the acknowledgement. Because of this the ACK is placed in a JMS queue.
    I need to poll this JMS queue in order to send the ACK back to the producer (which I have to do in the response pipeline of PS2). Hence I wanted to pop the message from the JMS queue in the response pipeline and then send that message.
    Please advice if my approach is correct.
    Thanks,
    Sanjay
    Edited by: Sanjay Bharatiya on 17-Mar-2011 12:06 PM

  • Report and Alert don't executed in the error handler with a JMS proxy service

    Hi,
    I'm working with OSB 11.1.1.4.0 and I'm facing a problem with the error handler of my JMS proxy service.
    My error handler contains two main elements :
    - a Report action
    - an Alert with a JMS destination defined
    When the business service failed the message remain in the queue. It's the expected behavior.
    The problem is :
    - the report is missing
    - the alert is raised but missing in the JMS destination defined in the Alert setting.
    I've noticed if I add a Reply with Failure or Success, Report and Alert are successfully executed.
    Unfortunately the message don't remain in the JMS queue.
    What can I do in order to have my report/alert done and the JMS transaction rollback in order to keep the message in the queue ?
    I've already met this problem in the past with alsb v3 and my solution was to add Service Callout in the error handler in order to externalize these actions.
    This solution is not convenient and I hope another solution is possible.

    Inventorying workgroups can be difficult, especially when it comes to remote access and network security. Because workgroups are not centrally managed, some of the items discussed in this
    wiki article on preparing your workgroup environment may require you to visit each machine individually.
    For non-domain credentials, you do not use the <systemname>\<user> format, you simply enter the user name. Regarding how to enter the credentials, if you have an account that uses the same username and password on all machines and is an administrator
    on all of those machines, then you can enter that in the All computers credentials page of the wizard. You can also do this if they are different user names. However, if some machines have an account with the same user name, such as Administrator,
    but different passwords on each machine, you will need to use the Manually enter computer names discovery method, and then enter the information for each group or each machine.
    As you can tell, workgroup environments can quickly negate any benefit that the agentless inventory nature of MAP provides.
    Please remember to click "Mark as Answer" on the post that helps you, and to click
    "Unmark as Answer" if a marked post does not actually answer your question. Please
    VOTE as HELPFUL if the post helps you. This can be beneficial to other community members reading the thread.

  • How to make an user into Service authenticated user like cmadmin_service

    Hi All,
    I am trying to fetch the list of documents, properties, log on/logoff functionality with an iUser  ex: epuser, through java code.
    The list of docs are presented in the Documents Folder with teh following sample code
                 |
    RID rid = RID.getRID("/documents");
    String userName = "epuser";
    IUserFactory userFactory = UMFactory.getUserFactory();
    com.sap.security.api.IUser userNew;
    userNew = userFactory.getUser(userName);
    com.sapportals.portal.security.usermanagement.IUser user = WPUMFactory.getUserFactory().getEP5User(userNew);
    ctx.setUser(user);
    IResource res = null;
    res = ResourceFactory.getInstance().getResource(rid, ctx);
    wnen i am trying to fetch all the docs and the corresponding properties by passing " cmadmin_service " as an user name. i am getting the right results. But when i tried with "epuser " i am getting the output as Service Authentication value false.
    Then i added epuser in the System Principal--->System User. still i am not getting the right results.
    plz help me how to make this epuser as service authenticated user like cmadmin_service user

    Hi phani,
    I have no direct solution but you should check the service permissions of the resources you are trying to fetch. The exception sounds like there is the problem. Go to the Details of the CM-Resource and Select Settings-->Service Permissions.
    Does the epuser has the necessary permissions for your operations?
    Another thing is the way you are creating users:
    The WPUMFactory has a special factory-method for creating service users. Perhaps this is a better aproach:
    WPUMFactory.getServiceUserFactory().getServiceUser(user);
    Best regards,
    Stefan Brauneis

  • The JMS proxy service unable to route to another Proxy Service

    Hello,
    I have a JMS proxy service. Inside its pipeline, I am routing to another Proxy Service of Service Type "Messaging", protocol: "Local" & Request Message Type: "XML"
    It's printing the message correctly from inside the routing node in the pipeline of JMS proxy. However, it's not invoking the Proxy Service that I am routing to, since I am not seeing the log message that I am trying to print from inside the pipeline of Local Proxy. Could someone please point out the error in my configuration?
    Any help will be greatly appreciated.
    Thanks much,
    Mamta Kansal

    OSB/ALSB use the SOA Suite forum
    SOA Suite

  • Is it possible to make an OSB Proxy service offline/online based on BS

    JMS QUEUE
    |
    |_____ Proxy Service <-------->Business Service <---------> External System URL
    I have a configuration as shown above.
    There is a way to make the Business Service offline/online based on the External system URL being offline/online by setting the
    Business service-> Operational Settings->Offline Endpoint URIs with a timesatmp.
    Is it possible to make the state of the proxy service to enabled/disabled based on this state of BS based on external enpoint URI?
    This is a requirement such that the messages in the JMS queue doesnot get lost or consumed when the external system is offline.
    Thanks in Advance!

    I have thought about this. There are some problems here....
    I cannot use the same proxy to invoke the java callout and then based on the code or handler disable it, since
    1) i would have no way to enable back the proxy again.
    2) Also there is some amount of message loss.
    So i will have to use another proxy to do the same, but in this case
    1) what would be the trigger to this proxy?
    2) And how often do i invoke the java callout to see if the URI is up or not? (wouldnt that affect the performance?)
    I am just wondering why did they give an offline URI option in the business service and no similar option in the proxy service, Any Idea?
    Thanks

  • How to invoke a OSB Proxy Service from a Servlet??

    Hi!!
    I'm a begginer in OSB, and right now I have a OSB configuration in production mode. So, using the console test it's very easy to test (doh) my configuration. But now, I have to make a stress test and after read a lot of documentation I did'nt found the way to do that. So I'm trying to do it by using a Servlet, a doPost method in especific, but after a lot of time I can't invoke the proxy service.
    What is the right way to use a proxy service in production mode??
    How can I call it from my servlet??
    How can I send an xml (or any other object, file, text...) as a Request??
    Help please, thank you...
    Edited by: user12116998 on 18-mar-2010 12:40

    If you have your proxy service published as http/soap, then I recommend you to use SoapUI to test it. It can help you with stress test too.

  • How to call a ALSB Proxy Service and don't wait for his response. Publish M

    Hi,
    I have a Proxy Service called PS1 that will invoke and another Proxy service Called PS_ProcessingNode that invokes 10 differents webservices during the orchestration and takes about 2 minuts.
    I would like that if invoke PS1 that will invokes PS_ProcessingNode (asyncronously) and immediatly PS1 will return "OK" (don't wait for the response of PS_ProcessingNode) .
    For simulate this scenario I am testing with:
    - PS_Processing is a WSDL without response that has a JavaCallout with a Sleeper of 10 seconds.
    - PS invokes with "Publish action" to PS_ProcessingNode but is waiting for PS_Processsing finish. I don't want this beahivour.
    How I can do it for PS doesn't wait for the response of the PS_ProcessingNode?
    Thanks.

    - PS invokes with "Publish action" to PS_ProcessingNode but is waiting for PS_Processsing finish. I don't want this behavior.
    I'm glad you have a solution using JMS. But still Publish action should not wait for response. If you are seeing that behavior, you can contact Support with an SR to get it fixed.
    Manoj

  • JMS Proxy Service !

    Hi I have a scenario --
    1. Pandox System(queue) ------> OSB [ ProxyService]-------->Seibel System(queue)
    . Is the above scenario possible in OSB ? If yes , then how ?
    . Should I go for JMS Bridge ? No ? Yes ? Why?
    Note: What would be the end point URIs in the Proxy Service if the systems are non-weblogic like Pandox and Seibel ? Will it require any extra configuration any where in OSB ?

    OSB can interface with JMS/MQs.
    You can configure your proxy service/business service JMS URI of the pattern if using JMS
    jms://localhost:port/QCFJNDI/QJNDI
    For MQ you can use the MQ transport or create Foreign JMS servers depending on your version of OSB.
    Refer OSB user guide for further details on MQ transport etc.

  • How to make my Portal Web Service SECURED?

    Hi Experts,
    I created one portal Service and exposed it as Portal Web Service.
    Everything is working fine, as i deployed my Portal Web Service on to the SAP J2EE Engine ie SAP Server.
    I m able to access functions of Web Service from my StandAlone Java Application.
    but the problem is my Web Service is not SECURED.
    How can i make my Portal Web Service SECURED?
    Please help me out.
    Help will be appreciated and rewarded!!!!!

    user13046122 wrote:
    I have an old pl/sql "helper" package, originally written to make SOAP Web Service calls from the database - it uses UTL_HTTP to invoke the target services.
    I now need to make SOAP Web Service calls - from an 8.1.7.4 database
    But the version of UTL_HTTP inside 8.1.7.4 does not contain the functions needed in the helper package
    Can anybody suggest a means of making SOAP Web Service calls from an 8.1.7.4 database ?I think you'll be very lucky to find anyone here who still has access to a version of Oracle that is that old.... I mean... that's like what? 15 years old at least? I'm surprised you've still got hardware that can run that.
    It would probably help if you could post what code you've got and explain which function(s) it's complaining about, as I doubt people will want to guess.

  • How to make an OSB proxy to the server responding with application/json?

    Hi,
    My question is related to unfortunately unanswered question: Re: OSB and Oracle Maps
    Big picture: There is a Jetty server on local network with SpringMVC controllers which respond with JSON. The only way to communicate from frontend application to that server is through the OSB. So OSB should work as transparent proxy, passing headers and respond with original JSON message.
    I tried to build such proxy, following some blogs entries. Proxy worked for the REST services based on XML, but when I go to the JSON business service I get stuck.
    I think that business service to communicate with JSON server should be a Messaging Service, with Response Type: Text and Request Type: None.
    All headers should be passed (Outbound request) so the JSON server receives them in same state as frontend send.
    Business service should be invoked from 'Service Callout' because I don't need any asynchronous calls, or routing - just call the business service endpoint, which will call JSON server and pass the response.
    There are some problems in which I stepped into when tried this approach:
    1. When using Request Type: None the Service Callout give me an error of type:
    A callout cannot invoke a one-way operation
    When switching Request Type to Text I get it working, but some services on JSON server which operates only on GET method stop work (because switching to Text automatically require to use POST method, which is obvious but not necessary in my case).
    2. Even with above modification I cannot get the response from business service - I guess it's because the JSON response isn't wrapped into any XML elements. So in Service Callout any logger prints the message on Request side, but anything is written by Response logger inside the Service Callout. The browser which launch the Proxy Service also answers with:
    HTTP 500 (Internal Server Error)
    and I don't see any errors in logs, last message is from Request logger inside Service Callout.
    3. Business Service itself seems to work - here is an output from 'Run on Server':
    Business Service Testing - SampleJSON
    Request Document
    Response Document      
    {"models":[],"success":1}
    Response Metadata      
    <con:metadata xmlns:con="http://www.bea.com/wli/sb/test/config">
    <tran:headers xsi:type="http:HttpResponseHeaders" xmlns:http="http://www.bea.com/wli/sb/transports/http" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <http:Content-Length>696</http:Content-Length>
    <http:Content-Type>application/json;charset=ISO-8859-1</http:Content-Type>
    <http:Server>Jetty(7.4.2.v20110526)</http:Server>
    </tran:headers>
    <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">0</tran:response-code>
    <tran:response-message xmlns:tran="http://www.bea.com/wli/sb/transports">OK</tran:response-message>
    <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">ISO-8859-1</tran:encoding>
    <http:http-response-code xmlns:http="http://www.bea.com/wli/sb/transports/http">200</http:http-response-code>
    </con:metadata>
    But when calling it from a service proxy I don't get any logger message on the JSON server, which appears normally when I runs business service tests. So it seems that the request doesn't even reach it.
    If anyone has a time to look at this problem I can share the configuration jar ready to import: http://dl.dropbox.com/u/21341604/sample-osb-json/sample-json.jar, to make it working you need change Endpoint URI in SampleJSON.biz.
    Thanks in advance for any kind of help or tips,
    Adrian

    If you are the admin, then use the following command in Terminal:
    sudo mkdir /.nameOfFolder
    Replace nameOfFolder with the name you want.  The sudo will prompt you for your admin password. 

  • How to control File read Proxy Service when it is polling from folder?

    Hello all,
    In my current requirement we are receiving  xml's through one folder(LOCAL) from source side.we are picking those xml's  by proxy service PS1  as file transport for every 10 sec and configured that folder path.In PS1 message flow we put on routing action to one bussiness service,that business service sending those xml's to one MQ.
    We already created this interface but the issue is source side they plan to change that folder and also they want to stop this service(folder to MQ) sometimes based on synarios.That folder will be delete or if exist proxy wont read messages from that folder.
    But proxy is still looking for that folder in Test ENV on Unix system then it gives error beacuse of unix folder structure is different,proxy unable to create that folder in unix system.it is creating in windows.
    Now we want to control that service when the folder is ready that time only  proxy will activate otherwise not..i.e like if condition "if cndtion is satisfied PS1 starts the polling from that folder else condition should be work.
    How can i control PS1 service?
    Is there any chance to control by using another proxy?
    Experts please guide me..
    regards
    venu

    Hi Terry,
    According to your description, my understanding is that you don’t want the yollow bar notification to display when you open Access documents.
    This issue seems to be about the client application. Please compare the followings with the things that you did:
     1.Open the documents
     2.Click File->Options->Trust Center->Trust Center Settings
     3.Click Protected View, unselect ‘Enable Protected View for originating from the Internet’
     4.Click Message Bar, select ‘Never show information about blocked content’
     5.Click Macro Settings, select ‘Disable all macros without notification’
    In addition, as this issue is about Office, I commend you create a new thread in Office forum, more experts will assist you with this issue.
    Office forum:
    http://social.technet.microsoft.com/Forums/en-US/home?category=officeitpro
    I hope this helps.
    Thanks,
    Wendy
    Wendy Li
    TechNet Community Support

  • How to make use of Portal service in the web dynpro application

    hi
    I have some portal service and how to use that in the web dynpro application.
    and also what is the main diff between Portal Component and web dynpro application.
    do we required portal to run web dynpro application.
    thanks
    mmukesh

    Hi,
    >> I have some portal service and how to use that in the web dynpro application.
    Yes. U can use Portal service in webdynpro. Check the link given by subathra.
    >> and also what is the main diff between Portal Component and web dynpro application
    Portal Components are components designed to run in portal server while webdynpro application can run in J2EE WebAS.
    >> do we required portal to run web dynpro application.
    No for general cases. Just WebAS is sufficient to run webdynpro appl. But if u use portal service in ur webdynpro appl, then make sure both (portal service and webdynpro appl) run on same J2EE engine. That is mandatory.
    Regards,
    Vijai

  • How to make use of asynchronous service in CAF development

    Hello SDNs,
    How can we make use of asynchronous service in CAF development;
    Actually i am new to CAF development; my business requirement suites for the service provided by SAP. But the service provided is asynchronous; is it not possible to use the asynchronous service in my CAF application? if it is possible, can any one please tell me the drawbacks of using it!
    You help would be highly appreciated.
    Thanks,
    Sireesha.B

    Hi,
    >> I have some portal service and how to use that in the web dynpro application.
    Yes. U can use Portal service in webdynpro. Check the link given by subathra.
    >> and also what is the main diff between Portal Component and web dynpro application
    Portal Components are components designed to run in portal server while webdynpro application can run in J2EE WebAS.
    >> do we required portal to run web dynpro application.
    No for general cases. Just WebAS is sufficient to run webdynpro appl. But if u use portal service in ur webdynpro appl, then make sure both (portal service and webdynpro appl) run on same J2EE engine. That is mandatory.
    Regards,
    Vijai

  • How to make a call  to service from site studio templates?

    Hi,
    May be this is very basic but I am not able to figure out how to make a call to a service from site studio templates (hcsp). I have seen one example of service call in the dynamic list fragment. It makes a call to SS_GET_SEARCH_RESULTS service using executeService() method. But it doesn't take any parameters and also not very how returned results are captured.
    I want to execute WCM_PLACEHOLDER service. It takes 2 main parameters dataFileDocName and templateDocName. The returned result is typically a html response.
    The service typically is executed using http request and the url would be something like this
    http://hd-pratapm/ucm/idcplg?IdcService=WCM_PLACEHOLDER&dataFileDocName=VIRTUSAINC&templateDocName=DETAILS_REGION_TEMPLATE
    I think SS_GET_SEARCH_RESULTS service works in the similar fashion. I want to execute WCM_PLACEHOLDER service too using executeService() method. How to work with this? How can we pass parameters and capture returned results?
    Regards,
    Pratap

    Hey Pratap,
    If you are on a standard Site Studio template (page or subtemplate) you should be able to call the wcmPlaceholder idoc function directly. In fact calling the idoc function provides a lot more functionality then the service call (they locked down a few things in the service call since it is designed to be called from an external application).
    The idoc call would look something like: <!--$wcmPlaceholder("Sales", "placeholderDefinitionDocName=placedef_salescontact")--> (taken from page 208 in this doc: http://download.oracle.com/docs/cd/E10316_01/SiteStudio/10gr4/Pdf/Site_Studio_10gR4_Designer_Guide.pdf)
    As a general note when you are in idoc script and want to execute a service you call <$executeService()$> as you saw in the dynamic list. The parameters that the service runs on are in the data binder of the current request. To set parameters for an execute service you simply set idoc variables on the page before it. Example:
    <!--$QueryText="dDocType <matches> `Document`" -->
    <!--$executeService("GET_SEARCH_RESULTS")-->
    As for the response when you execute an idoc function, like wcmPlaceholder, that returns a String the response is immediately output to the page in the location you called the function. This would be similar in concept to a jsp scriptlet that outputs a string <%=myResponseString%>
    Hope that helps,
    Andy Weaver - Senior Software Consultant
    Fishbowl Solutions < http://www.fishbowlsolutions.com?WT.mc_id=L_Oracle_Consulting_amw_OTN_ECM >
    Edited by: Andy Weaver on Jul 7, 2010 7:59 AM
    Added response detail.

Maybe you are looking for