有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有系统变量的java WSO2 JMS地址端点uri

我尝试创建wso2 jms端点,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<endpoint name="canary-v1-jms-internal-topic-endpoint" xmlns="http://ws.apache.org/ns/synapse">
    <address uri="jms:/canary-internal-topic?transport.jms.ConnectionFactoryJNDIName=TopicConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=topic">
        <suspendOnFailure>
            <initialDuration>-1</initialDuration>
            <progressionFactor>1</progressionFactor>
        </suspendOnFailure>
        <markForSuspension>
            <retriesBeforeSuspension>0</retriesBeforeSuspension>
        </markForSuspension>
    </address>
</endpoint>

但在这里,我需要通过从系统变量中获取值来更改uri。所以我决定更换tcp://localhost:61616使用$SYSTEM:TCP。代码是

<address uri="jms:/canary-internal-topic?transport.jms.ConnectionFactoryJNDIName=TopicConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=$SYSTEM:TCP&amp;transport.jms.DestinationType=topic">

但它不起作用。谁能给我一个解决办法吗


共 (2) 个答案

  1. # 1 楼答案

    您可以使用配置文件[1]将参数作为环境变量注入。 由于您的需求是将参数作为环境变量注入,因此首先需要导出环境变量,如下所示

    export backendEP=http://localhost:8280/services/Version
    

    并定义端点,如下所示

    <endpoint name="backendEP">
             <address uri="$SYSTEM:backendEP"/>
    </endpoint>
    

    代理服务示例:

    <?xml version="1.0" encoding="UTF-8"?><proxy xmlns="http://ws.apache.org/ns/synapse" name="InjectProxy" startOnLoad="true" statistics="disable" trace="disable" transports="http,https">
    <target>
        <inSequence>
            <call>
        <endpoint name="backendEP">
            <address uri="$SYSTEM:backendEP"/>
        </endpoint>
            </call>
            <respond/>
        </inSequence>
    </target>
    <description/>
    
  2. # 2 楼答案

    您可以使用REST_URL_POSTFIX将所需的部分附加到url的末尾