How connect weblogic t3 protocol with virtual server
Hello F5 friends , Sorry for my english , it's not so good but i'm try to explain what id do to solve my problem the best i can. The past week i have a problem with an oracle weblogic server 12.2.1 an the t3 protocol. I configured a VS for a weblogic server, this vs serves for webapps, but also for connecto to jms queues and connect to the scripting tool on the admin console (WLST), all it's working good, but when i tried to connecto through T3 to wlst or to a JMS connection factory , sorprise!!, it was not possible, after that i start to review all the post searching for a response but many people have the same problem and anybody response in a clear way(i try to use a FASTL4 profile but doesnt work), then i found a light on the issue (in some way i found in a post but don't remember who was the member that publish it).
"if you want to connecto to a wlst or a jms connection factory, the VS port must be the same of the weblogic server where the jms connection factory and the queue was create, or where you connect to wlst cli"
But there's still a problem, t3 wont work on the VS if you use a http profile, but you need it because the applications you connect on weblogic through the VIP need that profile(well that's in my case i needed in that way), then i create a little irule that disable the http profile base on the tcp payload content, if the payload contains the string "t3://" i disable the http profile, in my case, this is the data that TCP::payload present when i invoke t3 connection:
TCP DATA IS: (t3 12.2.1 AS:255 HL:19 MS:10000000 LP:DOMAIN PU:t3://1.1.1.1:12560 )
`
With that info the irule can decide if disable or not the http profile.
When the connection its through http, this is the data that hold TCP::payload
`TCP DATA IS: (GET /console/images/menu_shadow.png HTTP/1.1
Host: xxx.xxx.xxx:12560 User-Agent: Mozilla/5.0 (X11;
Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0 Accept: *
/* Accept-Language: en-US,es-CL;q=0.8,es;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate
Referer: http://xxx.xxx.xxx:12560/console/css/forms.css
Cookie: ADMINCONSOLESESSION=
DNT: 1 Via: 1.1 xxx.xxx.xxx (squid/3.1.23) X-Forwarded-For: xx.xx.xxx.xx Cache-Control: max-age=259200 Connection: keep-alive )
`
This is the irule i use:
`when CLIENT_ACCEPTED {
TCP::collect
}
when CLIENT_DATA {
set tcplen [TCP::payload length]
set tcpdata [TCP::payload]
log local0.debug "CLIENT_DATA ($tcplen)"
if { [TCP::payload $tcplen] contains "t3://" } {
log local0.debug "TCP DATA IS: ($tcpdata)"
HTTP::disable
} else {
log local0.debug "TCP DATA IS: ($tcpdata)"
}
TCP::release
}
Then i assign it to the VS and it works, for WLST and for JMS connection factory for send messages
Well its not a great irule , if you think it can be improved, please send comments.
Hope this helps you a little, if you have a better solution, PLEASE!! tell me.