0

I have this uni project going on, and I'm stuck on this error and can't find the solution. First there's the JSP file that loads a list

<%@page import="Controllers.RestClient"%>
<%@page import="java.util.List"%>
<%@page import="Model.Stationss"%>
<%@page import="javax.xml.bind.JAXBException"%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
            <label for="Origin">Embark Station:</label>
            <select name ="StartStation" id="stations">
                <%
                    List<Stationss> listS = RestClient.getStations();
                    for (int i = 0; i < listS.size(); i++) {
                        out.print("<option value = " + i + ">" + listS.get(i).getName() + "</option>");
                    }
                %>
            </select><br>
    </body>
</html>

There's also the ReST client access

package Controllers;

import java.util.List;
import Model.Stationss;
import java.util.ArrayList;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.xml.bind.JAXBException;

public class RestClient {

    public static List<Stationss> getStations() {
        System.out.print("test");
        String link = "http://localhost:8080";
        String path = "/Service/webresources/pkg.service.stations";
        Client client = ClientBuilder.newBuilder().build();
        WebTarget target = client.target(link).path(path);
        Invocation.Builder invocation = target.request(MediaType.APPLICATION_XML);
        System.out.print(link);
        System.out.print(path);
        Response response = invocation.get(Response.class);
        System.out.print(response);
        List<Stationss> list = response.readEntity(new GenericType<List<Stationss>>() {
        });
        System.out.print(list);
        return list;

    }
};

and after I have the model

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package Model;

import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Stationss {

    private int id;
    private String name;
    private int zone;
    Gate gates = new Gate(zone);

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getZone() {
        return zone;
    }

    public void setZone(int zone) {
        this.zone = zone;
    }

    public Gate getGates() {
        return gates;
    }

    public void setGates(Gate gates) {
        this.gates = gates;
    }

    public Stationss() {
    }

    public Stationss(int id, String name, int zone) {
        this.id = id;
        this.name = name;
        this.zone = zone;
    }

    @Transient
    public CheckTicket enter(String xml) {
        return gates.enter(xml);
    }

    @Transient
    public boolean exit(String xml) {
        return gates.exit(xml);
    }
}

and at last, the huge error screen

HTTP Status 500 – Internal Server Error
Type Exception Report

Message An exception occurred processing [/newjsp.jsp] at line [23]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: An exception occurred processing [/newjsp.jsp] at line [23]

20:             <label for="Origin">Embark Station:</label>
21:             <select name ="StartStation" id="stations">
22:                 <%
23:                     List<Stationss> listS = RestClient.getStations();
24:                     for (int i = 0; i < listS.size(); i++) {
25:                         out.print("<option value = " + i + ">" + listS.get(i).getName() + "</option>");
26:                     }


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:610)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:499)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error
    org.glassfish.jersey.jaxb.internal.AbstractCollectionJaxbProvider.readFrom(AbstractCollectionJaxbProvider.java:359)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:257)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:236)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:156)
    org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1091)
    org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
    org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:834)
    org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:363)
    org.glassfish.jersey.client.InboundJaxrsResponse$2.call(InboundJaxrsResponse.java:126)
    org.glassfish.jersey.internal.Errors.process(Errors.java:316)
    org.glassfish.jersey.internal.Errors.process(Errors.java:298)
    org.glassfish.jersey.internal.Errors.process(Errors.java:229)
    org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:389)
    org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:264)
    org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:123)
    Controllers.RestClient.getStations(RestClient.java:36)
    org.apache.jsp.newjsp_jsp._jspService(newjsp_jsp.java:143)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
    javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:269)
    javax.xml.bind.ContextFinder.find(ContextFinder.java:412)
    javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
    javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
    org.glassfish.jersey.jaxb.internal.AbstractJaxbProvider.getStoredJaxbContext(AbstractJaxbProvider.java:288)
    org.glassfish.jersey.jaxb.internal.AbstractJaxbProvider.getJAXBContext(AbstractJaxbProvider.java:273)
    org.glassfish.jersey.jaxb.internal.AbstractJaxbProvider.getUnmarshaller(AbstractJaxbProvider.java:189)
    org.glassfish.jersey.jaxb.internal.AbstractJaxbProvider.getUnmarshaller(AbstractJaxbProvider.java:164)
    org.glassfish.jersey.jaxb.internal.AbstractCollectionJaxbProvider.readFrom(AbstractCollectionJaxbProvider.java:289)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:257)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:236)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:156)
    org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1091)
    org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
    org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:834)
    org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:363)
    org.glassfish.jersey.client.InboundJaxrsResponse$2.call(InboundJaxrsResponse.java:126)
    org.glassfish.jersey.internal.Errors.process(Errors.java:316)
    org.glassfish.jersey.internal.Errors.process(Errors.java:298)
    org.glassfish.jersey.internal.Errors.process(Errors.java:229)
    org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:389)
    org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:264)
    org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:123)
    Controllers.RestClient.getStations(RestClient.java:36)
    org.apache.jsp.newjsp_jsp._jspService(newjsp_jsp.java:143)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1444)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1252)
    javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
    javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
    javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:267)
    javax.xml.bind.ContextFinder.find(ContextFinder.java:412)
    javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
    javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
    org.glassfish.jersey.jaxb.internal.AbstractJaxbProvider.getStoredJaxbContext(AbstractJaxbProvider.java:288)
    org.glassfish.jersey.jaxb.internal.AbstractJaxbProvider.getJAXBContext(AbstractJaxbProvider.java:273)
    org.glassfish.jersey.jaxb.internal.AbstractJaxbProvider.getUnmarshaller(AbstractJaxbProvider.java:189)
    org.glassfish.jersey.jaxb.internal.AbstractJaxbProvider.getUnmarshaller(AbstractJaxbProvider.java:164)
    org.glassfish.jersey.jaxb.internal.AbstractCollectionJaxbProvider.readFrom(AbstractCollectionJaxbProvider.java:289)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:257)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:236)
    org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:156)
    org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1091)
    org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
    org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:834)
    org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:363)
    org.glassfish.jersey.client.InboundJaxrsResponse$2.call(InboundJaxrsResponse.java:126)
    org.glassfish.jersey.internal.Errors.process(Errors.java:316)
    org.glassfish.jersey.internal.Errors.process(Errors.java:298)
    org.glassfish.jersey.internal.Errors.process(Errors.java:229)
    org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:389)
    org.glassfish.jersey.client.InboundJaxrsResponse.runInScopeIfPossible(InboundJaxrsResponse.java:264)
    org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:123)
    Controllers.RestClient.getStations(RestClient.java:36)
    org.apache.jsp.newjsp_jsp._jspService(newjsp_jsp.java:143)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.

Apache Tomcat/10.0.16

It's my first time learning java and I'm completely at loss on what I'm doing wrong. I know the link the xml list is working fine.

1 Answers1

0

You have missing dependencies on your classpath

See the stack trace

javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.

This answer might be helpful

Borislav Stoilov
  • 3,247
  • 2
  • 21
  • 46