2015-10-08 2 views
0

Я пытаюсь создать простую программу кеширования, используя согласованность. Я могу вызвать службу и нажать или поп-значение из кеша через командную строку (cmd). Но когда я пытаюсь сделать то же самое с помощью кода Java, я получаю следующее сообщение об ошибке: нульКэш когерентности Oracle не работает - дает NPE

Exception in thread "main"

java.lang.NullPointerException at com.learn.coherence.main.TestCacheMainOne.main(TestCacheMainOne.java:14)

код является довольно простым и маленьким. линия за исключением является

NamedCache cache = CacheFactory.getCache("VirtualCache");

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

public class TestCacheMainOne { 
    public static void main(String[] args) { 
    NamedCache cache = CacheFactory.getCache("VirtualCache"); 
    System.out.println(cache); 
    String key = "key1"; 
    String value = "value1"; 
    cache.put(key, value); 
    String receivedValue = (String) cache.get(key); 
    System.out.println(receivedValue); 
    } 
} 

Пожалуйста, помогите мне об этом.

+0

Это не может быть строка 14. – Kayaman

+0

Извините, что я испортил номера строк там, пытаясь устранить бесполезные вещи. Линия, выбрасывающая исключение, равна cache.put (ключ, значение) – sarkardebanjan

+0

Можете ли вы опубликовать полную трассировку стека? – vk239

ответ

0

Вы пытаетесь создать клиентское приложение , возможно, вам не хватает файла конфигурации в пути к классу.

ознакомьтесь с этим руководством.

Oracle Coherence Guide Шаг 2: Настройка на стороне клиента

+0

Hi Arkadiy, Жаль, что я не смог понять это, так как я так новичок в кэширующей сцене. Все, что я пытаюсь сделать, это запустить приложение A, которое может загружать некоторые элементы в кеш, к которому можно получить доступ другим приложением B, работающим на одном компьютере, с использованием имени кеша или чего-то подобного. Я не хочу использовать другой сервер для кеша. Мне просто нужно иметь возможность вносить изменения в кеш, чтобы оба приложения A и B могли вносить изменения и отображались в обоих местах. Снова я понимаю, что это может не иметь большого смысла, но если вы можете, не могли бы вы объяснить это? – sarkardebanjan

+0

Привет, код должен работать. Поделитесь консольным окном или любыми журналами, которые у вас есть. –

0

NullPointerException на cache.put (ключ, значение) означает CacheFactory coundn't найти "VirtualCache" кэш. Проверка когерентности кэш-config.xml, убедитесь, что конфигурация содержит что-то вроде:

<caching-scheme-mapping> 
    <cache-mapping> 
     <cache-name>VirtualCache</cache-name> 
     <scheme-name>YourScheme</scheme-name> 
    </cache-mapping> 
</caching-scheme-mapping> 
<caching-schemes> 
    <remote-cache-scheme> 
     <scheme-name>YourScheme</scheme-name> 
     <service-name>ExtendTcpCacheService</service-name> 
     <initiator-config> 
      <tcp-initiator> 
       <remote-addresses> 
        <socket-address> 
         <address>your_coherence_server</address> 
         <port>xxxx</port> 
        </socket-address> 
       </remote-addresses> 
       ... 
      </tcp-initiator> 
      ... 
     </initiator-config> 
     ... 
    </remote-cache-scheme> 
    ... 
</caching-schemes>    

Вы должны также проверить согласованность-заводскую-config.xml, он имеет путь файла журнала когерентности, который содержит соединение с сервером положение дел.

+0

Следующее сопоставление кеша определено в файле конфигурации кеша по умолчанию. При этом мы должны быть в состоянии создать любой кэш: <кэш-отображение> * примера распределенного <схема-имя /> vk239

Смежные вопросы