Restrict not loggedIn not working in WebService
cash1981 Nov 12, 2008 10:04 AMHello,
I have looked on how the Seambay example works like, and they have a method login and logout, and another with @Restrict.
However, they are using JavaScript to use the webservice, whilst I have the more common Axis way of doing it.
However, when I use my stub to call the login, I can see in the server that it logs in correctly, and then when I call my restricted method, I get an exception that it is not logged in.
This is my webservice:
Name("relationService")
@Stateless
@WebService(name = "RelationService", serviceName = "RelationService")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class RelationService implements RelationServiceLocal {
@WebMethod
public boolean login(@WebParam(name = "username")
String username, @WebParam(name = "password")
String password) {
Identity.instance().setUsername(username);
Identity.instance().setPassword(password);
Identity.instance().login();
return Identity.instance().isLoggedIn();
}
@WebMethod
public boolean logout() {
Identity.instance().logout();
return !Identity.instance().isLoggedIn();
}
@WebMethod
@Restrict("#{identity.loggedIn}")
public List<RelationCanonical> getRelationsFromPerson(@WebParam(name = "foedselsnummer") {
.....
}And this is my @Test class using the stub. The problem may be that I am not familiar in using webservice.
RelationServiceStub stub = new RelationServiceStub();
assert stub != null;
// We need to first log in, then perform action, then log out
RelationServiceStub.Login login = new RelationServiceStub.Login();
login.setUsername("she");
login.setPassword("shepwd");
RelationServiceStub.LoginE loginImpl = new RelationServiceStub.LoginE();
loginImpl.setLogin(login);
RelationServiceStub.LoginResponseE loginRes = stub.login(loginImpl);
// stub.startlogin(loginImpl, callback)
assert loginRes != null;
RelationServiceStub.LoginResponse rslr = loginRes.getLoginResponse();
boolean isLoggedIn = rslr.get_return();
assert isLoggedIn == true;
// stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED,
// Boolean.FALSE);
RelationServiceStub.GetRelationsFromPerson getRFP = new RelationServiceStub.GetRelationsFromPerson();
getRFP.setFoedselsnummer("16060897127");
RelationServiceStub.GetRelationsFromPersonE rfpImpl = new RelationServiceStub.GetRelationsFromPersonE();
rfpImpl.setGetRelationsFromPerson(getRFP);
RelationServiceStub.GetRelationsFromPersonResponseE response = stub.getRelationsFromPerson(rfpImpl);The console shows that I do infact log in, but the last line throws notLoggedIn Exception.