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
}