OSB: JMS Transport URL for cluster
Hi,
I am trying to configure OSB JMS Transport business service. I have 3 JMS servers in my cluster and I am trying to understand how to configure my business service URI. Can I use all three uri's in my business service? If we configure multiple URI's how will they be used? The load balanced algorithm(round robin) we specify is for these uris?
Thank you
Matt
maybe this one helps a bit :
https://blogs.oracle.com/MarkSmith/entry/osb_and_jms_business_service_c
Similar Messages
-
OSB JMS Transport configuration
I have a need to pass a reply-to destination from one external process (the producer) to a second external process (the consumer), with the design supporting flexibility for changing destinations within the OSB pipeline at a future time. To enable this functionality, the following jms transport was designed on the OSB 10gR3:
external producer--->|---q1--->jmsTransProxy---->q2---|--->external consumer
The jmsTransProxy is configured with request/response text message types, jms protocol, Get All Headers yes, Is Response Required enabled, and Response Correlation Pattern CorrelationID.
In the Request pipeline of jmsTransProxy, a single stage is configured to Pass All Headers through Pipeline.
In the Response pipeline of jmsTransProxy, a single stage is configured to Pass All Headers through Pipeline.
When the external producer sets the JMSReplyTo header, I expected that this header would be passed from q1 to q2 so that the external consumer would receive it. The message payload is correctly received by the external consumer along with the JMSCorrelationID, but not the JMSReplyTo header information. By examining the logs, I can see the header information is received correctly in the request pipeline, but is not available from q2.
What is the correct solution to have the JMSReplyTo information pass through to the external consumer?Thank-you for your tips.
I have revised the pipeline as you indicated and more of the headers pass through, but not the JMSReplyTo header. Because the user headers are passed through, I can use get/setObjectProperty on the message to realize the functionality required (though this is a workaround).
current configuration:
external producer--->q1--->jmsProxy--->jmsBusiness--->q2---> external consumer
jmsProxy parameters:
service type: messaging service
request message type: text
response message type: none
protocol: jms
endpoint uri: q1
get all headers: yes
destination type: queue
is reposnse required: disabled
etc.
jmsProxy request pipeline:
publish to [ jmsBusiness ]
request actions: set transport headers for [ outbound request ] (pass all headers)
jmsBusiness parameters:
service type: messaging service
request message type: text
response message type: none
protocol: jms
endpoint uri: q2
destination type: queue
is reposnse required: disabled
etc. -
OSB JMS resources in a cluster
Hi,
I am creating an OSB cluster with multiple managed servers using a script. I would like to know what resources (JMS) are needed and how they should be targeted so that reporting works.
Best regards
DimoI think I have found out what is required by the OSB:
1. DataSource deployed in the cluster AND on the admin server for the reporting (wlsbjmsrpDataSource), scripts to drop and create the tables are located in ${osb_home}/dbscripts/oracle/
2. JMS Module containing:
2.1. 3 Connection factories:weblogic.wlsb.jms.transporttask.QueueConnectionFactory, wli.reporting.jmsprovider.XAConnectionFactory, wli.reporting.jmsprovider.NonXAConnectionFactory
2.2. 8 Queues - QueueIn, wli.reporting.jmsprovider.queue, wli.reporting.jmsprovider_error.queue, wli.reporting.purge.queue, wlsb.internal.transport.task.queue.email, wlsb.internal.transport.task.queue.file, wlsb.internal.transport.task.queue.ftp, wlsb.internal.transport.task.queue.sftp
I am not sure if that list is complete as it has been a bit of reverse engineering to find it out... -
Is Message debatching in OSB using JMS transport possible
hi
I have message on JMS queue with multiple message(s) in it.
Now my requirement is to read this JMS message as multiple internal message(s) from queue using OSB JMS transport.
Is this possible from OSB JMS transport?
Thanks in advance.
-Ramakrishna GillaNo.. JMS transport wont automatically do it for you .. You will have to write a jms proxy service and have your logic to do the debatching.. alternatively you can use jms proxy as a pass thru service writing to the file system and then have the JCA file adapter to do the debatching..
-
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 -
Java client for OSB proxy with JMS Transport
Hi,
I am trying to call OSB proxy with JMS Transport. I am generating the client through ant task clientgen and following this article
http://www.oracle.com/technetwork/articles/murphy-soa-jms-092653.html
The osb proxy is req-response and is simply routing to BS which return a string value.
When I run my client, it get stuck and does not return at all. Has any one trying java client in such scenario?
What I may be missing?
Below is snipped of client code:
String url = "http://localhost:7021/sbresource?PROXY/MySample/MyJMSProxyService";
CreditLoanApprovalServiceSoapBindingQSService service = new CreditLoanApprovalServiceSoapBindingQSService_Impl(url);
MyPortType port = service.getCreditLoanApprovalServiceSoapBindingQSPort();
LoanStruct in = new LoanStruct(); //populated the data structure
String loanResult = port.processLoanApp(in); // Stuck here without any error
System.out.println("LoanResult--> " + loanResult);
Thx
/Ashwanihttp://localhost:7021/sbresource?PROXY/MySample/MyJMSProxyService is the WSDL URL of the proxy.
Transport is is picked by the client from wsdl.
As far as the documentation of client generation is there, there is no change.
But meanwhile I have started working on sending the message directly to queue. JMSProxy is getting called. May be I will first run the proxy this way and then try troubleshooting the java client.
Regards
Ashwani -
Error while passing ODI variable in JNDI Url for JMS Queue XML
Hi,
Facing a weird problem while passing ODI variable in JNDI Url for JMS Queue XML.
Below is the JNDI Url configured under ODI Topology:
JNDI Url: t3://<host_location>?d=#TEST.SCHEMA_FILE&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
where,
#TEST.SCHEMA_FILE --> ODI variable storing xsd name and location
Issue Description:
If we restart ODI server then for the first run of any ODI interface using JMS Queue XML, it is unable to get the value for ODI variable present in JNDI Url (d=#TEST.SCHEMA_FILE).
It throws error message saying: No XSD found
Temporary Resolution:
As a temporary fix if we hard-code and pass the value in that ODI variable as shown below, it will successfully go through.
eg: JNDI Url: t3://<host_location>?d=C:\XSD\test.xsd&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
Reverting it back to variable later will have no issues and subsequent run will succeed.
But again anytime later if server is restarted then first run will have this issue.
Want to have permanent fix for it.
Any one having idea on it please share. Appreciate your help!What ODI version are you using? It could be related to the bug in the older version as described in support note Doc ID 1290326.1
-
How to set property for Cluster Environment for JMS Adapter
Hi All,
I am moving from DEV to Prod environment which is cluster.
Can you Please explain me what property I need to Set for Cluster Environment for JMS Adapter, so that I could avoid race condition for Dequeue/enqueue.
I am using soa suite 10.1..3.4
Thanks in Advance.
Edited by: vikky123 on Jul 12, 2010 7:03 AMput something like this
<activationAgents>
<activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="PARNERLINKNAME">
<property name="clusterGroupId">SOMEUNIQUEVALUE</property>
<property name="portType">PARTNERLINK_PORTTYPE</property>
</activationAgent>
</activationAgents> -
Configure # of JMS consumers for WebServices over JMS Transport
I'm using WebLogic Server 9.2. My Web Services are using JMS Transport.
10,000 Web Services requests are submitted to the Web Services JMS queue at the same time. Processing time seems a little slow. In the Admin console, monitoring info of the JMS queue shows the Consumers is 4 and Consumers High is 6.
I want to scale Web Services processing by increasing the number of JMS consumers that transform JMS request messages into Web Services requests. Does anyone have an idea to configure it?Hi,
I don't think the number of consumers for a service is configurable. There is a single consumer for each service. Well, there is another consumer for interop purposes, which is irrelevant to our discussion here.
You may be aware that multiple consumers reading from the same queue would result in requests being processed in parallel, which means the order that the requests are processed might be different from the order that they are put into the queue.
For applications where the order of processing the requests to the same web service is not important, it probably makes sense to have an option of configuring multiple consumers. But this is no such option right now.
Regards,
Dongbo, BEA -
Configuring Keystore for clusted WL 10.3 (OSB).
In one of test env i have weblogic 10.3 (OSB) Admin with 6 managed servers. In order to configure one way SSL,Do we need to configure keystore (Identity&Trust) only for admin or for all managed servers individually?
help is much appriciated.
Regards,
SreepadBut configuring keystore in weblogic console is more like deploying any app, so doing it on admin wiil not help? Where did you see that? It is not correct. Configuring keystore is a part of Weblogic configuration and it is not a deployment. Moreover, each and every server has it's own configuration so you have to mention the keystore path in all server's config, however you may use same keystore for all the servers.
Remember, in clustered deployment, OSB gets deployed on the cluster and not on admin server.
also can we use WLST for configurng keystore?I think we can create and configure complete domain itself using WLST, so this will also be possible.
Regards,
Anuj -
JMX script for monitoring JMS servers in a cluster
hi
I am new to writing scripts. I will appreciate if I can get some help in writing a JMX script for monitoring JMS Servers in a cluster a well as monitoring the distributed queues
thanksExact scenario is,
JMS Server
|
DistributedQueue
| |
JMSrvr1 JMSrvr2
Q1 Q3
Q2 Q4
Q1 and Q2 delegateing messages, and at the same time Q3,Q4 also delegating messages.
If JMSrvr1 down, we need to merge Q1 and Q2 with JMSrvr2. Here we cannot migrate as, JMSrvr already have queues. We need to merge all these queues.
Thanks and Regards,
Narayana Moorthy. -
JMS Transport for BPEL processes
Hi,
Can anyone let me know if we can use JMS transport for hosting the webservices in BPEL. If we can host, any pointers on how to do it would be of great help.
Regards,
SKHere is the edoc for JMS transport:
http://edocs.bea.com/wls/docs81/webserv/jmstransport.html
WSDL will have an additional port. The address for
this port looks like:
"jms://" + host + ":" + port + "/" + jmsFactoryName +
"/" + jmsQueueName + "?URI=" + serviceURI;
Soap envelope is send as a JMS text message. Client
also sends the serviceURI as a String property (with
name "URI" and value serviceURI). It also need to create
a temp queue to get the response and the temp queue
is set using JMSReplyTo() method on the message.
Let me know if you need more details,
Regards,
-manoj
http://manojc.com
"Jay Kasi" <[email protected]> wrote in message
news:3ecbec66$[email protected]..
>
Hi.
I know that BEA weblogic server 8.1 supports JMS as a transport forinvoking a
web service hosted on a weblogic server. I would like to integrate withsuch a
web services using my own software. How can I get the specifications forthe WSDL
binding to JMS for this and the SOAP 1.1 bindingg to JMS for this.
regards
jay kasi -
OSB jms clustering - load balancing seems to be not working
Hi All,
I have one admin server and two managed servers running ( one of these managed server is running in the remote linux machine) in a cluster
I have connectionfactory created with load balance enabled with round robin
and server affinity is disabled
I have queue created as uniformly distributed Q
I have a proxy service with load balancing as roundrobin and endpoint URL as below
jms://rdoelapp001011:61703,rdoelapp001013:61703/synergyConnectionFactory1/MM_gridQ0
If I execute this proxy sending messages it always go to one server only. There is no message going to the other server.
If I shutdown the server that receives messages then the other server is receiving messages. Seems like fail-over is working but not the load-balancing
There is one point may be worth mentioning here is, from the admin console if I look at the servers for the clusters it has below information
Name State Drop-out Frequency Remote Groups Discovered Local Group Leader Total Groups Discovered Group Leaders Groups Primary
synergyOSBServer1 RUNNING Never 0 synergyOSBServer1 1 synergyOSBServer1 *{synergyOSBServer1}* 0
synergyOSBServer2 RUNNING Never 0 synergyOSBServer1 1 synergyOSBServer1 *{synergyOSBServer1, synergyOSBServer2}* 0
one server has groups as {synergYOSBServer1} instead of {synergyOSBServer1, synergyOSBServer2}. Does that look correct?
here is my jms xml file
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
*<connection-factory name="synergyConnectionFactory1">*
*<sub-deployment-name>synergySubDeploy1</sub-deployment-name>*
*<default-targeting-enabled>false</default-targeting-enabled>*
*<jndi-name>synergyConnectionFactory1</jndi-name>*
*<client-params>*
*<client-id-policy>Restricted</client-id-policy>*
*<subscription-sharing-policy>Exclusive</subscription-sharing-policy>*
*<messages-maximum>10</messages-maximum>*
*</client-params>*
*<transaction-params>*
*<xa-connection-factory-enabled>false</xa-connection-factory-enabled>*
*</transaction-params>*
*<load-balancing-params>*
*<load-balancing-enabled>true</load-balancing-enabled>*
*<server-affinity-enabled>false</server-affinity-enabled>*
*</load-balancing-params>*
*<security-params>*
*<attach-jmsx-user-id>false</attach-jmsx-user-id>*
*</security-params>*
*</connection-factory>*
<uniform-distributed-queue name="errorQ">
<sub-deployment-name>synergySubDeploy1</sub-deployment-name>
<default-targeting-enabled>false</default-targeting-enabled>
<jndi-name>errorQ</jndi-name>
<load-balancing-policy>Round-Robin</load-balancing-policy>
<forward-delay>-1</forward-delay>
<reset-delivery-count-on-forward>true</reset-delivery-count-on-forward>
</uniform-distributed-queue>
<uniform-distributed-queue name="undlvQ">
<sub-deployment-name>synergySubDeploy1</sub-deployment-name>
<default-targeting-enabled>false</default-targeting-enabled>
<jndi-name>undlvQ</jndi-name>
<load-balancing-policy>Round-Robin</load-balancing-policy>
<forward-delay>-1</forward-delay>
<reset-delivery-count-on-forward>true</reset-delivery-count-on-forward>
</uniform-distributed-queue>
*<uniform-distributed-queue name="MM_gridQ0">*
*<sub-deployment-name>synergySubDeploy1</sub-deployment-name>*
*<default-targeting-enabled>false</default-targeting-enabled>*
*<jndi-name>MM_gridQ0</jndi-name>*
*<load-balancing-policy>Round-Robin</load-balancing-policy>*
*<forward-delay>5</forward-delay>*
*<reset-delivery-count-on-forward>true</reset-delivery-count-on-forward>*
*</uniform-distributed-queue>*
<saf-imported-destinations name="synergySAFImportedDest1">
<sub-deployment-name>synergySubDeploy1</sub-deployment-name>
<default-targeting-enabled>false</default-targeting-enabled>
<saf-queue name="gridQ0">
<remote-jndi-name>MB_gridQ0</remote-jndi-name>
<local-jndi-name>gridQ0</local-jndi-name>
<non-persistent-qos>At-Least-Once</non-persistent-qos>
<time-to-live-default>0</time-to-live-default>
<use-saf-time-to-live-default>false</use-saf-time-to-live-default>
<unit-of-order-routing>Hash</unit-of-order-routing>
</saf-queue>
<jndi-prefix>MB_</jndi-prefix>
<saf-remote-context>synergySAFContext1</saf-remote-context>
<saf-error-handling>synergySAFErrorHndlr1</saf-error-handling>
<time-to-live-default>0</time-to-live-default>
<use-saf-time-to-live-default>false</use-saf-time-to-live-default>
<unit-of-order-routing>Hash</unit-of-order-routing>
</saf-imported-destinations>
<saf-remote-context name="synergySAFContext1">
<saf-login-context>
<loginURL>t3://rdoelapp001013:7001</loginURL>
<username>weblogic</username>
<password-encrypted>{AES}z9VY/K4M7ItAr2Vedvhx+j9htR/HkbY2LRh1ED+Cz5Y=</password-encrypted>
</saf-login-context>
<compression-threshold>2147483647</compression-threshold>
</saf-remote-context>
<saf-error-handling name="synergySAFErrorHndlr1">
<policy>Log</policy>
<log-format xsi:nil="true"></log-format>
<saf-error-destination xsi:nil="true"></saf-error-destination>
</saf-error-handling>
</weblogic-jms>
Any help will be greatly appriciated
Edited by: 818591 on Feb 16, 2011 11:28 AMI am not getting you here "the right approach is to make OSB run on the man server cluster and not on admin server. "
I have a jms proxy service that I created from admin console
And also I have gone thru the step 5 in the link below
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/deploy/config.html#wp1524235
If I am not wrong, the proxy service endpoint URI determines where it is pointing to. If it is a cluster environment, it should point to a clustered address
My proxy has below endpoint URI
jms://rdoelapp001011:61703,rdoelapp001013:61703/synergyConnectionFactory1/MM_gridQ0
and rdoelapp001011:61703,rdoelapp001013:61703 is my cluster address
As per your suggestion "To fix your problem, *make osb to run on the cluster* and specify the same URL for the jms proxy service"
Could you please provide some instruction how would I "make osb jms proxy service to run in a cluster"
As a note, I have Q defined as a distributed Q and connection factory targets to the cluster. UDQ also targtes to the cluster.
Just for a testing I have created another manged server running local to the machine where my admin server is running
And I created a proxy by following steps as I mentioned above and with endpoint URI as below
jms://rdoelapp001011:61703,rdoelapp001013:61703,*rdoelapp001011:61700*/synergyConnectionFactory1/MM_gridQ0
where the new address of my cluster is rdoelapp001011:61703,rdoelapp001013:61703,rdoelapp001011:61700
It did create consumers in both the managed servers in the cluster that are running locally, but no consumers in the remote managed server.
So I am kind of leaning towards thinking that there is some incorrect setup for the remote managed server and may be admin server is not able to communicate to the remote server for some reason but not sure about it..
As a note the cluster is setup to communicate using "unicast" channel
and I created a channel in each manged server with the same name
here is the cluster configuration
<name>synergyCluster1</name>
<cluster-address>rdoelapp001011:61703,rdoelapp001013:61703,rdoelapp001011:61700</cluster-address>
<default-load-algorithm>round-robin</default-load-algorithm>
*<cluster-messaging-mode>unicast</cluster-messaging-mode>*
*<cluster-broadcast-channel>synergyChannel1</cluster-broadcast-channel>*
*<number-of-servers-in-cluster-address>3</number-of-servers-in-cluster-address>*
</cluster>
here are the twoOSBserver configuration
<server>
<name>synergyOSBServer1</name>
<machine xsi:nil="true"></machine>
<listen-port>61703</listen-port>
<cluster>synergyCluster1</cluster>
<web-server>
<web-server-log>
<number-of-files-limited>false</number-of-files-limited>
</web-server-log>
</web-server>
<server-debug>
<debug-scope>
<name>weblogic.jms.saf</name>
<enabled>true</enabled>
</debug-scope>
<debug-jmssaf>true</debug-jmssaf>
<debug-saf-sending-agent>true</debug-saf-sending-agent>
</server-debug>
<listen-address>localhost</listen-address>
<network-access-point>
*<name>synergyChannel1</name>*
*<protocol>cluster-broadcast</protocol>*
*<listen-address>localhost</listen-address>*
*<listen-port>61702</listen-port>*
<http-enabled-for-this-protocol>true</http-enabled-for-this-protocol>
<tunneling-enabled>false</tunneling-enabled>
*<outbound-enabled>true</outbound-enabled>*
*<enabled>true</enabled>*
<two-way-ssl-enabled>false</two-way-ssl-enabled>
<client-certificate-enforced>false</client-certificate-enforced>
</network-access-point>
<jta-migratable-target>
<user-preferred-server>synergyOSBServer1</user-preferred-server>
<cluster>synergyCluster1</cluster>
</jta-migratable-target>
</server>
<server>
<name>synergyOSBServer2</name>
<ssl>
<enabled>false</enabled>
</ssl>
<machine xsi:nil="true"></machine>
<listen-port>61703</listen-port>
<listen-port-enabled>true</listen-port-enabled>
<cluster>synergyCluster1</cluster>
<web-server>
<web-server-log>
<number-of-files-limited>false</number-of-files-limited>
</web-server-log>
</web-server>
<listen-address>rdoelapp001013</listen-address>
<network-access-point>
*<name>synergyChannel1</name>*
*<protocol>cluster-broadcast</protocol>*
*<listen-address>rdoelapp001013</listen-address>*
*<listen-port>61702</listen-port>*
<http-enabled-for-this-protocol>true</http-enabled-for-this-protocol>
<tunneling-enabled>false</tunneling-enabled>
*<outbound-enabled>true</outbound-enabled>*
*<enabled>true</enabled>*
<two-way-ssl-enabled>false</two-way-ssl-enabled>
<client-certificate-enforced>false</client-certificate-enforced>
</network-access-point>
<java-compiler>javac</java-compiler>
<jta-migratable-target>
<user-preferred-server>synergyOSBServer2</user-preferred-server>
<cluster>synergyCluster1</cluster>
</jta-migratable-target>
<client-cert-proxy-enabled>false</client-cert-proxy-enabled>
</server>
<server>
Edited by: 818591 on Feb 18, 2011 11:26 AM -
Parameters in OSB End-point URL
Hi:
I have a OSB end-point URL say
https://XXX.XX.XX.XX:7002/Sample/Books
which is exposed as proxy service with ServiceType as "Any XML Service", and this routes to a business service whose protocol is "jms" and ServiceType is also "Any XML Service".
I have shared across the proxy end--point URL to other application. Now they have two kind of books available in other application, they want to send across the same as parameters in the same end-point URL like
https://XXX.XX.XX.XX:7002/Sample/Books?Type=Fiction
https://XXX.XX.XX.XX:7002/Sample/Books?Type=WarBased
Now my question is will my OSB service able to pick-up the above case and based on the parameters will we be able to route it to the Business service along with the parametes. For doing that do i need to maintain any schema for Business Service?
Regards,
RKRK,
Use the *$inbound/ctx:transport/ctx:request/http:query-string* element to get all the arguments in the URL.
http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/httppollertransport/transports.html#wp1083292.
After that You can have conditional routing to Route it specific BS either Fiction BS or WarBased BS or you can try using Routing Table.
For doing that do i need to maintain any schema for Business Service?No , I think if you just need to route the request to JMS BS coming from Other Application,
But if You want to validate the request which you would be sending to BS then use schema to validate your incoming request.
Regards,
Abhinav -
OSB Http Transport Custom Authenticatiion (X509 in Http header)
Hello!
I'm trying to solve this case. We have F5 Load balancer that terminates SSL Connections From client to the OSB. When terminating the SSL, the LB adds the clients certificate into headers of the Http request going to OSB.
OSb proxy service is configured to use custom authentication with token type X509 (only choice in the OSB console).
What happens when I send the request to OSB, is that I get http code 401 (unauthorized) this error on server log:
####<Sep 27, 2011 3:08:05 PM EEST> <Error> <WliSbTransports> <appserver02> <MANSERV02> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1317125285598> <BEA-381327> <Transport-level custom token identity assertion failed
java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.security.cert.X509Certificate;
The HTTP header sent to OSB is in the messages below.
It has also been wihotu the BEGIN CERTIFICATE and END CERTIFICATE lines with same results.
Can somebody help me in:
a) Should the certificate be sent in what form from LB to OSB.
b) How should the OSB/WLS be configured for this to work?
OSB version is 10.3.1.
Request to the server is:
POST /prjTemplateService/ProxyServices/psvcHelloWolrdWSSSLInterface HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "urn:#HelloWorldOperation"
User-Agent: Jakarta Commons-HttpClient/3.1
Host: <ip_here>
Content-Length: 459
SSLClientCertStatus: ok
SSLClientCertb64: -----BEGIN CERTIFICATE-----
MIICHDCCAYUCBE2sABcwDQYJKoZIhvcNAQEEBQAwVTELMAkGA1UEBhMCRkkxCzAJ
BgNVBAgTAkZJMQ4wDAYDVQQHEwVFc3BvbzEMMAoGA1UEChMDRVpaMQswCQYDVQQL
EwJUQzEOMAwGA1UEAxMFSnVzc2kwHhcNMTEwNDE4MDkxMDQ3WhcNMTEwNzI3MDkx
MDQ3WjBVMQswCQYDVQQGEwJGSTELMAkGA1UECBMCRkkxDjAMBgNVBAcTBUVzcG9v
MQwwCgYDVQQKEwNFWloxCzAJBgNVBAsTAlRDMQ4wDAYDVQQDEwVKdXNzaTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvEPjEn3tvG3YuXlsLZnE7ZOKUJIF0Foy
c1hp+k7dyGUoHu3Phva7eVOO1cmHaGkFHkg+EnnK3+/Y58EMQAEwPOfQTj0/vSSk
cEx2X/2p2W7ACldJlYMxx2ZdFa1qaKTXtoieLy23/kJI+ZTfIoB+nmZiPRE9Hq8p
LTPlcMWVFnkCAwEAATANBgkqhkiG9w0BAQQFAAOBgQC3EZMQieOy4PFh+95R6W7/
3xaaRm/BzmEU/Wf9JweEwrnttdSmRKsxx9vSkADnD0J7jGO+koym5CWvJHbox4Sk
QMRPFaTOBRD4hzZeJMidds1LSzUm/QE9PXzjS/HLSjBBs5DmZfdR+uXPSFqTROkd
87R5veuPX5KeKQHs8iesTw==
-----END CERTIFICATE-----
SSLClientCertSN: 4d:ac:00:17
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Hello:client">
<soapenv:Body>
<urn:HelloWorldRequest>
<urn:FirstName>Jolly</urn:FirstName>
<urn:Surname>Roger</urn:Surname>
</urn:HelloWorldRequest>
</soapenv:Body>
</soapenv:Envelope>
Response from OSB:
HTTP/1.1 401 Unauthorized
Connection: close
Date: Fri, 30 Sep 2011 08:32:33 GMT
Content-Length: 1518
Content-Type: text/html
X-Powered-By: Servlet/2.5 JSP/2.1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Draft//EN">
<HTML>
<HEAD>
<TITLE>Error 401--Unauthorized</TITLE>
<META NAME="GENERATOR" CONTENT="WebLogic Server">
</HEAD>
<BODY bgcolor="white">
<FONT FACE=Helvetica><BR CLEAR=all>
<TABLE border=0 cellspacing=5><TR><TD><BR CLEAR=all>
<FONT FACE="Helvetica" COLOR="black" SIZE="3"><H2>Error 401--Unauthorized</H2>
</FONT></TD></TR>
</TABLE>
<TABLE border=0 width=100% cellpadding=10><TR><TD VALIGN=top WIDTH=100% BGCOLOR=white><FONT FACE="Courier New"><FONT FACE="Helvetica" SIZE="3"><H3>From RFC 2068 <i>Hypertext Transfer Protocol -- HTTP/1.1</i>:</H3>
</FONT><FONT FACE="Helvetica" SIZE="3"><H4>10.4.2 401 Unauthorized</H4>
</FONT><P><FONT FACE="Courier New">The request requires user authentication. The response MUST include a WWW-Authenticate header field (section 14.46) containing a challenge applicable to the requested resource. The client MAY repeat the request with a suitable Authorization header field (section 14.8). If the request already included Authorization credentials, then the 401 response indicates that authorization has been refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent has already attempted authentication at least once, then the user SHOULD be presented the entity that was given in the response, since that entity MAY include relevant diagnostic information. HTTP access authentication is explained in section 11.</FONT></P>
</FONT></TD></TR>
</TABLE>
</BODY>
</HTML>>
by using Client Cert authentication I have to set HTTPS required to true.
>
Yes.
>
When I try to invoke this service with http request, it redirects to https service.
This actually just trashes the entire idea of terminating SSL in the load balancer.
>
Not necessarily. Although direct HTTP request to WebLogic is redirected to HTTPS enabled port, you can still use this settings with WebLogic plugin. I'm not aware of your deployment, but I use Apache plugin for WebLogic, terminate SSL on Apache and I'm still able to send requests authenticated by certificate from client through HTTPS.
I don't know about F5, but I guess there should be similar feature as well.
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/cluster/load_balancing.html
Maybe you are looking for
-
Imac told me to restart and now will not boot up?
Hi, I have an imac 20" intel (not the new aluminium one but the white version) which I have had for a few months. Today i was using it and all was normal until I had a grey swoosh thing come doen over the screen from top to bottom and then a black bo
-
How do I add a wifi repeater to my network
I am trying to add a repeater but the instructions are written for a PC
-
Editing with Mac Monitor and TV.
When I try to view a TV and monitor simultaneously for editing I do not always get a picture on the TV. Sometimes sound only. I use a Panasonic GS 400 connected between monitor and TV. In preferences I have set iMovie to playback through camera. It a
-
Hi SDN's, An existing program for Interest Calculation contains a LDB - DDF (CUSTOMER DATABASE). I was asked to optimise the program. What i observed is that the use of LDB itself is taking a long time. So, how can i rewrite the program with out usi
-
How does an I pad glass face get cracked?
My new I pad 3 has a serious crack. it has not been abused or dropped. it is covered with a magnetic keyboard protector. Has that happened to anyone else.... and is there a resolution to this issue ... the store does not want to recognize this as t