Angular 4 и Java BackEnd Project в одной WAR

Я создал проект angular 4 и использовал проект JAVA REST API в качестве BackEnd. Мне нужно, чтобы я мог перемещать свой проект angular 4 как статическое содержимое внутри военного файла JAVA.

Я создал производственную сборку для проекта angular, скопировал файлы из папки dist и вставил их в веб-контент проекта java. Я могу прочитать индексный файл углового проекта, но другие файлы дают 404.

Пожалуйста, помогите, как я могу переместить свой угловой проект в свой java-проект, чтобы получить один файл войны для производства.

Структура проекта::

ВЕБ.XML: -

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>userInformation</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Jersey RESTful Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>com.newgen.ap2</param-value>
    </init-param>
    <init-param>
    <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
    <param-value>com.newgen.ap2.CrossOrigin</param-value>
 </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey RESTful Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping> 
</web-app>

person Nishant Varshney    schedule 01.02.2018    source источник
comment
Почему вы хотите это сделать?   -  person Stultuske    schedule 01.02.2018
comment
@Stultuske, так что у меня есть единая война для производства. Любой другой хороший подход, который у вас есть, тогда, пожалуйста, предложите.   -  person Nishant Varshney    schedule 01.02.2018
comment
Проверьте это stackoverflow.com/questions/45915379/ или этот github.com/marco76 /java-демо   -  person Saulius Next    schedule 01.02.2018
comment
Они оба с Maven, но я не хочу использовать maven...   -  person Nishant Varshney    schedule 01.02.2018
comment
@NishantVarshney да, я понимаю что, вот почему меня это сбивает с толку. вы уверены, что хотите менять развертывание серверной части каждый раз, когда меняете метку в пользовательском интерфейсе? Нет даже причин, по которым они должны работать на одном сервере, не говоря уже об одном и том же файле войны.   -  person Stultuske    schedule 01.02.2018
comment
@Stultuske Я понимаю вашу точку зрения ... Но у меня есть только сервер приложений JBOSS, поэтому у меня нет возможности развернуть на нем проект angular 4. Вот почему я иду на этот подход.   -  person Nishant Varshney    schedule 01.02.2018
comment
вставьте свой web.xml и, если возможно, структуру вашего веб-контента   -  person suenda    schedule 01.02.2018
comment
Я бы по-прежнему рекомендовал вам прочитать ответ @TimeTraveler в связанной статье - он объясняет, что вам нужно сделать, чтобы файлы angular были найдены - независимо от использования maven.   -  person JGlass    schedule 01.02.2018
comment
Привет, ребята .. Я сделал это ... Теперь единственная проблема в том, что я не могу вызывать фоновые изображения, используемые в css ... Он не берет путь к изображению из корневого каталога ....   -  person Nishant Varshney    schedule 02.02.2018
comment
@suenda... Я опубликовал то, что вы просили...   -  person Nishant Varshney    schedule 02.02.2018


Ответы (1)


Измените свой файл web.xml на следующее:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>userInformation</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Jersey RESTful Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>com.newgen.ap2</param-value>
    </init-param>
    <init-param>
    <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
    <param-value>com.newgen.ap2.CrossOrigin</param-value>
 </init-param>
  </servlet>
  <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
</servlet>
  <servlet-mapping>
    <servlet-name>Jersey RESTful Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping> 

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

Идея состоит в том, чтобы использовать другой сервлет для обслуживания ваших статических ресурсов.

Вот еще несколько сообщений SO, которые могут быть полезны:

порядок выполнения фильтров сервлетов

Как используются сопоставления URL-адресов сервлетов в web.xml?

Что происходит если у меня есть два сопоставления сервлетов в web.xml, которые соответствуют запросу?

person suenda    schedule 03.02.2018