1

我需要获取 OSB 服务器主机名并将其用作限定符以从 DVM 获取值,因为我们使用 ora:getProcessURL() 获取 BPEL 实例 URL。

例子 :

如果我能够将服务器 url 获取为:http ://dev-osb-clientname.com

我将从那里提取“dev”并将“dev”作为限定符发送到 DVM。

4

3 回答 3

1

我想到了两种明显的方法:

  1. 在部署时自定义变量
  2. 呼唤Java
于 2017-08-02T12:46:28.947 回答
1

我们也遇到了这个问题,并使用 java 代码和 java callout 进行排序。

您可以考虑以下虚拟片段并采取措施:

    package OsbServerName;

import java.io.Serializable;
import java.security.PrivilegedAction;
import java.util.Iterator;
import java.util.Set;

import javax.naming.Context;
import javax.security.auth.Subject;

import weblogic.jndi.Environment;
import weblogic.management.MBeanHome;
import weblogic.management.runtime.ServerRuntimeMBean;

/*
* Get OSB Server or Host Name

 */
public final class OsbServerName implements Serializable {

                private static final long serialVersionUID = 4055048819845029320L;

                private final static String serverName = findServerNameURL();


                public static final void main(String[] arg) {

                }

                /**
                * Return the server name
                * 
                 * @return
                */
                public static final String getServerNameURL() {
                                return serverName;
                }

                /**
                * find OSB/WLS server name
                * 
                 * @return
                */
                private final static String findServerNameURL() {
                                try {
                                                return findServerRuntimeMBean().getDefaultURL();
                                } catch (Exception e) {
                                                e.printStackTrace();
                                }
                                return "";
                }

                /**
                * lookup {@link ServerRuntimeMBean}
                * 
                 * @return
                * @throws Exception
                */
                @SuppressWarnings("deprecation")
                private static final ServerRuntimeMBean findServerRuntimeMBean() throws Exception {

                                // get username and password from service account
                                Subject subject = weblogic.security.Security.getCurrentSubject();

                                ServerRuntimeMBean serverRuntimeMBean = (ServerRuntimeMBean) weblogic.security.Security.runAs(subject, new PrivilegedAction<ServerRuntimeMBean>() {

                                                @Override
                                                public ServerRuntimeMBean run() {
                                                                try {
                                                                                weblogic.jndi.Environment env = new Environment();
                                                                                Context ctx = env.getInitialContext();
                                                                                // Get the Local MBeanHome
                                                                                MBeanHome home = (MBeanHome) ctx.lookup("weblogic.management.home.localhome");

                                                                                Set<?> s = home.getMBeansByType("ServerRuntime");
                                                                                Iterator<?> i = s.iterator();
                                                                                return (ServerRuntimeMBean) i.next();

                                                                } catch (Exception e) {
                                                                                e.printStackTrace();
                                                                }

                                                                return null;
                                                }
                                });

                                return serverRuntimeMBean;
                }
}
于 2017-08-16T12:11:28.027 回答
0

在管道中的分配活动中,您可以获取变量:

$入站/ctx:运输/ctx:uri

这肯定会告诉您调用 URL?

于 2017-08-08T14:21:13.667 回答