Routing data to multiple business services in ALSB

Hi,
I have a jms based proxy which receives xml type message.This proxy subscribes to a topic and based on jms header,control is transferred to appropriate branch in conditional branch.
One of the branches receive this message and contents are given to 2 different xquery transformations.Output of these transformations are required to be given to 2 different wsdl based business service.
The entire configuration is inside a pipeline pair.Since its not possible to have 2 route nodes,I have configured a stage and used 2 publish actions.Inside each of these publish actions,I have configured replace action.
This configuration doesn't seem to invoke either of the service. I am not able to use Routing Table as both services have to be invoked everytime and there is no condition to specify.
How do I invoke 2 different business services with data passed to these 2 services being different?
Arti

Use two servcie callouts-- with different pay load elements
Even publish will work, but we have to populate $body with relevant data for each BS before invoking publish
Manoj

Similar Messages

  • RR business service on ALSB

    Hello,
    I created a business service on ALSB.
    It is defined as a JMS service that uses MQSeries queues for request-response interaction with the mainframe with as response correlation pattern "JMSMessageID".
    It works fine as long as the mainframe produces its responses within the specified response timeout.
    When the mainframe puts a response on the response queue after the time-out has expired, the message stays on the response queue forever, as the ALSB reads it, and performs a rollback, with as message like:
    <Warning> <WliSbTransports> <PC51460> <AdminServer> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <BEA1-0041427CE96A1767ADA0> <> <1216200008067> <BEA-381542> <JmsAsyncResponseMDB.onMessage() received a message with an unknown message Id ID:414d51204d51534e545455202020202017d76f48200e0918; marking TX for rollback...>
    How to handle this time-out problem?
    Thanks,
    Ronny

    Hi Ronny,
    we have the same problem you described.
    We are using OSB 10.3.1 and we implemented the same pattern request-respond RR.
    We are exposing a third-party system in a service oriented manner as web services.
    Those web services are proxy services that route to a common local proxy named CommonService.
    The CommonService proxy uses a business service CommonJmsRR that publishes into a JMS queue (named IN) the request and waits for the answer listening from another JMS queue (named OUT). On that business service we defined 'Is Response Required: ENABLED', 'Response Timeout: 60 secs' and we use JMSCorrelationID as Response Correlation Pattern.
    On WLS we defined the IN/OUT queues with a given 'time to live' threshold, so after the time-out has expired, the message will stay on the response queue for the time defined in the ‘time to live’ setting.
    On log file we see many many occurrences of this error even within the same sec:
    <BEA-381542> <JmsAsyncResponseMDB.onMessage() received a message with an unknown message Id 60f4746300000131647c888700000779; marking TX for rollback...>
    Did you solve this time-out problem?
    Thanks in advance
    ferp

  • Best practices for Calling Multiple Business Services in OSB

    Hi All,
    I have a requirement where I need to call multiple business services in OSB. We are presently calling them sequentially in a proxy pipeline. I was wondering if we could accomplish the same task in a better way. Each of the business services are mutually exclusive.
    Thanks in Advance,
    Rudraksh

    Hi Eric,
    Thanks for the response. We figured that it is possible to call multiple services with Split Join. However, we ran into the issue you described. We had a blocking call and had to wait until each of the services returned a response.
    However, we needed a Async model for our design and felt that this might not be a right fit.
    We are now looking at implementing the publish option with QoS configured as this fits our usecase better. Thanks for the help again.
    Rudraksh

  • Configuring a Proxy Routing to 2 Independent Business Services with Xquery

    Hi,
    I want to create one Proxy service which has to be able to determine based on contents/elements of an XML/SOAP message which Business Service to invoke.
    When I create a Proxy based on either of the WSDL's I can configure the routing in the message flow by creating a routing table in a routing node, and use the appropriate variable, from the variable structure body, to test as an expression ($body/ser:retrieveDetail/param0/customerNo).
    But I want to create a proxy service that isnt based on one WSDL, because the business services are each based on different WSDL's. So I tried to create " Any SOAP and Any XML" service, but then in the expression editor of the routing table i cant use the variable structure. I also tried adding the WSDLs as structure but that doesnt work either. Neither does using regular Xpath expressions to select the data to test.
    Im using the following envelope and I use the customerNo to test which service needs to be invoked. But i cant seem to select that data and test it. Does anyone has an idea of how i can achieve this?
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <retrieveDetails xmlns="http://localhost/">
    <param0 xmlns="">
    <customerNo>123456789</customerNo>
    </param0>
    </retrieveDetails>
    </soapenv:Body>
    </soapenv:Envelope>

    Could you try this?
    $body/*:retrieveDetails/*:param0/*:customerNo/text()

  • OSB example calling multiple business services using a single proxy service???

    Hi,
    I have three business services created using http urls i.e.
    1. LoginBS
    2. GetListBS
    3. LogoutBS
    My requirement is to get a list of names from GetListBS using a single proxy service and to call GetListBS I have to first call LoginBS then GetListBS i.e. after authentication and then finally logout.
    Kindly help with a detailed example for this and I am new to OSB.
    Thanks,
    Vik

    Hi Eric,
    Thanks for the response. We figured that it is possible to call multiple services with Split Join. However, we ran into the issue you described. We had a blocking call and had to wait until each of the services returned a response.
    However, we needed a Async model for our design and felt that this might not be a right fit.
    We are now looking at implementing the publish option with QoS configured as this fits our usecase better. Thanks for the help again.
    Rudraksh

  • OSB call multiple Business Services and combine the responses into one

    Dear All,
    I am new to OSB and I have a use case that I need to solve. I have 3 web services and I imported their WSDLs into OSB and created 3 Business Services that goes with each WSDL. The scenario is like this.
    Business Service 1: takes an input value as [Region] and returns a list of employee names.
    Business Service 2: takes the list of employee names and returns the list of employee names with their job profile
    Business Service 3: takes the list of employee names with their job profile and returns their contact information.
    I need to return the result of Business Service 3 to the consumer. The consumer basically need to call the Proxy service with [Region] as the input value and the result should be the output of above Business service 3.
    As I mentioned, I have WSDL for all the 3 Business Services, but, I do not have the WSDL for the Proxy Service. The Business Service WSDLs are all different and they do not match.
    My question is it possible to achieve the above result without having a concrete WSDL for Proxy Service? Also, how can I go about solving this use case. I have gone through some articles that talk about Split-Join, and am really lost.
    I really appreciate your kind reply on this.
    Thanks in advance.
    Regards,
    Syama

    You have multiple options:
    1. Create a WSDL which has input similar to input of WS1 (only Region as input) and an output similar to output of WS3.
    Create Proxy Service based on this WSDL. Then call all the thee business services one after the other and doing transformations/assigns as needed after each call. Finally map the result of BS3 to the similar output of your new WSDL on which the Proxy service is based.
    2. Create an Any XML type of web service. Create a schema which has two elements, one for input and one for output. Input containing only Region and output containing all the details. All consumers need to send request according to input defined in schema and expect output defined in schema. Its similar to creating the WSDL but can be used in case your consumer do not want to call a Web Service but want to call an XML API over HTTP. Rest will be same as option 1.
    Split join is needed to make calls in parallel, it wont be usable in your use case unless you expect a list og regions in the same request for each of which you need to gather same information by calling three services.

  • ALSB Proxy Service error calling Business service

    I have an external webservice on Weblogic 8.1 SP5, and I configured Business Service in ALSB 2.6, that is able to invoke the external webservice. But When I create Proxy Service based on the existing Business service and try to invoke the proxy service I get "no SOAP Action Header" error in WebLogic 8.1 SP5 External webservice.
    AxisFault
    faultCode: {http://xml.apache.org/axis/}Client.NoSOAPAction
    faultSubcode:
    faultString: no SOAPAction header!
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}stackTrace:no SOAPAction header!
    at org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1004)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    {http://xml.apache.org/axis/}hostname:ossinv1d
    no SOAPAction header!
    at org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1004)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    Also I get
    com.bea.wli.sb.pipeline.PipelineException in the ALSB.
    Is it a known issue ?

    The back end service basically complains the SOAPAction http header was not included in the request. Typically this header is added automatically by ALSB if the proxy is of type SOAP and the wsdl contain the SOAPAction value for the operation invoked.
    Alternatively you can force the SOAPAction header to be set to the correct value by adding a transport header action in the request part of the routing node.
    Gregory Haardt
    ALSB Prg. Manager
    [email protected]

  • _Choosing operation in Business Service on run  time

    Hi,
    I have a WSDL having multiple operations. The same wsdl is usd to create business and proxy service.
    In proxy service I am using operational branching.So for each operation , I need to call business service with respective operation.
    Is there any way to choose the operation in business service on run time using single route node.Is it possible through Dynamic Routing?
    I have used dyanmic routing to choose different business service at run time.
    Please let me know if some other information is required.
    Thanks in advance,
    Seemant

    The following code can be used inside the expresion for Dynamic routing to achieve the same-
    <ctx:route>
    <ctx:service>{$path}</ctx:service>
    <ctx:service>{$operation}</ctx:service>
    </ctx:route>
    The vairable operation keeps the name of the operation invoked.

  • Setting an endpoint dynamically for a business service

    I need to set an endpoint for a business service dynamically in the message flow of a proxy service. I'm basically doing what it says in this article(page 9 under heading - Registry per Individual Domain):
    http://e-docs.bea.com/alsb/docs26/pdf/deploybestprac.pdf
    I've gone to the link to the User guide that it gives in there for "Using Dynamic Routing". And I've pieced together most of what I need to do. I have a dummy business service with a dummy URL. I'm making a service callout and getting and endpoint back and saving that endpoint address to a variable. (that's all in a stage in a pipeline node.) Then I dynamically route it to dummy business service. The part I don't know how/where to do is reassign the dummy business service's endpoint to the endpoint I got back from my service callout.
    Can anyone help me with this?
    Thanks,
    Brittany

    Try with a 'Dynamic publish to service' action with:
    <ctx:route isProxy="false">
    <ctx:service>{ $yourBusinessService }</ctx:service>
    </ctx:route>
    where $yourBusinessService is the variable hosting the uri of your business service.
    Regards
    ferp

  • 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,
    Anup

    Hi 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

  • 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,
    Rahul

    How 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.

  • Calling a business service based on operation-soap action in Proxy service

    Hi,
    I have a requirement in which I have to call a business service based on operation-soap action defined in Proxy service wsdl.
    Like in below mentioned wsdl GetPartCostDelta and GetCurrencyList operations are there.But which ever operation I select,It just goes to one business service.
    Is there any way,I can route to some another business service based on the soap action
    proxy service WSDL
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ewopcd="urn:com:gm:gpd:schema:ewopartcostdelta" xmlns:gen="urn:com:gm:gpd:schema:genericfault" xmlns:tns="urn:com:gm:gpd:services:ewopartcostdeltaservice" targetNamespace="urn:com:gm:gpd:services:ewopartcostdeltaservice">
         <wsdl:types>
              <xs:schema>
                   <xs:import namespace="urn:com:gm:gpd:schema:ewopartcostdelta" schemaLocation="ewocostdelta.xsd"/>
                   <xs:import namespace="urn:com:gm:gpd:schema:genericfault" schemaLocation="servicefault.xsd"/>
              </xs:schema>
         </wsdl:types>
         <wsdl:message name="EWOCurrencyListRequest">
              <wsdl:part name="CurrencyListRequest" element="ewopcd:EWOCostDeltaInput"/>
         </wsdl:message>     
         <wsdl:message name="EWOCurrencyListResponse">
              <wsdl:part name="CurrencyListResponse" element="ewopcd:EWOCurrencyList"/>
         </wsdl:message>     
         <wsdl:message name="EWOPartCostDeltaRequest">
              <wsdl:part name="PartCostDeltaRequest" element="ewopcd:EWOCostDeltaInput"/>
         </wsdl:message>
         <wsdl:message name="EWOPartCostDeltaResponse">
              <wsdl:part name="PartCostDeltaResponse" element="ewopcd:EWOCostDeltaResult"/>
         </wsdl:message>
         <wsdl:message name="EWOPartCostDeltaServiceFault">
              <wsdl:part name="PartCostDeltaServiceFault" element="gen:ServiceFault"/>
         </wsdl:message>
         <wsdl:portType name="EWOPartCostDeltaPortType">
              <wsdl:operation name="GetCurrencyList">
                   <wsdl:input name="EWOCurrencyListRequest" message="tns:EWOCurrencyListRequest"/>
                   <wsdl:output name="EWOCurrencyListResponse" message="tns:EWOCurrencyListResponse"/>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
              </wsdl:operation>
              <wsdl:operation name="GetPartCostDelta">
                   <wsdl:input name="EWOPartCostDeltaRequest" message="tns:EWOPartCostDeltaRequest"/>
                   <wsdl:output name="EWOPartCostDeltaResponse" message="tns:EWOPartCostDeltaResponse"/>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
              </wsdl:operation>          
         </wsdl:portType>
         <wsdl:binding name="EWOPartCostDeltaBinding" type="tns:EWOPartCostDeltaPortType">
              <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
              <wsdl:operation name="GetCurrencyList">
                   <soap:operation soapAction="GetCurrencyList" style="document"/>
                   <wsdl:input>
                        <soap:body use="literal"/>
                   </wsdl:input>
                   <wsdl:output>
                        <soap:body use="literal"/>
                   </wsdl:output>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault">
                        <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
                   </wsdl:fault>
              </wsdl:operation>
                        <wsdl:operation name="GetPartCostDelta">
                   <soap:operation soapAction="GetPartCostDelta" style="document"/>
                   <wsdl:input>
                        <soap:body use="literal"/>
                   </wsdl:input>
                   <wsdl:output>
                        <soap:body use="literal"/>
                   </wsdl:output>
                   <wsdl:fault name="EWOPartCostDeltaServiceFault">
                        <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
                   </wsdl:fault>
              </wsdl:operation>
         </wsdl:binding>
         <wsdl:service name="EWOPartCostDeltaService">
              <wsdl:port name="EWOPartCostDeltaPort" binding="tns:EWOPartCostDeltaBinding">
                   <soap:address location="https://localhost/EWOPartCostDelta"/>
              </wsdl:port>
         </wsdl:service>
    </wsdl:definitions>

    Did you try using the Operational branching node of OSB?
    You have copy the operation name from the inbound variable and populate the SOAP Header with that value into the SOAPAction tag.I think this will work.
    Thanks,
    Prabu

  • Combine 2 Business services having same schema

    All,
    This is a straight forward case, I am sure this is easy, but since Im a beginner I cant get quick answer.
    I am trying to achieve something like A+B=C, where A and B are 2 business services having exact schema, and C is my new Business service that is a combination of A and B.
    How do I achieve this in ALSB? please suggest
    Thanks

    does it mean that C is going to have two portTypes (portType of A and portType of B)?
    If that is the case then you can create your business service in ALSB and a proxy service. The proxy service will simply pass the inbound message to your business service.
    Hope it helps.

  • Dynamic routing for a Business Service with multiple operations

    I have two business services with multiple operations. Business service A (bsA) has operations OpA1 and OpA2. Business service B (bsB) has operations OpB1 and OpB2.
    Depending on incoming Proxy message and operation, I have to do one of the following
    1. If someValue = A and operation= Op1 then invoke operation opA1 of bsA
    2. If someValue = B and operation= Op1 then invoke operation opB1 of bsB
    3. If someValue = C and operation= Op1 then invoke operation opA1 of bsA AND* operation opB1 of bsB and return aggregate data of both invocations
    1. If someValue = A and operation= Op2 then invoke operation opA2 of bsA
    2. If someValue = B and operation= Op2 then invoke operation opB2 of bsB
    3. If someValue = C and operation= Op2 then invoke operation opA2 of bsA AND* operation opB2 of bsB and return aggregate data of both invocations
    Using a dynamic route node or dynamic routing options, I am able to achieve cases 1, 2, 4, and 5.
    But for cases 3 & 6, I can not use a route node. When I use a Service call out instead, then I am forced to create a Operational branch but that does not seem like the best design since for every new operation added to the business services, I have to add a new branch to the Operational branch and redo all the functionality for that branch.
    Basically, I am looking to achieve the functionality of the Route node ( no need to specify the operation ).
    Any thoughts/ideas on what the best design would be?
    thanks

    For cases 3 & 6, why don't you route to another proxy service where you can simple do two service callouts, merge output data somehow and return them to the first proxy?
    If you look for "special route feature", that could possibly call two services for a single message, I'm afraid you won't succeed.

  • Business service failed to insert the data in DB2

    Hi I have developed a business service through OSB and deployed in to SOB in my local. The business service is trying to insert data in to DB2 table where the primary key column is auto generated in DB2.
    When i am testing the business service, in the XML i have removed that tag out of it and tried the execute the service and I end up with the following error. Please let me know where I am going wrong in this.
    <Mar 15, 2012 1:35:19 PM CDT> <Error> <JCA_FRAMEWORK_AND_ADAPTER> <BEA-000000> <servicebus:/WSDL/IIRSearch/adapter/IIRA
    apterServices/AuditInputDataService [ AuditInputDataService_ptt::insert(SearchAuditIirCollection) ] - Could not invoke
    peration 'insert' due to:
    BINDING.JCA-11616
    DBWriteInteractionSpec Execute Failed Exception.
    insert failed. Descriptor name: [AuditInputDataService.SearchAuditIir].
    Caused by java.sql.BatchUpdateException: [IBM][CLI Driver][DB2/LINUXX8664] SQL0798N A value cannot be specified for co
    umn "SEARCH_ID" which is defined as GENERATED ALWAYS. SQLSTATE=428C9
    Please see the logs for the full DBAdapter logging output prior to this exception. ConnectionFactory property platform
    lassName was set to org.eclipse.persistence.platform.database.oracle.Oracle10Platform but the database you are connecti
    g to is DB2/LINUXX8664. Please validate your platformClassName setting. This mismatch can cause the adapter to trigge
    runtime exceptions or execute SQL that is invalid for the database you are connected to. This exception is considered
    not retriable, likely due to a modelling mistake. To classify it as retriable instead add property nonRetriableErrorCo
    es with value "--798" to your deployment descriptor (i.e. weblogic-ra.xml). To auto retry a retriable fault set these
    omposite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff. All properties ar
    integers.
    at oracle.tip.adapter.db.exceptions.DBResourceException.createNonRetriableException(DBResourceException.java:68
    at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:648)
    at oracle.tip.adapter.db.exceptions.DBResourceException.outboundWriteException(DBResourceException.java:696)
    at oracle.tip.adapter.db.transaction.DBTransaction.commit(DBTransaction.java:236)
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.performOperation(WSIFOperation_JCA.java:544)
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeOperation(WSIFOperation_JCA.java:353)
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.j
    va:312)
    at oracle.tip.adapter.sa.impl.fw.wsif.jca.WSIFOperation_JCA.executeInputOnlyOperation(WSIFOperation_JCA.java:29
    at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.invokeWsifProvider(JCABindingReferenceImpl.java:345)
    at oracle.tip.adapter.sa.impl.JCABindingReferenceImpl.post(JCABindingReferenceImpl.java:195)
    at com.bea.wli.sb.transports.jca.binding.JCATransportOutboundOperationBindingServiceImpl.invokeOneWay(JCATransp
    rtOutboundOperationBindingServiceImpl.java:109)
    at com.bea.wli.sb.transports.jca.JCATransportEndpoint.sendOneWay(JCATransportEndpoint.java:191)
    at com.bea.wli.sb.transports.jca.JCATransportEndpoint.send(JCATransportEndpoint.java:168)
    at com.bea.wli.sb.transports.jca.JCATransportProvider.sendMessageAsync(JCATransportProvider.java:598)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.bea.wli.sb.transports.Util$1.invoke(Util.java:83)
    at $Proxy128.sendMessageAsync(Unknown Source)
    at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageAsync(LoadBalanceFailoverListener.java:148)
    at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageToServiceAsync(LoadBalanceFailoverListener.
    ava:603)
    at com.bea.wli.sb.transports.LoadBalanceFailoverListener.sendMessageToService(LoadBalanceFailoverListener.java:
    38)
    at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageToService(TransportManagerImpl.java:558)
    at com.bea.wli.sb.transports.TransportManagerImpl.sendMessageAsync(TransportManagerImpl.java:426)
    at com.bea.wli.sb.test.service.ServiceMessageSender.send0(ServiceMessageSender.java:380)
    at com.bea.wli.sb.test.service.ServiceMessageSender.access$000(ServiceMessageSender.java:79)
    at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:137)
    at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:135)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    at com.bea.wli.sb.security.WLSSecurityContextService.runAs(WLSSecurityContextService.java:55)
    at com.bea.wli.sb.test.service.ServiceMessageSender.send(ServiceMessageSender.java:140)
    at com.bea.wli.sb.test.service.ServiceProcessor.invoke(ServiceProcessor.java:454)
    at com.bea.wli.sb.test.TestServiceImpl.invoke(TestServiceImpl.java:172)
    at com.bea.wli.sb.test.client.ejb.TestServiceEJBBean.invoke(TestServiceEJBBean.java:167)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.__WL_invoke(Unknown Source)
    at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:40)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.invoke(Unknown Source)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
    at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
    at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)

    I am assuming that the primary key that you were referring to is the SEARCH_ID.
    Caused by java.sql.BatchUpdateException: [IBM][CLI Driver][DB2/LINUXX8664] SQL0798N A value cannot be specified for column "SEARCH_ID" which is defined as GENERATED ALWAYS. SQLSTATE=428C9Looks like when you generated the JCA DBAdapter WSDL, all the columns were selected. And hence the insert queries that were generated to be used by the JCA DBAdapter have this field.
    Can you reconfigure the DBAdapter with a custom query to insert in to the table, without the primary key column selected. This should resolve your issue.
    If this still does not solve your issue. Lets start to debug further by capturing the exact SQL query being executed.
    Enable the debug mode for the JCA framework. Edit the alsbdebug.xml file in the domain directory and set the category alsb-jca-framework-adapter-debug flag to true. Then restart the servers.
    Refer - http://download.oracle.com/docs/html/E15867_01/app_debugging.htm for more details.
    Hope this helps.
    Thanks,
    Patrick

Maybe you are looking for