Search code examples
javarestwildfly-8

REST service always returns OK, Why?


Environment: WildFly 8.1.

I deploy 2 applications on one server. One is connecting with other and trying to run POST method on rest service.

In service project I added:

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class RsActivator extends Application {
}

As far as I understand the user's guide for wildfly and jax-rs, this should be enough to run service listed below:

import javax.annotation.security.PermitAll;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import pl.patom.en.rest.model.LoginData;
import pl.patom.en.security.model.User;
import pl.patom.en.services.UserService;

@Path("services")
public class RestService {

@Inject
private UserService userService;

@PermitAll
@POST
@Consumes(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@Path("/login")
public Response login(LoginData ld) {
    User checkedUser = userService.findByLogin(ld.getUsername());
    if (checkedUser == null || !checkedUser.getPassword().equals(ld.getPassword())) {
        return Response.serverError().build();
    }
    return Response.ok().build();
}
}

In project where I call service I have this method:

public String login() {
    try {
        HttpClient client = HttpClientBuilder.create().build();
        HttpPost postRequest = new HttpPost("http://localhost:8080/en/rest/services/login/");
        LoginData ld = new LoginData(username, password);
        Gson gson = new Gson();
        String json = gson.toJson(ld);
        StringEntity input = new StringEntity(json);
        input.setContentType("application/json");
        postRequest.setEntity(input);
        postRequest.setHeader("Authorization", "Basic cm9vdDpyb290");
        HttpResponse response = client.execute(postRequest);
        if (response.getStatusLine().getStatusCode() == 200) {
            loggedIn = true;
            return "/secured/index.xhtml?faces-redirect=true";
        } else {
            loggedIn = false;
        }
    } catch (Exception e) {
        loggedIn = false;
    }
    return null;
}

Why do I always get 200 OK response? It doesn't matter if I use @GET or @POST annotation = always OK. Secondly, ther is no debugger activity in method (application never stops on any breakpoint within this method): public Response login(LoginData ld) (It works when I use RESTClient in Firefox).

Oo, and there is another curious thing... In return with this 200 OK status I always get jsf login form.


Solution

  • Problem solved by adding: /rest/* to non-secured section of web-resource-collection.