2013-11-01 3 views
1

Я разработал простую недоверенную систему в Java RMI, теперь я должен изменить ее на веб-службы. У меня есть проблема с моей структуры данных:Обновление Hashtable в WebService java

Hashtable<String, ArrayList<Records>> recordsTable;

не сериализации/обновить свои объекты правильно.

Я не знаю, как изменить структуру данных, чтобы преодолеть такую ​​проблему?

[Изменено]

Для простоты, скажем, у меня есть эта структура данных:

Hashtable<String, Integer> store = new Hashtable<String, Integer>();

У меня есть покупка() и дисплей() службы, которая публикуется. Первоначально у меня есть 100 яблок в магазине, поэтому, когда я покупаю() 10 яблок, он напечатает результат из 90 яблок. BUT Когда я вызываю дисплей позже, он будет печатать 100 яблок.

Итак, есть проблема с сериализацией. Я понятия не имею, как это исправить.

public class StoreServer{ 

Hashtable<String, Integer> store= new Hashtable<String, Integer>(); 

public StoreServer() 
{ 
    store.put("Coffee", 20); 
    store.put("Apple", 100); 
    store.put("Banana", 50); 
    display(); 
} 

public String buy(String item, int quantity) 
{ 
    if(store.containsKey(item)) 
    { 
     int oldQuantity = store.get(item); 
     int newQuantity; 
     if(oldQuantity-quantity>=0) 
     { 
      newQuantity= oldQuantity -quantity; 
      store.put(item, newQuantity); 
      return quantity+" "+item+" were successfully purchased!\n" + 

        ("1. Coffee: "+store.get("Coffee")+"\n")+ 
        ("2. Apples: "+store.get("Apple")+"\n")+ 
        ("3. Bananas: "+store.get("Banana")+"\n")+ 
        ("---------------------------\n"); 
     } 
     else 
     { 
      return "error with your purchase"; 
     } 
    } 
    else 
    { 
     return "error with your purchase"; 
    } 
} 


public void display() 
{ 
    System.out.println("------Store Inventory-----"); 
    System.out.println("1. Coffee: "+store.get("Coffee")); 
    System.out.println("2. Apples: "+store.get("Apple")); 
    System.out.println("3. Bananas: "+store.get("Banana")); 
    System.out.println("---------------------------"); 
}} 
+1

Show us teh codez –

+0

Пожалуйста, разместите код, который воспроизводит проблему. Выполняет ли 'Records' интерфейс' java.io.Serializable'? – Bizmarck

+0

@SeanPatrickFloyd Я добавил простой код моей проблемы – newbieLinuxCpp

ответ

0

Веб-службы используют протокол без учета состояния. Вам нужно установить статичное хранилище HashMap.
Кроме того, убедитесь, что это ConcurrentHashMap, поскольку к нему могут одновременно обращаться несколько потоков.

+0

Я пробовал статическое ключевое слово и все тот же, не обновляю правильно. – newbieLinuxCpp

+0

введите остальную часть кода (то есть соответствующий код сервера) – Bizmarck