Client Request/Response Context

I'm new to Weblogic Integration and have a question regarding client response action.
I've seen an example of a quick workflow where the webpage calls the process
and gets a response back. In essence the workflow is synchronous.
Now I want to include a long running process, using Worklists and involving many
different actors. During the worklist task acceptance I want to get some feedback
from the user. My questions is what context does the Client Request/Response
execute in. The example in the docs shows the worklist application. Is this
absolutely required? How about a client response to a portlet.
Thanks,
noah

One of the Certification mandates logging the remote client IP AND PORT for each log-event.
I cannot pass these from GUI client because the user may
be on a private network. This calls for capturing the IP and PORT at GUI server end.
Capturing remote IP is simple as SOAP library exposes the request object from which the IP can be obtained.
The dificult part is to capture port. I addressed this problem by introducing a
new Tomcat Service Engine, CSMServiceEngine. This engine has access to the underneath socket using which
i obtain the client port and pass it across to SOAP layer as a x-csm-client-port HTTP theader.
I have a custom SOAP provider, CSMSoapSPI, which obtains the port using the above x-header and the
client IP from its request object. THese are done only for 'login' task and hence i published a new
SOAP service: LoginCommand.
But bcoz of upgradation of tomcat from 4.0 to 5.0.28 the invoke method in the StandardEngine(which was initially extended by class i posted) is made final with JDK 1.5 and i can no longer use the StandardEngine. Hence i tried with the Valve class.But with no luck.
Hope this answers ur question

Similar Messages

  • Client request / response from a specific jpd instance

    Hi all,
    I have a business process whose instances are long running and need to be
    individually accessed by multiple clients (mostly pageflow controllers on
    numerous portlets).
    How can I possibly target a client receive/send call to/from a specific
    instance of a business process (not a specific JPD class, rather a specific
    INSTANCE of a JPD that is already running and has not necesarily need
    started by the current pageflow controller etc.)???
    This seems like a pretty fundamental requirement - I'd hate to have to use
    message brokers and message filter for all interchanges. Is that my only
    option?
    I looked into dynamic binding, but that seems to be a method for dynamically
    selecting between multiple JPD classes - and not running instances of those
    classes.
    cheers,
    Markus

    Where is this getInstanceId() method. This does not seem to be a method of ProcessDefinition.
    I can only see the getConversationId() and setConversationId() methods. The getConversationId()
    method returns null.
    "Markus Blumrich" <[email protected]> wrote:
    This helps immensely - thank you for taking the time to post.
    Really I think BEA should address this rather basic scenario in a more
    developer friendly way - and if they have, then publish a how-to.
    cheers,
    Markus
    "Yueming Xu" <[email protected]> wrote in message
    news:[email protected]...
    We had the same request, and I figured it out the hard way. The solutionis actually
    pretty simple.
    (1) When the JPD processes the initial request, it should usegetInstanceId()
    to get the conversation ID and store it somewhere the client app canfind
    (e.g.,
    in an Entity bean), or return it to your client, and manage it at theclient.
    (2) At a later time, client app may retrieve the conversation ID, andthen
    send
    follow-up requests to the JPD instance (which is actually an Entitybean
    whose
    primary key is the conversation ID).
    (3) To send a request to a specific JPD instance using a process control,you
    need to first call setConversationID(), and then call the request method.
    Hope this helps.
    Yueming
    "Markus Blumrich" <[email protected]> wrote:
    Hi all,
    I have a business process whose instances are long running and need
    to
    be
    individually accessed by multiple clients (mostly pageflow controllers
    on
    numerous portlets).
    How can I possibly target a client receive/send call to/from a specific
    instance of a business process (not a specific JPD class, rather aspecific
    INSTANCE of a JPD that is already running and has not necesarily need
    started by the current pageflow controller etc.)???
    This seems like a pretty fundamental requirement - I'd hate to haveto
    use
    message brokers and message filter for all interchanges. Is that myonly
    option?
    I looked into dynamic binding, but that seems to be a method fordynamically
    selecting between multiple JPD classes - and not running instancesof
    those
    classes.
    cheers,
    Markus

  • How to notify the exceptions in JMS sychronous request-response processing?

              Hi All,
              Pl. help me with ur expertise in the foll. scenario we are facing.
              Scenario:
              I have a requirement where I need to notify the exceptions to my client while
              the client request's are processed asynchronously and my client is waiting in
              synchronous for the response.
              The client is sending a message to one queue (QueueA) and waiting for response
              in another queue (QueueB). The message from "QueueA" is picked up by a MDB listening
              to "QueueA" and it throws an exception while processing some "business logic".
              In this case how do I notify to my client who is waiting in another queue. i.e.
              "QueueB" that there is an exception occurred while processing the business logic.
              I am using JMSCorrelationID to uniquely identify a response for a request sent
              by the client.
              What are the possible options to handle exceptions in JMS for an implementation
              like the one mentioned above.
              Any comments/feedback/pointers will be REALLY REALLY appreciated.
              Tks and regds
              C R Baradwaj
              

              Raghuram Bharadwaj C wrote:
              > Tom,
              >
              > Once again thanks a lot for your prompt response!
              >
              > Yes, A Knows how many downstream queues are involved.
              >
              > For unanticipated multiple responses
              >
              > If I do a select for update in all the MDB's listening to "QueueB/QueueC/QueueD",
              > only one response message will be sent to the "ResponseQ".
              Does this run the risk of serializing the database access? If
              B/C/D have no messages so that a new operation causes all
              three to fire at once, will they end up serializing on their
              respective selectForUpdate calls, losing parallelism?
              >
              > The response from all the datasource(s) are updated in the database by the MDB.
              > The MDB which updates the database last will consolidate all the response(s) and
              > send one final response to the "ResponseQ".
              >
              > This will be picked up the client who is waiting in the "ResponseQ". There wont
              > be multiple message(s) placed in the "ResponseQ".
              >
              > In this situation, How do I handle exceptions that occur in downstream MDB's?
              Use multiple responses. MDB's send error message on response.
              Or have failing MDB put an error message in the database table, so
              that the final responder can read the error message?
              >
              > Many Thanks in Advance,
              > C R Baradwaj
              >
              >
              >
              >
              >
              >
              >
              >
              >
              >
              > Tom Barnes <[email protected]> wrote:
              >
              >>
              >>Raghuram Bharadwaj C wrote:
              >>
              >>>Thanks tom for your support!
              >>>
              >>>Let me explain more about the problem.
              >>>
              >>>Scenario
              >>>========
              >>>Lets take a simplest case where the client is sending a message to
              >>
              >>"QueueA" and
              >>
              >>>he is now waiting for a response in the "ResponseQ"
              >>>
              >>>The MDB listening to "QueueA" wakes up and split the message(s) into
              >>
              >>three and
              >>
              >>>passing it to the next layer of datasource specific queue(s). The queue(s)
              >>
              >>are
              >>
              >>>"QueueB", "QueueC" and "QueueD".
              >>>
              >>>The MDB listening to the datasource specific queue(s) picks up the
              >>
              >>datasource
              >>
              >>>request sends it to the datasource and gets the response back from
              >>
              >>the datasource.
              >>
              >>>The MDB also updates a table in the database with the response. The
              >>
              >>MDB also check(s)
              >>
              >>>after updating the database to see all response(s) from all the datasource(s)
              >>>are reached. If yes, one of the MDB also sends a acknowledgement to
              >>
              >>the "ResponseQ".
              >>
              >>>
              >>>The client listening to the "ResponseQ" gets the acknowledgement and
              >>
              >>hit the database
              >>
              >>>to collect all the response(s) from all the datasource(s). These response(s)
              >>
              >>are
              >>
              >>>formatted and sent a response to the client. We have also created uniqueid
              >>
              >>for
              >>
              >>>identifying each request. This uniqueid is set in the JMSCorrelationID.
              >>
              >>The client
              >>
              >>>uses the uniqueid to collect all the response(s) for the request he
              >>
              >>had sent.
              >>
              >>>Problem
              >>>=======
              >>>If an error/exception occurred in a one of the MDB which is listening
              >>
              >>to QueueB/QueueC/QueueD.
              >>
              >>>How do we handle this?
              >>>
              >>>Please let me know all the possibilities that you would have done in
              >>
              >>this case.
              >>
              >>>
              >>Does A know how many downstream queues are involved? As part of its
              >>transaction it can send a message to the responseQ stating which
              >>queues to expect responses from. The client gets this message
              >>and knows that it must get responses from all of B, C, D, etc.
              >>before assuming success. On a failure, B, C, D, etc. can send
              >>an error message back to the response Q, or the client can
              >>simply timeout.
              >>
              >>This way there are no race conditions
              >>involving unanticipated multiple responses or missing
              >>responses, which I think the
              >>algorithm you mention above can create.
              >>Assuming just B and C (no D):
              >> B detects C is done by checking the DB
              >> C detects B is done by checking the DB **at the same time**
              >> Two response messages get sent
              >> - or -
              >> B finishes detects C not done, and sends no message.
              >> C finishes, B is finished but not reflected in DB yet, sends
              >> no message.
              >>
              >>NOTE: Be aware that when a transaction commits, different
              >>resources can response "faster" than others. The transaction
              >>monitor has no control over this. So, if as part of the
              >>same commit, a database insert and a queue insert is
              >>performed, it is possible for a consumer to receive the
              >>new message BEFORE the new database insert actually completes.
              >>
              >>
              >>>
              >>>Many Thanks in Advance,
              >>>
              >>>C R Baradwaj
              >>>
              >>>
              >>>
              >>>
              >>>
              >>>
              >>>
              >>>
              >>>Assuming that
              >>>
              >>>Tom Barnes <[email protected]> wrote:
              >>>
              >>>
              >>>>One approach is to send an "error" message to QB that uses
              >>>>the JMSCorrelationID the consumer is expecting. This will
              >>>>wake up the consumer, and the consumer can react to
              >>>>the error as needed.
              >>>>
              >>>>Another is to use two asynchronous listeners, one on the
              >>>>response queue, and one on a temporary (client created)
              >>>>queue. On error detection the MDB can send error messages
              >>>>to the temporary queue.
              >>>>
              >>>>You may want to skim the book "Professional JMS" - as I
              >>>>recall, it contains a section on queueing design patterns.
              >>>>
              >>>>Tom
              >>>>
              >>>>Raghuram Bharadwaj C wrote:
              >>>>
              >>>>
              >>>>
              >>>>>Hi All,
              >>>>>
              >>>>>Pl. help me with ur expertise in the foll. scenario we are facing.
              >>>>>
              >>>>>Scenario:
              >>>>>I have a requirement where I need to notify the exceptions to my client
              >>>>
              >>>>while
              >>>>
              >>>>
              >>>>>the client request's are processed asynchronously and my client is
              >>>>
              >>>>waiting in
              >>>>
              >>>>
              >>>>>synchronous for the response.
              >>>>>
              >>>>>The client is sending a message to one queue (QueueA) and waiting
              >>
              >>for
              >>
              >>>>response
              >>>>
              >>>>
              >>>>>in another queue (QueueB). The message from "QueueA" is picked up
              >>
              >>by
              >>
              >>>>a MDB listening
              >>>>
              >>>>
              >>>>>to "QueueA" and it throws an exception while processing some "business
              >>>>
              >>>>logic".
              >>>>
              >>>>
              >>>>>In this case how do I notify to my client who is waiting in another
              >>>>
              >>>>queue. i.e.
              >>>>
              >>>>
              >>>>>"QueueB" that there is an exception occurred while processing the
              >>
              >>business
              >>
              >>>>logic.
              >>>>
              >>>>
              >>>>>I am using JMSCorrelationID to uniquely identify a response for a
              >>
              >>request
              >>
              >>>>sent
              >>>>
              >>>>
              >>>>>by the client.
              >>>>>
              >>>>>What are the possible options to handle exceptions in JMS for an implementation
              >>>>>like the one mentioned above.
              >>>>>
              >>>>>Any comments/feedback/pointers will be REALLY REALLY appreciated.
              >>>>>
              >>>>>Tks and regds
              >>>>>C R Baradwaj
              >>>>
              >
              

  • Best way to implement request-response and still reliability

              HI,
              what is the best way to implement a request -response paradigm and still have
              the reliability that message will be 100% processed and give response...do i need
              to create the permanant queues with storage..
              anybody gives suggestions..
              Akhil
              

    Hi Akhil,
              Temporary destinations can only store non-persistent messages
              as per JMS spec - so they are not useful for reliable for holding
              responses that must survive longer than the life of the
              interested client. For persistence, you will need to use configured
              queues or durable subscriptions. For detailed
              discussion of request/response, I suggest reading the "WebLogic JMS
              Performance Guide" white-paper on dev2dev.bea.com. If you
              have many clients, or expect large message back-logs,
              there can be a performance impact when using selectors...
              FYI: There is a new pub/sub subscriber index enhancement
              that is available in 8.1 and
              in the latest service-packs for 6.1, 7.0.
              "Indexing Topic Subscriber Message Selectors To Optimize Performance"
              http://edocs.bea.com/wls/docs81/jms/implement.html#1294809
              This may be useful.
              Tom, BEA
              Akhil Nagpal wrote:
              > HI,
              > what is the best way to implement a request -response paradigm and still have
              > the reliability that message will be 100% processed and give response...do i need
              > to create the permanant queues with storage..
              >
              > anybody gives suggestions..
              > Akhil
              

  • Blocking Request/Response model

    Hi everyone !
    I'm starting to write a JMS application and I'm having some doubt about the request/response model enabled by the replyTo() method and CorrelationID field. As far is I know JMS is intended to let the client be free from the server's response by posting it's message on the queue and start doing some other work. But supposing the client needs a response from the server(a MDB) after the processing of the message I wonder how would him receive this response, assuming there is a second queue for posting the response messages. Simply using the MessageConsumer.receive() the client will be blocked, killing all the purpose of the model(even with timeout). So I wonder, should I create a second MDB just to handle the response queue ? This would left me with an RPC message producer, a MDB Message consumer (of the request message), and a MDB Message consumer (on the response queue). Is this a normal approach or is there something better ???

    Simply using the MessageConsumer.receive() the client will be blocked, killing all the purpose of the model(even with timeout).
    You have to send the message and wait for the response in two separate transactions. For example:
    // Start create and send transaction  
    ctx.getUserTransaction().begin();
    connection = connectionFactory.createQueueConnection();
    connection.start();
    session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    final Message request = // create message
    final Queue tempQueue = session.createTemporaryQueue();
    request.setJMSReplyTo(tempQueue);
    final QueueSender sender = session.createSender(destination);
    sender.send(request);
    ctx.getUserTransaction().commit();
    // End create and send transaction
    // Start receive transaction
    ctx.getUserTransaction().begin();
    final QueueReceiver receiver = session.createReceiver(tempQueue);
    final Message response = receiver.receive(TIMEOUT);
    ctx.getUserTransaction().commit();
    // End receive transaction
    // process response

  • Blocking Request/Response JMS model

    Hi everyone !
    I'm starting to write a JMS application and I'm having some doubt about the request/response model enabled by the replyTo() method and CorrelationID field. As far is I know JMS is intended to let the client be free from the server's response by posting it's message on the queue and start doing some other work. But supposing the client needs a response from the server(a MDB) after the processing of the message I wonder how would him receive this response, assuming there is a second queue for posting the response messages. Simply using the MessageConsumer.receive() the client will be blocked, killing all the purpose of the model(even with timeout). So I wonder, should I create a second MDB just to handle the response queue ? This would left me with an RPC message producer, a MDB Message consumer (of the request message), and a MDB Message consumer (on the response queue). Is this a normal approach or is there something better ?
    Thank you !

    Simply using the MessageConsumer.receive() the client will be blocked, killing all the purpose of the model(even with timeout).
    You have to send the message and wait for the response in two separate transactions. For example:
    // Start create and send transaction  
    ctx.getUserTransaction().begin();
    connection = connectionFactory.createQueueConnection();
    connection.start();
    session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    final Message request = // create message
    final Queue tempQueue = session.createTemporaryQueue();
    request.setJMSReplyTo(tempQueue);
    final QueueSender sender = session.createSender(destination);
    sender.send(request);
    ctx.getUserTransaction().commit();
    // End create and send transaction
    // Start receive transaction
    ctx.getUserTransaction().begin();
    final QueueReceiver receiver = session.createReceiver(tempQueue);
    final Message response = receiver.receive(TIMEOUT);
    ctx.getUserTransaction().commit();
    // End receive transaction
    // process response

  • JMS Transport, Transactional, asynchronous request-response

    Hi again :)
    I have weblogic web service with jms transport and have chosen session bean implementation.
    I'm testing transactional processing now.
    Required feature is to put getting request from queue and processing it in web service in one transaction.
    During tests I have noticed that:
    When I throw RuntimeException from my web service method the message doesn't come back to the queue.
    When I try to sessionContext.setRollbackOnly(); I get an error
    javax.ejb.EJBException: EJB Exception: : java.lang.IllegalStateException: [EJB:010158]Illegal attempt to call EJBContext.setRollbackOnly() from an EJB that was not participating in a transaction.
    When I deploy web service I get the following warning:
    <Warning> <EJB> <> <AdminServer> <[STANDBY] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1238752023176> <BEA-010212> <The EJB 'EventNotifierServiceEJB(Application: portal, EJBComponent: EventNotifierService-1.0-SNAPSHOT.jar)' contains at least one method without an explicit transaction attribute setting. The default transaction attribute of Supports will be used for the following methods: local[publish(package.PackageType)] >
    And putting @TransactionAttribute(TransactionAttributeType.MANDATORY) doesn't change this.
    So It seems that transactions doesn't work by default.
    I turned on XA in my own jms connection factory used by web service but this didn't help.
    Looking in weblogic documentation I have found the following sentences:
    In (http://e-docs.bea.com/wls/docs103/webserv_adv_rpc/jmstransport.html)
    "If you have specified that the Web Service you invoke using JMS transport also runs within the context of a transaction (in other words, the JWS file includes the @weblogic.jws.Transactional annotation), you must use asynchronous request-response when invoking the service. If you do not, a deadlock will occur and the invocation will fail."
    In (http://e-docs.bea.com/wls/docs103/webserv_adv_rpc/asynch.html)
    "The asynchronous request-response feature works only with HTTP; you cannot use it with the HTTPS or JMS transport."
    For me these two sentences are in conflict.
    Currently I'm trying to use just transactional annotation without asynchronous request-response but the risk of deadlocks doesn't sound good for me.
    BTW I have Oneway annotation in my web service method, I'm not sure if this changes something.
    I'll be grateful for any help in resolving this problem.
    Edited by: user10930859 on Apr 3, 2009 3:49 AM

    Hi Karthik-
    You can link the corelation-id..
    Make you third-party application to receive Message-id from JMSRequestQueue and send this message id as correlation-id to JMSResponseQueue. I guess it would work we have tried this as POC.
    Regards,
    Ramesh

  • Method names on "Client Request with Return" nodes

    I wasn't sure whether this question would be better here, or in the "integration"
    group. The traffic there is somewhat lighter than in here, so perhaps someone
    is more likely to read it here :) .
    I have two questions about the "method name" in a "Client Request with Return"
    node in a Java Process Definition. Apparently the method name is exposed in the
    WSDL. I can sort of understand what this method name is used for in the "request"
    node, but I fail to understand what the method name corresponds to in the "reply/response"
    node of the pair of two nodes. Why does this need to expose a method name in
    the WSDL when the point of the node is just to send back a response to the original
    request?
    Second, in the "Guide to Building Business Processes" document, in the section
    titled "Naming the Methods on Client Request with Return Nodes" (page 3-14 in
    my copy), the last sentence says "The name must be a valid Java class name".
    Is this true? That confuses me.

    What do you think is happening here? Specifically if a socket is a connected and a new one comes in. What then?
    private void listen() {
              try {
                   clientSocket = serverSocket.accept();
              } catch (IOException e) {
                   e.printStackTrace();
         }

  • How can I have my servlet accept 100 concurrent client requests?

              My servlet extends HttpServlet so it is multithreaded. Then I have written a java
              client which starts 100 concurrent threads that try to contact the servlet.
              There are always lots of threads which are refused by the Weblogic Server 6.0.
              They get a 'Connection refused' exception. Sometimes there are 50 refused connections,
              sometimes there are 0 refused connections (not very often), sometimes there are
              80 refused connections (usually).
              I have checked the 'Servlet' documentation and the 'J2EE Design Considerations
              for Weblogic Server' which recommends not to exceede the execute thread count
              number of 15. I have not changed that value, I do not even know if it still exists
              in Weblogic 6.0 as the document refers to the 5.0 version.
              Does anybody know how to solve this problem? How can I have the client requests
              waiting rather than being refused? Of course the main goal is to serve all the
              client requests, not to refuse.
              This is the code that the client thread uses to contact the servlet:
              URL url = new URL("http://localhost:7001/examplesWebApp/myServlet");
              URLConnection conn = url.openConnection();
              conn.setDoInput(true);
              conn.setDoOutput(true);
              DataOutputStream os = new DataOutputStream(conn.getOutputStream());
              os.writeBytes()
              os.writeBytes()
              Thanks for your time,
              David
              

              The key is
              KKEY_LOCALMACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters
              There you may need add a value "MaxUserPort" as REG_DWORD (5000 is default), also
              change "TcpTimedWaitDelay" to small number (30 is minimum). You may have trouble
              to find them. Just add them.
              You can also use Microsoft Web Application Stress Tool to test your Weblogic applications.
              As a free test tool, it is really powerful, although not so flexible.
              I guess you write your own test tool with java.net.URLConnection. I am not sure
              about the power of this class. In my case, I wrote my stress test tools with Java
              Socket. I can test application on Weblogic 6 with 1000 threads with my own tool
              and Microsoft tool, depending on memory and CPU of the machines I use. I run my
              tests on both Windows 2000 professional and Solaris.
              Check your CPU and memory usage with task manager.
              On the other hand, you should check log message on Weblogic 6. Try to turn on
              HTTP debug by add the following in your config.xml in tag <Server>.
              <ServerDebug DebugHttp="true" DebugURLResolution="true"
              JDBCConn="true" JDBCSQL="true" ListenThreadDebug="true" Name="myserver"/>
              "David Ruana" <[email protected]> wrote:
              >
              >Xiang, I really appreciate your help. I changed my Weblogic server configuration
              >from the console but I still experience the same problems.
              >
              >I start my 100 threads, and from about the 20th onward all them get the
              >'Connection
              >refused' exception in the URLConnection::getOutputStream() function,
              >always after
              >a successful URLConnection::openConnetion().
              >
              >My system is Windows 2000 Professional (Spanish version). I tried to
              >check the
              >open client socket descriptor limit but I was not able to find the TCPIP/MAXUSERPORT
              >in the registry. Do you know how is this entry called in Windows 2000?
              >
              >At this point I am not sure whether my problems are related to the Weblogic
              >server
              >or to the operative system. I will keep trying... I would appreciate
              >any other
              >suggestion.
              >
              >Thank you very much.
              >
              >
              >
              >"Xiang Rao" <[email protected]> wrote:
              >>
              >>It is better to use Weblogic 6 console to configure Weblogic server.
              >>In the console,
              >>there is tab Servers->myServer->Congiguration->Tuning, you can find
              >execute
              >>length
              >>and backlog.
              >>
              >>If you use Windows as test client, note Windows have a 5000 open client
              >>socket
              >>descriptors limit. You need change Windows Registry (TCPIP/MAXUSERPORT)
              >>to change
              >>this parameter.
              >>
              >>On the other hand, during test, you should monitor your test via Weblogic
              >>console
              >>(myServer->Monitoring->Performance), here you can see the change of
              >wait
              >>queue.
              >>If the queue keeps increaing, you are in trouble.
              >>
              >>Since you know how to use MBean, try to write customized (servlet, for
              >>example)
              >>to collect the following data: opened socket number, open socket number,
              >>opened
              >>session number and open session number. The two "open" numbers will
              >give
              >>you some
              >>clue. Also record your CPU and memory usage.
              >>
              >>BTW, what is the output you get from your test in terms of number of
              >>requests
              >>per second, response time and number of bytes downloaded/uplodaed per
              >>second?
              >>Are your test client and Weblogic running on the same machine?
              >>
              >>
              >>
              >>"David Ruana" <[email protected]> wrote:
              >>>
              >>>By the way, this is a piece of the config.xml file where you can see
              >>>my Server
              >>>configuration. It is the configuration which is installed in the examplesServer
              >>>in the free evaluation of Weblogic 6.0. I only modified the AcceptBacklog
              >>>value,
              >>>and added the ThreadPoolSize="15" line which was missing (I copied
              >from
              >>>the petstoreServer).
              >>>
              >>> <Server AcceptBacklog="1000" AdministrationPort="0" ClusterWeight="1"
              >>> ConsoleInputEnabled="false" DGCIdlePeriodsUntilTimeout="2"
              >>> DefaultProtocol="t3" DefaultSecureProtocol="t3s"
              >>> HttpdEnabled="true" JavaCompiler="C:\bea\jdk130/bin/javac"
              >>> ListenPort="7001" Name="examplesServer" NativeIOEnabled="true"
              >>>     ThreadPoolSize="15"
              >>> SocketReaderTimeoutMaxMillis="10"
              >>> TransactionLogFilePrefix="config/examples/logs/"
              >>> TunnelingClientPingSecs="45" TunnelingClientTimeoutSecs="40"
              >>>XMLRegistry="examplesXMLRegistry">
              >>> <ServerDebug Name="examplesServer"/>
              >>> <WebServer DefaultWebApp="DefaultWebApp_examplesServer"
              >>> LogFileName="./config/examples/logs/access.log"
              >>> LoggingEnabled="true" Name="examplesServer"/>
              >>> <Log FileName="./config/examples/logs/weblogic.log" Name="examplesServer"/>
              >>> <KernelDebug Name="examplesServer"/>
              >>> <SSL Enabled="true" ListenPort="7002" Name="examplesServer"
              >>> PeerValidationEnforced="0"
              >>> ServerCertificateChainFileName="./config/examples/ca.pem"
              >>> ServerCertificateFileName="./config/examples/democert.pem"
              >>> ServerKeyFileName="./config/examples/demokey.pem" TrustedCAFileName="./config/examples/ca.pem"/>
              >>> </Server>
              >>>
              >>>
              >>>
              >>>
              >>>
              >>>"Xiang Rao" <[email protected]> wrote:
              >>>>
              >>>>You only need to change Weblogic HTTP configuration. Give the server
              >>>>a big socket
              >>>>Backlog number. Since you test with 100 threads, you can think 1000
              >>>to
              >>>>5000, i.e.,
              >>>>1000 to 5000 requests will be in queue before got served. Aslo, you
              >>>might
              >>>>need
              >>>>to change your OS TCP/IP settings (both test clients and servers),
              >>such
              >>>>as maximum
              >>>>number of sockets and timeout value(so closed sockets will release
              >>socket
              >>>>descriptors
              >>>>immediately).
              >>>>
              >>>>On the other hand, the number of executive threads can be much larger
              >>>>than 15
              >>>>(50-200 is a normal number), depending on the features of your application.
              >>>>You
              >>>>can try your stress test tools to find a reasonable number by analyzing
              >>>>the relationships
              >>>>among (throughtput, response time, number of executive threads, etc).
              >>>>
              >>>>
              >>>>"David Ruana" <[email protected]> wrote:
              >>>>>
              >>>>>My servlet extends HttpServlet so it is multithreaded. Then I have
              >>>written
              >>>>>a java
              >>>>>client which starts 100 concurrent threads that try to contact the
              >>>servlet.
              >>>>>
              >>>>>There are always lots of threads which are refused by the Weblogic
              >>>Server
              >>>>>6.0.
              >>>>>They get a 'Connection refused' exception. Sometimes there are 50
              >>refused
              >>>>>connections,
              >>>>>sometimes there are 0 refused connections (not very often), sometimes
              >>>>>there are
              >>>>>80 refused connections (usually).
              >>>>>
              >>>>>I have checked the 'Servlet' documentation and the 'J2EE Design Considerations
              >>>>>for Weblogic Server' which recommends not to exceede the execute
              >thread
              >>>>>count
              >>>>>number of 15. I have not changed that value, I do not even know if
              >>>it
              >>>>>still exists
              >>>>>in Weblogic 6.0 as the document refers to the 5.0 version.
              >>>>>
              >>>>>Does anybody know how to solve this problem? How can I have the client
              >>>>>requests
              >>>>>waiting rather than being refused? Of course the main goal is to
              >serve
              >>>>>all the
              >>>>>client requests, not to refuse.
              >>>>>
              >>>>>This is the code that the client thread uses to contact the servlet:
              >>>>>
              >>>>>URL url = new URL("http://localhost:7001/examplesWebApp/myServlet");
              >>>>>URLConnection conn = url.openConnection();
              >>>>>conn.setDoInput(true);
              >>>>>conn.setDoOutput(true);
              >>>>>
              >>>>>DataOutputStream os = new DataOutputStream(conn.getOutputStream());
              >>>>>os.writeBytes()
              >>>>>os.writeBytes()
              >>>>>...
              >>>>>
              >>>>>Thanks for your time,
              >>>>>David
              >>>>>
              >>>>
              >>>
              >>
              >
              

  • Correlation with request response port

    I created a correlation type and correlation set on the behalf of File.ReceivedFilName context property.
    I am getting the initializing correlation set property in the send port as follows:
    But in Receive Port I am not getting the Following correlation sets property as follows:
    Why this is occuring ?
    Am I doing something wrong ?
    Is correlation supports with request response  port ?
    Prakash

    Hi Prakash,
    When you drop the Receive shape in your Orchestration, you would see both the “Initializing Correlation Set” and “Following Correlation Set” properties for the Receive Shape (same case for the Send Shape).
     When you have linked the Receive Shape to the Request-Response port in your Orchestration (Request-Response port whose Port direction of communication is set to “I’ll be sending a request and receiving a response” property), the “Following
    Correlation Set” property for the Receive Shape disappears (same case for the send shape). Because you have connected the send/Receive shape to the two send port and BizTalk can in turn handle the correlation. You don’t need to specify the correlation set
    properties explicitly. These properties need to be configured only when you configure your send/Receive shape to one-way ports where you need to instruct BizTalk on how to handle the correlation not when you configure send/Receive shape to two way send port.
    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

  • Client found response content type of 'text/plain', but expected 'text/xml'

    Hi All
    We have developed a J2EE- JAX-RPC web service using Weblogic's 'ServiceGenTask'.
    Invoking web service via java client and SOAP UI works like charm but fails when the
    service invoked via .NET client.
    Below is the .NET sample code and the Stack Trace:
    .NET CODE:
    System.Net.ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate {      return true;  });
    testwebservice.ESI est1 = new testwebservice.ESI();
    esi_detail = est1.getDetails("someuserid", "password"<Details> <Id>" + txt_eino.Text +"</Id> </Details>");
    Stack Trace:
    System.InvalidOperationException was unhandled by user code
    Message=Client found response content type of 'text/plain', but expected 'text/xml'.
    The request failed with the error message:
    HTTP/1.1 100 Continue
    <env:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Header/><env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><m:getCertificateDetailsForWSUResponse xmlns:m="http://mynamespace"><result xsi:type="xsd:string"><CertificateStatus>valid</CertificateStatus>
    </m:getCertificateDetailsForWSUResponse></env:Body></env:Envelope>
    Source=System.Web.Services
    StackTrace:
    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
    at shcilestamp.EstampIndia.getCertificateDetailsForWSU(String string, String string0, String string1) in c:\Users\Revenue\AppData\Local\Temp\Temporary ASP.NET Files\sra\6fd93bb3\8d227466\App_WebReferences.iojpamot.0.cs:line 105
    at default_1.btn_verify_estamp_Click(Object sender, EventArgs e) in c:\Users\Revenue\Desktop\OFFICE\sra\default.aspx.cs:line 1006
    at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
    at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
    at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
    at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
    at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    InnerException:
    Note: The same client code is able to access the service deployed in our DR site without any fault.
    However it fails to invoke service deployed in Production site.
    Is this anything to do with the Content-type settings at the web/app server layer?
    Any help will be appreciated.
    Thanks & Best Regards
    Avinash

    Make sure you're using the Reverse Proxy Plugin for Web Server, not the Application Server Connector (they are VERY similar, but not the same). The RPP knows how to handle 100 Continue, the Connector does not.
    Or use Web Server 7 and its built-in reverse proxy feature.

  • Client found response content type of 'text/html;charset=iso-8859-1', but expected 'text/xml'.

    Hello All,
    I am on BI 4.0 SP6.
    I am login to Advance Analysis Office using sso with Authentication : Windows AD, but when i login errors occurs:
    Client found response content type of 'text/html;charset=iso-8859-1', but expected 'text/xml'.
    The request failed with the error message:
    I have done all settings and configuration for SSO as per following notes:
    http://service.sap.com/sap/support/notes/1631734
    http://service.sap.com/sap/support/notes/1646920
    http://service.sap.com/sap/support/notes/1794675
    Earlier i was getting Login Exception Error WSE : 99999, i did some changes, after that the above error is coming
    Does anybody knows the solution?
    KR,
    MD

    refer the below note
    1785270 - How to configure AD SSO for Advance Analysis for MS Office with Business Objects BI 4.0

  • About error at 'return super.getContent(request,response)'.

    I am new in this area. Thanks for your help.
    I met a problem when I install a portal server. The error always happens at the sentence 'return super.getContent(request,response)'. The system works well in another computer.
    Would you please tell me what probably causes it. The following is error messages:
    06/13/2005 09:56:04:148 AM MDT: Thread[Thread-1081,5,main]
    ERROR: JspRequestDispatcher:
    javax.servlet.ServletException: Problem processing JSP: /DynamicTable.jsp
         at com.sun.portal.providers.jsp.JspRequestDispatcher.getJspResource(JspRequestDispatcher.java:164)
         at com.sun.portal.providers.jsp.JspRequestDispatcher.include(JspRequestDispatcher.java:97)
         at com.sun.portal.providers.jsp.jasper3.jasper.runtime.PageContextImpl.include(PageContextImpl.java:408)
         at jsps.etc._opt._SUNWps._desktop._ssdp_en_US._CSSDPDownloadAudit._html._CSSDPDownloadAudit_jsp._jspService(_CSSDPDownloadAudit_jsp.java:347)
         at com.sun.portal.providers.jsp.jasper3.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sun.portal.providers.jsp.JspServletWrapper.service(JspServletWrapper.java:182)
         at com.sun.portal.providers.jsp.JSPProvider.processJspFile(JSPProvider.java:695)
         at com.sun.portal.providers.jsp.JSPProvider.processJspFile(JSPProvider.java:674)
         at com.sun.portal.providers.jsp.JSPProvider.getContent(JSPProvider.java:473)
         at ca.ualberta.cssdp.providers.CSSDPDownloadAuditProvider.getContent(CSSDPDownloadAuditProvider.java:213)
         at com.sun.portal.desktop.context.ReusableProviderCaller.run(ReusableProviderCaller.java:145)

    This (http://www.javaworld.com/javaworld/jw-02-2007/images/jw-02-handler6.jpg) shows when the soap handler is executed in the request/response chain.
    What could be the case is that the bytes you are writing to the PrintStream are still buffered, by calling flush any buffered output bytes are written to the underlying output stream.
    Also do not forget to close the PrintStream. http://docs.oracle.com/javase/1.5.0/docs/api/java/io/PrintStream.html#flush()

  • Messaging only: WCF-BasicHTTP adapter Request-Response correlation

    Hi,
    we have a solution where we make a soap web service call to a third party.
    we do not want to use orchestrations.
    we are in need to pass a value to the third party service and we would
    like to have that value passed back to us in the response.
    However, the third party is not guaranteeing this.
    as an alternative, i tried promoting  a property into the context
    before the outbound call and check if this is still available in the context when the response come thru.. but no luck here.
    IS there any other way to achieve this?
    regards,
    MS

    Hi MS,
    What is your question? When you use Request-Response (Receive) port and solicit-Response (send) port, the correlation would happen out-ob-box with the help of EpmRRCorrelationToken, CorrelationToken and RouteDirectToTP
    properties.
    Are your not using the solicit-Response (send) which would take care of the correlation to  Request-Response (Receive) port. Ensure you're using the XML-Transit (on send) and XML-Receive (on receive) pipelines on these two way ports (in both Request-Response
    (Receive) port and solicit-Response (send) port)
    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

  • View the webservice soap request/response

    Hi,
    I am in wls81sp4. I have some webservice developed in workshop. And I created webservice controls for them. When the webservice is called in jsp, I couldn't see the request/response soap message on wls console even though I set -Dweblogic.debug.webservice=true -Dweblogic.webservice.verbose=true. I have another webservice, the client is the proxy, and I can see the message on console.
    How can I see the message from calling the control? Thanks

    HI Ronald,
    To get the SOAP Fault into your orchestration:
    1) On the Send port in BizTalk:
       a) WCF Adapter Properties, Messages tab: Propagate Fault Message = true
       b) WCF Adapter Properties, Messages tab: Inbound message body: Either use "soap:Body" or use a path that extracts your message OR /*[local-name()='Fault'] to get the SOAP fault
       c) "Enable routing for failed messages" - this has no impact on the SOAP Fault. So you probably want it set to true to handle real transmission errors (non SOAP faults).
    2) On the Send port within your orchestration
       - Select the operation & then "New Fault Message"
       - Set the message name to SoapFault (or whatever)
       - Set the message type to be the referenced schema: BTS.soap_envelope_1__2.Fault. (If this was a SOAP 1.1 operation you would use BTS.soap_envelope_1__1.Fault).
    3) In the Scope around your Send operation
       - Add new exception handler
       - Select "Exception Object Type" to the port-name.operation-name.SoapFault you created in step 2
       - Specify the object name, e.g. Fault
       - Fault is now the XML of the SOAP Fault & you can use XPath to get the Fault Reason and Message elements.
    Refer:
    How to catch and process SOAP faults
    MSDN has explained the process in detail:
    Using BizTalk Server Exception Handling. You can blindly follow it.
    Please mark as answer or vote as helpful if my reply does

Maybe you are looking for