Tuesday, January 25, 2011

Accessing the composite instance page directly on SOA Suite 11g

This was done relatively easy in SOA Suite 10g, and in 11g  the concept is roughly identical.

If you wanted a URL that takes you directly to the page that displays the flow of your composite instance in SOA Suite 11g, the URL should take the following format:
http://<hostname>:7001/em/faces/ai/soa/messageFlow?target=/Farm_<domain_name>/<domain_name>/soa_server1/<partition>/<composite_name>%20[<version>]&type=oracle_soa_composite&soaContext=<partition>/<composite_name>!<version>/<instance_id>
 For example, the URL would look like this:
http://soasandbox.ipnweb.com:7001/em/faces/ai/soa/messageFlow?target=/Farm_soa_domain/soa_domain/soa_server1/default/HelloWorld%20[1.0]&type=oracle_soa_composite&soaContext=default/HelloWorld!1.0/20001
By accessing the URL this way, once authenticated, you will be taken to the instance flow directly.

This can be advantageous if you decide to write your own error pages that link back to the console.


Applicable Versions:
  • Oracle SOA Suite 11g (11.1.1.x)

3 comments:

Anonymous said...

Thanks ..this was usefull to me
-Ramesh

Ahmed Saleh said...

You can get sever_name and domain_name using Java code from the mbeans (JMX or normal lookup on the mbean)

using JMX might use the following code:

String protocol = "t3";
int port = 7001;
String hostname = "localhost";
String jndiroot = "/jndi/";
String mserver = "weblogic.management.mbeanservers.domainruntime";
JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port, jndiroot + mserver);
JMXConnector connector = JMXConnectorFactory.connect(serviceURL, jndiProps);
MBeanServerConnection connection = connector.getMBeanServerConnection();
ObjectName service = new ObjectName("com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
ObjectName domainNameBean = (ObjectName)connection.getAttribute(service, "DomainRuntime");

System.out.println(connection.getAttribute(domainNameBean, "Name"));

System.out.println(connection.getAttribute(service, "ServerName"));

Unknown said...

Can the authentication also be done programitically ??

Thanks,
Rohit.