Program java, problem z poprawnym działaniem!

0

Witam,
Napotkałem problem, przy wykonywaniu zadania na zajęcia na uczelni, program napisałem według instrukcji prowadzącego, ale za każdym razem kiedy próbuje sprawdzić jego działanie otrzymuje komunikat "HTTP Status 404 Not Found" i osobiście nie rozumiem dlaczego tak jest.
Jeśli mógłbym was prosić to chciałbym aby ktoś z was spojrzał na mój kod i powiedział mi ewentualnie czy mógłbym coś poprawić by zaczął działać poprawnie, bo zbliża mi się nieubłaganie termin oddania tego zadania.
W załączniku dodałem plik z instrukcją zadania.

A oto mój kod programu :

Plik : RControl.java :

import pl.jrj.mdb.IMdbManager;
import java.util.regex.Pattern;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.ws.rs.Consumes;
import javax.ws.rs.PathParam;
import java.io.Serializable;

/**
 * @author Marcin
 */

@Path(value = "cntrl")
public class RControl implements Serializable {
	private static final long serialVersionUID = 1L;
    @Context
    private HttpServletRequest context;
    private HttpSession session;

    private final String counter = "counter";
    private final String errors = "errors";
    private final String sessionStatus = "sessionStatus";
    private final String sessionId = "sessionId";
    private boolean startSwitch;


    private String userRegistration() throws NamingException {

        IMdbManager mdbManager = null;
        InitialContext ctx = new InitialContext();
        try {
            mdbManager = (IMdbManager) ctx.lookup("java:global/mdb-project/MdbManager!pl.jrj.mdb.IMdbManager");
        }
        catch (NamingException eNE) {
            System.err.println("Wystapil blad w polaczeniu z IMdbManager");
        }
        return mdbManager.sessionId("130291");
    }

    private void openSession() throws NamingException {
        
        session = context.getSession();
        
        if (session.getAttribute(counter) == null) {
            session.setAttribute(counter, new Long(0));
        }
        if (session.getAttribute(errors) == null) {
            session.setAttribute(errors, new Long(0));
        }
        if (session.getAttribute(sessionStatus) == null) {
            session.setAttribute(sessionStatus, startSwitch = false);
        }
        if (session.getAttribute(sessionId) == null) {
            session.setAttribute(sessionId, userRegistration());
        }   
    }

    private Long converter(String num)
    {
        try {
            try {
                return num.toLowerCase().startsWith("0b") ? 
                        Long.parseLong(num.substring(2), 2)
                        : Long.decode(num);
            } catch (NumberFormatException | NullPointerException e) {
                return Long.parseLong(num, 16);
            }
        }
        catch (Exception e)
        {
            return null;
        }

    }

    private boolean getStatus(){
        return (boolean)session.getAttribute(sessionStatus);
    }
    private void setStatus(boolean status){
        session.setAttribute(sessionStatus, status);
    }
    private String getSessionId(){
        return (String)session.getAttribute(sessionId);
    }
    private void addError(){
        session.setAttribute(errors, getNumberOfErrors() + 1);
    }
    private Long getNumberOfErrors(){
        return Long.parseLong(String.valueOf(session.getAttribute(errors)));
    }
    private void addNumberToCounter(Long value){
        session.setAttribute(counter, getCounter() + value);
    }
    private void subNumberToCounter(Long value){
        session.setAttribute(counter, getCounter() - value);
    }
    private Long getCounter(){
        return Long.parseLong(String.valueOf(session.getAttribute(counter)));
    }
    
    @GET
    @Path(value = "start")
    public void start() throws NamingException {
        openSession();
        String sessionID = getSessionId();
        if ( getStatus() == false && sessionID != null){
            setStatus(true);
        }
        else {
          addError();  
        }  
    }
    
    @GET
    @Path(value = "stop")
    public void stop() throws NamingException {
        openSession();
        String sessionID = getSessionId();
        if (getStatus() == true && sessionID != null){
            setStatus(false);
        }
        else{
          addError();  
        }  
    }

    @GET
    @Path(value = "dcr")
    public void decrement() throws NamingException {
        openSession();
        String sessionID = getSessionId();
         if (getStatus() == true && sessionID != null){
            subNumberToCounter((long)1);
        }
        else{
          addError(); 
        }  
    }
    
    @GET
    @Path(value = "icr")
    public void icrement() throws NamingException {
        openSession();
        String sessionID = getSessionId();
         if (getStatus() == true && sessionID != null){
            addNumberToCounter((long)1);
        }
        else{
          addError(); 
        }  
    }
    
    @GET
    @Consumes(MediaType.TEXT_PLAIN)
    @Path(value = "icr/{icrValue}")
    public void valueIcrement(@PathParam("icrValue") String icrValue)
            throws NamingException {
        openSession();
        String sessionID = getSessionId();
        Long parsedNum = converter(icrValue);
        if( getStatus() == true && sessionID != null
                && parsedNum != null){
            addNumberToCounter(parsedNum);             
        }
        else{
           addError(); 
        }  
    }
    
    @GET
    @Consumes(MediaType.TEXT_PLAIN)
    @Path(value = "dcr/{dcrValue}")
    public void valueDecrement(@PathParam("dcrValue") String dcrValue)
            throws NamingException {
        openSession();
        String sessionID = getSessionId();
        Long parsedNum = converter(dcrValue);
        if(getStatus() == true && sessionID != null &&
                parsedNum != null){
            subNumberToCounter(parsedNum);             
        }
        else{
          addError();  
        }  
    }
    
    @GET
    @Path(value = "res")
    @Produces(MediaType.TEXT_PLAIN)
    public Long result() throws NamingException {
        openSession();
        String sessionID = getSessionId();
        Long parsedSessionId = converter(sessionID);
        Long result = getCounter();
        if(result == 0 || parsedSessionId == null){
            return new Long(0);
        }else{
            return parsedSessionId % result;
        }
    }
    
    @GET
    @Path(value = "err")
    @Produces(MediaType.TEXT_PLAIN)
    public Long error() throws NamingException {
        openSession();
        String sessionID = getSessionId();
        Long parsedSessionId = converter(sessionID);
        Long result = getNumberOfErrors();
        if(result == 0 || parsedSessionId == null){
            return new Long(0);
        }else{
            return parsedSessionId % result;
        }
    }
    
    @GET
    @Path(value = "clr")
    public void clear() throws NamingException {
        openSession(); 
        session.setAttribute(counter, 0);
        session.setAttribute(errors, 0);
    }

}

Oraz plik IMdbManager.java :

/**
 * @author Marcin 
 */
package pl.jrj.mdb;
import javax.ejb.Remote;
@Remote
public interface IMdbManager {
public String sessionId(String album); // album – numer albumu studenta
}
1

Podaj kroki jakie robisz. Gdzie masz pliki. Jak kompilujesz co uruchamiasz. Masz pewnie ten serwer glassfish (co nie).
Co 404 ?
Bo jak wpisuje w przeglądarce https://jbzdy.pl/dramat_o_kartoflu też mam 404. Ale strzelam, że to nie jest Twój problem.

0
jarekr000000 napisał(a):

Podaj kroki jakie robisz. Gdzie masz pliki. Jak kompilujesz co uruchamiasz. Masz pewnie ten serwer glassfish (co nie).
Co 404 ?
Bo jak wpisuje w przeglądarce https://jbzdy.pl/dramat_o_kartoflu też mam 404. Ale strzelam, że to nie jest Twój problem.

tak serwer glassfish tak jak w instrukcji jest podane, kompiluje tak : javac –cp <app-server-modules> –Xlint RControl.java IMdbManager.java
hmm wynik wykonania kompilacji jest poprawny, ale przy wykonaniu, serwer pobiera informacje SessionId zwrócone przez metodę sessionId interfejsu IMdbManager
a wtedy Uruchamiane są następujące żądania typu GET: np. cntrl/icr/2 cntrl/start, i wyskakuje wtedy zamiast wyniku jakiegoś konkretnego wyskakuje po prostu coś takiego :
screenshot-20190519153331.png

0

W instrukcji nie jest nic podane o deployowaniu na ten serwer - to nie jest część zadania. Więc w sumie ja kto robisz.
Bo masz jakiegoś wara, eara?

Do tego z pewnością nie kompilujesz tak:
javac –cp <app-server-modules> –Xlint RControl.java IMdbManager.java

Bo by się nie skompilowało. Co to jest app-server-modules?

1 użytkowników online, w tym zalogowanych: 0, gości: 1