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,
MarkusWhere 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 AMHi 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 ?
PrakashHi 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
AvinashMake 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. -
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,
MDrefer 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,
MSHi 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? ThanksHI 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
-
Please help! I get the error message, "Songs on the iPod cannot be updated because all of the playlists selected for updating no longer exist." So it seems that I erased the playlists from my iPod. I have done the "Five Rs." Doing the iPod Updater to
-
I bought an IPad4 in Virginia, USA, as a gift to my brother who lives in India. I registered it when I purchased it and may have entered my email at registration per guidance I got in the Applestore. When I gave it to him I remember setting up his e
-
Question marks on each application?
after i have accidentally deleted the iCal, the ical icon is still on the dock but if i tap it, it shows question mark infront of it? what does it mean? PLS help!! thanks, enyakiz
-
XMLParser and Special Characters
Hi, I'm trying to read in an XML Document from a stream (e.g. a file) using XMLParser. The document contains german text (i.e. lots of special characters like umlauts �, �, � and others). If I read this stream into a text string all these special cha
-
Ask the Expert:Configuring, Troubleshooting & Best Practices on ASA & FWSM Failover
With Prashanth Goutham R. Welcome to the Cisco Support Community Ask the Expert conversation. This is an opportunity to learn and ask questions about the Configuring, Troubleshooting & Best Practices on Adaptive Security Appliances (ASA) & Firewall S