我正在使用RESTEasy开发Web服务。
我有一个"身份验证" webservice有两种方法:" login"和"退出"。
我有一个有状态会话范围的bean,UserData有两个属性:" loggedIn",boolean," userId",Integer。
我正在我的Authentication类中注入UserData。它适用于" loggedIn"属性,当我打电话"登录"方法,它设置为true,然后在会话结束前保持为真。
但奇怪的是它并没有与" userId"属性。当我打电话给#34;登录"方法,我将userId设置为我的用户ID,但是在" setUserId"之后。调用方法,userId仍为空。
这是Authentication类代码(没有logOut方法,暂时不用):
package com.bini.dev.dilemme.web.api;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import com.bini.dev.dilemme.business.service.UserService;
import com.bini.dev.dilemme.persistence.model.User;
import com.bini.dev.dilemme.web.UserData;
@Path("/auth")
public class AuthenticationApi {
@Inject
private UserData userData;
@Inject
private UserService userService;
@GET
@Path("login")
@Produces("application/json")
public UserData logIn(@QueryParam("mail") String userMail, @QueryParam("password") String userHashedPassword) {
try {
this.logOut();
User user = userService.getUserByMailAddress(userMail.trim());
if (user == null)
throw new Exception("User does not exists");
boolean loggedIn = userService.checkUserPassword(user, userHashedPassword.trim());
if (loggedIn) {
userData.setLoggedIn(true);
userData.setUserId(user.getUserId());
}
return userData;
} catch (Exception e) {
e.printStackTrace();
return userData;
}
}
}
以下是" UserData"的代码class:
package com.bini.dev.dilemme.web;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
@SessionScoped
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.PROTECTED_AND_PUBLIC,
getterVisibility = JsonAutoDetect.Visibility.NONE,
setterVisibility = JsonAutoDetect.Visibility.NONE)
public class UserData implements Serializable {
protected Boolean loggedIn;
protected Integer userId;
public UserData() {
this.loggedIn = false;
this.userId = null;
}
public Boolean isLoggedIn() {
return loggedIn;
}
public void setLoggedIn(Boolean loggedIn) {
this.loggedIn = loggedIn;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
}
无论有没有"有状态"和#34;无状态"注解。没有改变任何事情。
我真的不知道该怎么做。
我认为这可能是一个" setter"语法错误,但我真的不知道在哪里。
编辑:BTW,我在WildFly服务器上使用Weld和RestEASY。 谢谢:))