Java >> Java tutorial >  >> Java

Hent filressource i en Jersey 3

Jeg kører en webapplikation ved hjælp af Jersey. I min controller forsøger jeg at få en fil i src/main/resources mappe.

Min mappestruktur er:

Mine gradueringsafhængigheder er:

dependencies {
    implementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: '3.0.2'
    implementation group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: '3.0.2'
    implementation group: 'org.glassfish.jersey.media', name: 'jersey-media-moxy', version: '3.0.2'
}

Min kode er:

@GET
@Path(value = "/log/details/{fileId}")
@Produces(MediaType.APPLICATION_JSON)
public List<IngestionLogs> getIngestionLogDetails(@PathParam("fileId") String fileId) {
    List<IngestionLogs> logs = new ArrayList<>();

    try {
        InputStream stream; // how do I get this?
        List<IngestionLogs> errors = TsvFileValidators.parseObject(stream);
        logs.addAll(errors);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    
    return logs;
}

Hvordan får jeg en InputStream for denne fil?

Svar

Du kan få det af servletContext.getResourceAsStream

 InputStream is = servletContext.getResourceAsStream("/WEB-INF/test_model.js");

Tilføj ServletContext ved hjælp af @Context

@Context private ServletContext servletContext;

Hvis du mangler, importer jakarta.servlet.ServletContext føj til afhængighed jakarta.servlet-api


Java tag