Добрый день.
Пытаюсь написать сервис про созданию записи в сущности Employee.
Вот bean сервиса:
@Service(EmployeeService.NAME)
public class EmployeeServiceBean implements EmployeeService {
@Inject
private DataManager dataManager;
@Inject
private Metadata metadata;
@Override
@ResponseStatus(HttpStatus.OK)
public @ResponseBody ResponseInfo createNewEmployee(EmployeeInfo employeeInfo) {
ResponseInfo responseInfo = new ResponseInfo();
try {
System.out.println("Empl: " + employeeInfo.toString());
// Создаем новую запись в сущности
Employee employee = metadata.create(Employee.class);
employee.setEmplfirstname(employeeInfo.getEmployeefirstName());
employee.setEmplfulldeppath(employeeInfo.getEmployeeFullDepartmantPath());
employee.setEmplmiddlename(employeeInfo.getEmployeeMiddleName());
employee.setEmpllastname(employeeInfo.getEmployeeLastName());
employee.setEmplphone(employeeInfo.getEmployeePhone());
employee.setEmplshortdeppath(employeeInfo.getEmployeeShortDepartmantPath());
employee.setEmplpost(employeeInfo.getEmployeePost());
employee.setEmplsex(employeeInfo.getEmployeeSex());
dataManager.commit(employee);
responseInfo.setResponsestatus("OK");
}catch (Exception e) {
e.printStackTrace();
responseInfo.setResponsestatus("Error");
responseInfo.setResponseerrorText(e.getLocalizedMessage());
try {
throw new MyException(e.getLocalizedMessage());
} catch (MyException e1) {
e1.printStackTrace();
}
}
finally {
return responseInfo;
}
}
}
На вход подаю класс EmployeeInfo :
public class EmployeeInfo implements Serializable {
private String employeeLastName;
private String employeefirstName;
private String employeeMiddleName;
private String employeePost;
private String employeeShortDepartmantPath;
private String employeeFullDepartmantPath;
private String employeeSex;
private String employeePhone;
public EmployeeInfo(String employeeLastName, String employeefirstName,
String employeeMiddleName, String employeePost,
String employeeShortDepartmantPath, String employeeFullDepartmantPath,
String employeeSex, String employeePhone) {
this.employeeLastName = employeeLastName;
this.employeefirstName = employeefirstName;
this.employeeMiddleName = employeeMiddleName;
this.employeePost = employeePost;
this.employeeShortDepartmantPath = employeeShortDepartmantPath;
this.employeeFullDepartmantPath = employeeFullDepartmantPath;
this.employeeSex = employeeSex;
this.employeePhone = employeePhone;
}
public String getEmployeePhone() {
return employeePhone;
}
public void setEmployeePhone(String employeePhone) {
this.employeePhone = employeePhone;
}
public String getEmployeeLastName() {
return employeeLastName;
}
public void setEmployeeLastName(String employeeLastName) {
this.employeeLastName = employeeLastName;
}
public String getEmployeefirstName() {
return employeefirstName;
}
public void setEmployeefirstName(String employeefirstName) {
this.employeefirstName = employeefirstName;
}
public String getEmployeeMiddleName() {
return employeeMiddleName;
}
public void setEmployeeMiddleName(String employeeMiddleName) {
this.employeeMiddleName = employeeMiddleName;
}
public String getEmployeePost() {
return employeePost;
}
public void setEmployeePost(String employeePost) {
this.employeePost = employeePost;
}
public String getEmployeeShortDepartmantPath() {
return employeeShortDepartmantPath;
}
public void setEmployeeShortDepartmantPath(String employeeShortDepartmantPath) {
this.employeeShortDepartmantPath = employeeShortDepartmantPath;
}
public String getEmployeeFullDepartmantPath() {
return employeeFullDepartmantPath;
}
public void setEmployeeFullDepartmantPath(String employeeFullDepartmantPath) {
this.employeeFullDepartmantPath = employeeFullDepartmantPath;
}
public String getEmployeeSex() {
return employeeSex;
}
public void setEmployeeSex(String employeeSex) {
this.employeeSex = employeeSex;
}
@Override
public String toString() {
return "EmployeeInfo{" +
"employeeLastName='" + employeeLastName + '\'' +
", employeefirstName='" + employeefirstName + '\'' +
", employeeMiddleName='" + employeeMiddleName + '\'' +
", employeePost='" + employeePost + '\'' +
", employeeShortDepartmantPath='" + employeeShortDepartmantPath + '\'' +
", employeeFullDepartmantPath='" + employeeFullDepartmantPath + '\'' +
", employeeSex='" + employeeSex + '\'' +
", employeePhone='" + employeePhone + '\'' +
'}';
}
}
Вызываю метод сервиса следующим образом:
private void runEmployeeService (String authToken) throws IOException {
URL url = new URL (Constants.serviceURLString);
servConnection = (HttpURLConnection) url.openConnection();
servConnection.setRequestProperty("Authorization", "Bearer "+authToken);
servConnection.setRequestMethod("POST");
servConnection.setRequestProperty("Accept-Charset", "UTF-8");
servConnection.setConnectTimeout(9000);
servConnection.setDoOutput(true);
// Записываем данные в массив
EmployeeInfo employeeInfo = new EmployeeInfo("Петров",
"Петр", "Петрович",
"Программист", "ОРПО",
"ДИТ/ОРПО", "МУЖ",
"12345");
Gson gson = new Gson();
String jsonInString = gson.toJson(employeeInfo);
jsonInString = "{\n \"employeeInfo\":"+jsonInString+"}";
System.out.println("EmployeeInfo :"+ jsonInString);
OutputStream os = servConnection.getOutputStream();
os.write(jsonInString.getBytes());
os.flush();
os.close();
servConnection.connect();
int respCode = servConnection.getResponseCode();
if (respCode == 200 || respCode== 204) {
System.out.println("Сервис по созданию сотрудников отработал");
String responseJson = "";
String inputLine;
BufferedReader in = new BufferedReader(new InputStreamReader((servConnection.
getInputStream()),"UTF-8"));
while ((inputLine = in.readLine()) != null)
responseJson += inputLine;
in.close();
System.out.println("Ответ сервиса: \n"+ responseJson);
} else {
System.out.println("Сервис по созданию сотрудников вернул код: "+
servConnection.getResponseCode());
String responseJson = "";
String inputLine;
BufferedReader in = new BufferedReader(new InputStreamReader((servConnection.
getInputStream()),"UTF-8"));
while ((inputLine = in.readLine()) != null)
responseJson += inputLine;
in.close();
System.out.println("Ответ сервиса: \n"+ responseJson);
}
}
При этом сервис возвращает:
Сервис по созданию сотрудников вернул код: 500
java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8080/bankref/rest/v2/services/bankref_EmployeeService/createNewEmployee
В логах Tomkat сообщение :
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 166 path $
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1568) ~[gson-2.8.2.jar:na]
at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1409) ~[gson-2.8.2.jar:na]
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:542) ~[gson-2.8.2.jar:na]
at com.google.gson.stream.JsonReader.peek(JsonReader.java:425) ~[gson-2.8.2.jar:na]
at com.google.gson.JsonParser.parse(JsonParser.java:60) ~[gson-2.8.2.jar:na]
… 85 common frames omitted
Подскажите пожалуйста в чем может быть проблема.