Je suis en train d'installer angulaire 7 avec un projet java maven basé back-end en un seul fichier de guerre. En ce moment je suis en train de configurer le web.xml
fichier où j'ai actuellement ce problème. Je ne sais pas du tout si mon approche est valide ou « bonne » donc je vais d' abord décrire ce que je suis en train de faire (si vous pensez mieux sur cet aspect s'il vous plaît ne me correct).
J'ai donc quelques JAX-RS
cours que je voudrais servir REST API
. A cet effet , je l' ai créé correspondant des javax.ws.rs.core.Application
classes pour fournir ces composants REST. Ensuite , je suis notamment les Application
classes dans le web.xml
fichier. Voici les fichiers:
web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>backend.backendservice.StammSolvaraJahrRestApplication</servlet-name>
<servlet-class>backend.backendservice.StammSolvaraJahrRestApplication</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>backend.backendservice.StammSolvaraJahrRestApplication</servlet-name>
<url-pattern>/rmz/*</url-pattern>
</servlet-mapping>
Une autre variante de web.xml
ce que j'ai essayé
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>backend.backendservice.StammSolvaraJahrRestApplication</servlet-name>
<servlet-class>backend.backendservice.StammSolvaraJahrRestApplication</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>backend.backendservice.StammSolvaraJahrRestApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>backend.backendservice.StammSolvaraJahrRestApplication</servlet-name>
<url-pattern>/rmz/*</url-pattern>
</servlet-mapping>
Classe d'application
public class StammSolvaraJahrRestApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> sets = new HashSet<>();
sets.add(StammSolvaraJahrRest.class);
return sets;
}
}
L'erreur que je reçois est: java.lang.ClassCastException: backend.backendservice.StammSolvaraJahrRestApplication cannot be cast to javax.servlet.Servlet
et si je retire le <servlet-class>
puis je vais obtenir No servlet class has been specified for servlet
. Je suivais https://docs.oracle.com/cd/E24329_01/web.1211/e24983/configure.htm#RESTF183 et comment déployer une application JAX-RS? entre autres , mais il ne semble pas fonctionner.
Il existe deux façons de définir votre servlet JAX-RS.
1) avec une application comme celle-classe que vous avez, vous pouvez sauter la configuration web.xml et il suffit d'ajouter l'annotation d'application
@ApplicationPath("resources")
public class StammSolvaraJahrRestApplication extends Application
2) Avec web.xml config
<servlet>
<display-name>JAX-RS Servlet</display-name>
<servlet-name>package.hierarchy.StammSolvaraJahrRestApplication</servlet-name>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>package.hierarchy.StammSolvaraJahrRestApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JaxRSServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Si vous sautez le mappage de servlet de la dernière, il utilisera votre votre @ApplicationPath
valeur spécifiée ou "/resources"
si la précédente est manquante.