Ich möchte ein Jersey-Projekt B (das bereits gut funktioniert) in ein neues Jersey-Projekt A integrieren/hinzufügen, das als Filter/Sicherheitsschicht dienen würde. Als einen grundlegenden Schritt fügte ich dem Projekt B im Build-Pfad von Project A eine Abhängigkeit hinzu und fügte diese auch dem Deployment Assembly im Build-Pfad hinzu. Ich verstehe von this Post, dass ich dies tun könnte, indem Sie die Servlets in der gleichen web.xml
und Zuordnung sie anders unter Verwendung <servlet-mapping>
. Ich hatte kein Glück, als ich versuchte, die Ressource des Projekts B.Hinzufügen mehrerer Servlets zu einer web.xml
web.xml
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.abc.def.ba, org.pqr.xyz</param-value>
</init-param>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.abc.def.ba.CustomApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
<!-- The Servlet of Project B -->
<servlet>
<servlet-name>Jersey Web Application 2</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet- class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value> org.pqr.xyz.MyApplication</param-value>
</init-param>
<!-- Register resources and providers under my.package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value> org.pqr.xyz</param-value>
</init-param>
<!-- Register my custom provider (not needed if it's in my.package) AND LoggingFilter. -->
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value> org.pqr.xyz.mapper.ObjectMapperProvider</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value> org.pqr.xyzr</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
<param-value>com.porterhead.rest.filter.ResourceFilterFactory</param-value>
</init-param>
<init-param>
<param-name>readOnly</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application 2</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Also zugreifen, wenn ich versuche, http://localhost:8080/ba/webapi/myresource
zugreifen, es funktioniert gut. Aber wenn ich versuche, bekomme ich einen 404
Fehler. Ich weiß, dass ich etwas verpasse. Ich schätze Ihre Anleitung dazu.
Ich mache das gleiche, bitte beziehen Sie sich auf meinen Code. Und um hinzuzufügen, wenn ich versuche, den Tomcat-Server zu erstellen und auszuführen, bekomme ich die 'java.lang.ClassNotFoundException: org.pqr.xyzr.MyApplication'. Hast du eine Ahnung, warum? – vardhinisuresh27
In Ihrer web.xml ist das zweite Projekt kommentiert. Können Sie die neueste Version Ihrer web.xml hochladen? – ron
Es ist nicht kommentiert, es ist wegen der Verwendung von "/ *", das den folgenden Code inturn kommentiert. Der angegebene Code ist die aktuelle web.xml. Vielen Dank! – vardhinisuresh27