如何使用java连接oracle coherence远程集群

时间:2016-12-04 07:10:19

标签: oracle-coherence

在ip地址xxx.xxx.xxx.xxx(不是localhost)上运行一个连贯集群(名称为mycache的缓存),我正在尝试连接它并使用java从缓存中读取。 这是我的读者课程:

import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedCache;

public class Reader {
    public static void main(String[] args) {
        NamedCache cache = CacheFactory.getCache("mycache");
        System.out.println("Value in cache is: " + cache.get("key1"));
    }
}

我正在使用Intellije IDEA,在读者的vm选项中我添加了这一行:

-Dtangosol.coherence.cacheconfig=mycache.xml

这是mycache.xml文件:

<?xml version='1.0'?>
<coherence  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
            xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-config
            coherence-operational-config.xsd"
            xml-override="{tangosol.coherence.override /tangosol-coherence-override-{mode}.xml}">

    <cluster-config>
        <member-identity>
            <cluster-name>RemoteCluster</cluster-name>
        </member-identity>

        <unicast-listener>
            <well-known-addresses>
                <socket-address id="1">
                    <address>192.168.104.160</address>
                    <port>8088</port>
                </socket-address>
            </well-known-addresses>
        </unicast-listener>
    </cluster-config>

</coherence>

当我运行reader.main()时,我得到了这个异常:

Problem   : An ElementProcessor could not be located for the element [coherence]
Advice    : The specified element is unknown to the NamespaceHandler implementation. Perhaps the xml element is foreign to the Xml Namespace?

    at com.tangosol.util.Base.ensureRuntimeException(Base.java:286)
    at com.tangosol.net.ScopedCacheFactoryBuilder.instantiateFactory(ScopedCacheFactoryBuilder.java:433)
    at com.tangosol.net.ScopedCacheFactoryBuilder.buildFactory(ScopedCacheFactoryBuilder.java:385)
    at com.tangosol.net.ScopedCacheFactoryBuilder.getFactory(ScopedCacheFactoryBuilder.java:267)
    at com.tangosol.net.ScopedCacheFactoryBuilder.getConfigurableCacheFactory(ScopedCacheFactoryBuilder.java:119)
    at com.tangosol.net.CacheFactory.getConfigurableCacheFactory(CacheFactory.java:127)
    at com.tangosol.net.CacheFactory.getCache(CacheFactory.java:205)
    at com.tangosol.net.CacheFactory.getCache(CacheFactory.java:182)
    at Reader.main(Reader.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: com.tangosol.config.ConfigurationException: Configuration Exception
-----------------------
Problem   : An ElementProcessor could not be located for the element [coherence]
Advice    : The specified element is unknown to the NamespaceHandler implementation. Perhaps the xml element is foreign to the Xml Namespace?

我真的被它困住了。我搜索了很多内容并没有找到任何支持它的东西。

先谢谢。

1 个答案:

答案 0 :(得分:0)

它看起来像mycache.xml中的问题。当您想要连接客户端时想要设置集群成员时使用的那些元素。

假设远程集群上存在“mycache”架构,请尝试使用以下命令更改mycache.xml:

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config xmlns="http://schemas.tangosol.com/cache">
    <caching-scheme-mapping>
        <cache-mapping>
            <cache-name>mycache</cache-name>
            <scheme-name>extend-dist</scheme-name>
        </cache-mapping>       
    </caching-scheme-mapping>
    <caching-schemes>
        <remote-cache-scheme>
            <scheme-name>extend-dist</scheme-name>
            <service-name>ExtendTcpCacheService</service-name>
            <initiator-config>
                <tcp-initiator>
                    <remote-addresses>
                        <socket-address>
                            <address>192.168.104.160</address>
                            <port>8088</port>
                        </socket-address>
                    </remote-addresses>
                </tcp-initiator>
                <outgoing-message-handler>
                    <request-timeout>20s</request-timeout>
                </outgoing-message-handler>
            </initiator-config>
        </remote-cache-scheme>
    </caching-schemes>
</cache-config>

注意:如果远程群集对mycache使用POF序列化,则必须添加POF映射和配置 -Dtangosol.pof.enabled = true