РЕДАКТИРОВАТЬ: проблема была двоякой: первый словарь должен быть статическим, а также я использовал .contains (), где я должен был использовать .containsKey ()
Я пытаюсь настроить простой клиент и сервер Java, это то, что у меня есть, и я не могу найти ничего плохого в том, как я это сделал, но всякий раз, когда я запускаю код, я получаю результат:
Result = Added
Result = This word is not in the dictionary, please use the add function.
Это говорит мне, что сервер не сохраняет изменения, внесенные на карту, когда я добавляю слово, есть ли что-то действительно простое, что мне здесь не хватает?
Если спросят, я могу добавить дополнительную информацию.
Это мой клиентский код:
public class Client {
@WebServiceRef(wsdlLocation =
"http://localhost:8080/P1Server/ServerService?wsdl")
public static void main(String[] args) {
try {
package1.ServerService service = new package1.ServerService();
package1.Server port = service.getServerPort();
String result = port.addWord("Test", "This is a test.");
System.out.println("Result = " + result);
result = port.getDefiniton("Test");
System.out.println("Result = " + result);
}catch(Exception ex)
{
System.out.println("Gone Wrong");
}
Это мой соответствующий серверный код:
@WebService
public class Server {
private **static**ConcurrentHashMap<String,String> dictionary;
public Server() {
this.dictionary = new ConcurrentHashMap<>();
}
@WebMethod
public String addWord(String word, String definition){
if(dictionary.contains(word.toLowerCase())){
return "This word is already in the dictionary, "
+ "please use the update function.";
}else{
dictionary.put(word.toLowerCase(), definition);
return "Added";
}
}
@WebMethod
public String getDefiniton(String word){
if(dictionary.contains(word.toLowerCase())){
return dictionary.get(word);
}else{
return "This word is not in the dictionary, "
+ "please use the add function.";
}
}