Spring-Boot-Jersey: erlauben Jersey zu dienen, die statische Inhalte
Verwendet die Anwendung JDK 8, Spring Boot & Spring-Boot-Trikot-starter und verpackt wird, wie ein KRIEG (obwohl es lokal laufen über Spring-Boot-Maven-plugin).
Was ich tun möchte, ist zu Holen Sie sich die Unterlagen, die ich generieren Sie on the fly (beim erstellen) als willkommene Seite.
Ich habe versucht, mehrere Ansätze:
- Vermietung Jersey dienen der statischen Inhalten durch konfigurieren in
application.properties
der richtige init-parameter wie beschrieben hier - Einführung einer
metadata-complete=false
web.xml
um die Liste der generierten HTML-Dokument als welcome-file.
Nichts davon geklappt.
Ich würde gerne vermeiden, dass zu aktivieren, Spring MVC erstellen oder einen Jersey-Ressource nur für die Zustellung einer statischen Datei.
Irgendeine Idee?
Hier ist die Jersey-Konfiguration-Klasse (habe ich erfolglos versucht, um einen ServletProperties.FILTER_STATIC_CONTENT_REGEX
es):
@ApplicationPath("/")
@ExposedApplication
@Component
public class ResourceConfiguration extends ResourceConfig {
public ResourceConfiguration() {
packages("xxx.api");
packages("xxx.config");
property(ServerProperties.BV_DISABLE_VALIDATE_ON_EXECUTABLE_OVERRIDE_CHECK, true);
property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
}
}
Und hier ist Spring-Boot-Anwendung der Klasse (ich habe versucht, das hinzufügen einer application.properties
mit spring.jersey.init.jersey.config.servlet.filter.staticContentRegex=/.*html
aber es hat nicht funktioniert, ich bin mir nicht genau sicher, was die Eigenschaft key sollte auch dabei sein):
@SpringBootApplication
@ComponentScan
@Import(DataConfiguration.class)
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- Können Sie bitte die Konfiguration, die Sie verwendet haben?
- Nur fügte der Konfiguration.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen Sie mich ersten Staat, dass der Grund der statischen Inhalte werden nicht zugestellt werden, weil der Standard-servlet-mapping der Jersey-servlet, das ist
/*
und Schweine bis alle Anforderungen. Also die Standard-servlet dient der statischen Inhalten nicht erreicht werden kann. Neben den unten Lösung, die andere Lösung ist, einfach ändern Sie die servlet-mapping. Sie können dies tun, indem entweder die Notierung IhrerResourceConfig
Unterklasse mit@ApplicationPath("/another-mapping")
oder legen Sie dieapplication.properties
Eigenschaftspring.jersey.applicationPath
.In Bezug auf deinen ersten Ansatz, werfen Sie einen Blick auf das Trikot
ServletProperties
. Die Immobilie, die Sie versuchen zu konfigurieren istFILTER_STATIC_CONTENT_REGEX
. Es besagt:Spring Boot standardmäßig konfiguriert die Jersey-servlet-container ein Servlet (wie erwähnt hier):
So setzen Sie einfach die Eigenschaft
spring.jersey.type=filter
in Ihremapplication.properties
, und es sollte funktionieren. Ich habe diese getestet.Und FYI, ob die Konfiguration als Servlet-Filter oder ein Servlet, so weit wie Jersey betroffen ist, die Funktionalität ist die gleiche.
Nebenbei, statt mit der
FILTER_STATIC_CONTENT_REGEX
, wo Sie brauchen, um einige komplexe regex, um alle statischen Dateien, die Sie verwenden können, dieFILTER_FORWARD_ON_404
. Das ist eigentlich das, was ich verwendet, um zu testen. Ich habe gerade es in meinemResourceConfig
/
zu/index.html
, BTW, ich benutze einbetten tomcat.Für alle, die noch nicht diese zu arbeiten, folgte ich der Antwort von @peeskillet, und hatte, um eine weitere Veränderung.
Bisher hatte ich das erstellt die folgende Methode in
Application.java
.Das problem ist, dass diese registrierte das servlet für die
/*
Weg, und dann setup das TrikotResourceConfig
Konfigurationsdatei.Einmal habe ich entfernt, das obige Verfahren aus und legte die
@Configuration
Anmerkung auf meinemResourceConfig
Klasse, ich bemerkte die statische Ressource abgerufen werden konnten, über Spring-Boot.Vollständigkeit halber, das ist ein Ausschnitt von meiner
ResourceConfig
jetzt.In diesem blog-post war sehr hilfreich bei der Bestimmung der Differenz-Ansatz für die
ResourceConfig
.Unten setup für mich gearbeitet
Set
set FILTER_FORWARD_ON_404
Hinweis: Verwenden Sie @ - Konfiguration statt @Komponente