Моя программа реализует метод X веб-службы REST, который вызывает другой метод Y в другом классе.Последний изменяет строку в текстовом файле.
Я проверил метод Y без использования метода REST X, и все прошло хорошо, и файл был изменен.Но когда я вызываю метод PUT X, файл не изменяется.
Метод Java веб-службы выглядит следующим образом:
public String reduceEnergyConsumption(int id, String action) {
String ch;
int nb;
if (action=="reduce")
AQSensor.setState(id,"Off");
else
AQSensor.setState(id,"On");
return action;
}
AQSensor:
static AirQualitySensorManager AQSensor= new AirQualitySensorManagerImp();
Метод setSate (id, state) выглядит следующим образом:
public void setState(int id, String state) {
Vector<String> VInter= new Vector<String>();
try {
InputStream ips = new FileInputStream("stateAQS.txt");
InputStreamReader ipsr = new InputStreamReader(ips);
BufferedReader br = new BufferedReader(ipsr);
String ligne;
int i=0;
while ((ligne = br.readLine()) != null)
{
i++;
VInter.add(ligne);
}
VInter.setElementAt(state, id);
//****move the vector in the file
OutputStream ops = new FileOutputStream("stateAQS.txt");
OutputStreamWriter opsw = new OutputStreamWriter(ops);
BufferedWriter bw = new BufferedWriter(opsw);
for(int e=0;e<VInter.size();e++){
bw.append(VInter.elementAt(e));
bw.newLine();
}
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
Код вызова в клиенте выглядит следующим образом:
Scanner sc = new Scanner(System.in);
System.out.println("enter the action: ");
String action = sc.nextLine();
System.out.println("enter the index: ");
String pr= sc.nextLine();
Entity<String> userEntity = Entity.entity(action, MediaType.TEXT_PLAIN);
Response response = target.path("aqsensor").path("reduceEnergy/"+pr+"/"+action).request().put(userEntity);
System.out.println("response is: "+response.getStatus());
Теперь, когда я запускаю это, онпоказывает мне следующее:
enter the action:
rise
enter the index:
5
response is: 200
Итак, 200 Ok.Но строка файла не изменилась.В чем проблема?
Заранее спасибо.