Зачем нужен web. xml для развертывания веб-приложения на Weblogi c, когда я использую SpringBoot? - PullRequest
0 голосов
/ 10 февраля 2020

Я сделал веб-приложение на основе SpringBoot 2.x. Я использую Intellij Idea 2019 и там я настраиваю развертывание моего веб-приложения на weblogi c 12.x.


<dependencies>


        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

             <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

Я сделал *. xml

src / main / webapp /WEB-INF/dispatcherServlet-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

src / main / webapp / WEB-INF / weblogi c. xml

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
                      http://xmlns.oracle.com/weblogic/weblogic-web-app
                      http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">

    <wls:weblogic-version>12.2.1</wls:weblogic-version>
    <wls:context-root>web</wls:context-root>
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j.*</wls:package-name>
            <wls:package-name>org.springframework.*</wls:package-name>
            <wls:package-name>javax.persistence.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>

Затем я создал классы ...

WebLogicApplication.class

@SpringBootApplication
public class WebLogicApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebLogicApplication.class, args);
    }

}

ServletInitializer.class

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(WebLogicApplication.class);
    }

}

stati c content .. .

static / index . html

Я установил на Intellij для запуска веб-приложения на сервере WebLogi c.

Но я получаю сообщение об ошибке ...

одна ошибка


<The log file C:\oracle_home_develop\user_projects\domains\base_domain\servers\AdminServer\logs\AdminServer.log will be rotated. Reopen the log file if tailing has stopped. This can happen on some platforms, such as Windows.>  <10.02.2020 11:35:44,322 MSK> <Error> <Default> <BEA-000000> <Got an exception while rotating log file. java.lang.RuntimeException: com.bea.logging.LogRotationException: Error rotating log file C:\oracle_home_develop\user_projects\domains\base_domain\servers\AdminServer\logs\AdminServer.log  at com.bea.logging.LogFileRotator$1.run(LogFileRotator.java:254)    at com.bea.logging.LogFileRotator.executeGlobalAccountRunnerTask(LogFileRotator.java:243)   at com.bea.logging.LogFileRotator.rotate(LogFileRotator.java:248)

вторая ошибка

[2020-02-10 11: 35: 58,625] Артефакт weblogi c: война взорвалась: артефакт развертывается, пожалуйста, подождите ... <10.02.2020 11: 35: 58,915 MSK> <[WebAppModule (weblogic_war_exploded: weblogi c -0.0.1-SNAPSHOT)] Ошибка синтаксического анализа дескриптора в веб-приложении Приложение "E:! _ Install \ git_hub_projects \ weblogic \ target \ weblogi c -0.0.1-SNAPSHOT" weblogi c .application.descriptor.MissingRootElementException: [Munger: 2156204] Веб-приложение элемента root отсутствует в файле дескриптора E:! _ Установить \ git_hub_projects \ weblogic \ target \ weblogi c -0.0.1-SNAPSHOT / WEB-INF / web. xml. в weblogi c .application.descriptor.BasicMunger2._onStartElement (BasicMunger2. java: 506) в weblogi c .application.descriptor.BasicMunger2.next (BasicMunger2. java: 441) в weblogi c. application.descriptor.VersionMunger._next (VersionMunger. java: 346) в weblogi c .application.descriptor.VersionMunger.next (VersionMunger. java: 231) в weblogi c .application.descriptor.VersionMunger. потреблениеInputStream (VersionMunger. java: 599) усечено. см. файл журнала для полной трассировки стека </p>

<10.02.2020 11: 35: 58 920 MSK>

Update-1

I исправлено.

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
                      http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">

    <wls:weblogic-version>12.2.1</wls:weblogic-version>
    <wls:context-root>web</wls:context-root>
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j.*</wls:package-name>
            <wls:package-name>org.springframework.*</wls:package-name>
            <wls:package-name>javax.persistence.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>

Я удалил src / main / webapp / WEB-INF / dispatcherServlet-servlet . xml

Я проверил * .war - веб-сайт не генерируется. xml

Но я снова получаю сообщение об ошибке

[Munger: 2156204] В файле дескриптора отсутствует элемент root элемента E:! _ Install \ git_hub_projects \ weblogic \ target \ weblogi c -0.0.1-SNAPSHOT / WEB-INF / web. xml.

Update_3

Я изменил точка входа ...

@SpringBootApplication
public class WebLogicApplication extends SpringBootServletInitializer implements WebApplicationInitializer {

    public static void main(String[] args) {
        SpringApplication.run(WebLogicApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(WebLogicApplication.class);
    }
}

, а затем

пом. xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.weblogic</groupId>
    <artifactId>weblogic</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>weblogic</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>

        <version.apache.maven.plugins>3.8.1</version.apache.maven.plugins>
        <version.mapstruct>1.3.0.Final</version.mapstruct>

        <version.apache.common.lang3>3.9</version.apache.common.lang3>
        <version.apache.commons.text>1.8</version.apache.commons.text>
        <version.apache.commons.beanutils>1.9.4</version.apache.commons.beanutils>
        <version.datasource.proxy>1.6</version.datasource.proxy>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

             <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>

         <!--исключаем из компиляции встроенный Tomcat-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

com.weblogi c .weblogi c .controller . HomeController


@Controller
public class HomeController {


    private String message = "Hello World";

    @GetMapping("/")
    public String getIndex() {

        return "index";
    }
}

Я снова собрал проект, но развернул его на Weblogi c (не с Intellij Idea) и снова нахожу ошибку

[http://172.17.89.177: 7001 / web]

Ошибка 500 - Внутренняя ошибка сервера

java .lang.NullPointerException в weblogi c .servlet.internal.ServletResponseImpl.sendContentError (ServletResponseImpl. java: 738) в weblogi c .servlet.internal.ServletResponserl : 796) в сети 349) по адресу org.springframework.boot.web.servlet.support.ErrorPageFilter $ ErrorWrapperResponse.getWriter (ErrorPageFilter. java: 363) по адресу org.springframework.boot.autoconfigure.web.servlet.Merv.Conf_Error.Eror ErrorMvcAutoConfiguration. java: 227) по адресу org.springframework.web.servlet.DispatcherServlet.render (DispatcherServlet. java: 1373) по адресу org.springframework.web.servlet.DispatcherServlet.processDislet_serv * 12: Disparter 12 в org.springframework.web.servlet.DispatcherServlet.doDispatch (Dispatc . HerServlet java: 1057) по адресу org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet. java: 943) по адресу org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet. java: 1006) веб-сайт org. .FrameworkServlet.doGet (FrameworkServlet. java: 898) по адресу javax.servlet.http.HttpServlet.service (HttpServlet. java: 687) по адресу org.springframework.web.servlet.FrameworkServlet.serverServlet. : 883) на javax.servlet.http.HttpServlet.service (HttpServlet. java: 790) на weblogi c .servlet.internal.StubSecurityHelper $ ServletServiceAction.run (StubSecurityHelper. javalo32. At at 295 at at 295) * .servlet.internal.StubSecurityHelper $ ServletServiceAction.run (StubSecurityHelper. java: 260) в weblogi c .servlet.internal.StubSecurityHelper.invokeServlet (StubSecurityHelper. java: 137) * 110101 * 11 * Update_4

weblogi c. xml

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
                      http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">

    <wls:weblogic-version>12.2.1.4.0</wls:weblogic-version>
    <wls:context-root>/api</wls:context-root>
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j.*</wls:package-name>
            <wls:package-name>org.springframework.*</wls:package-name>
            <wls:package-name>javax.persistence.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>

Я также создал src / main / webapp / WEB -INF / веб. xml. Он пуст.

src / main / webapp / index. html и только он здесь.

Run / DebugCongiguration

URL: http://localhost: 7001 / api

и все остальное как обычно

Это работает сейчас.

Я думаю. .. Необходимо создать java -конфигурацию. Там будут описаны правила доступа к контенту stati c ...

Я видел много примеров, когда контент stati c находился в / resources. Как мне его оформить сейчас? Как работать в связке: Spring Bolt 2.x + Html + Weblogi c? Как мне ограничить доступ к содержанию stati c?

У кого есть идеи как это исправить?

Обновление

Я создал stati c содержимое (*. html, *. css) в:

  • src / main / resources / templates
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hello Weblogic!</title>
    <link type="text/css" th:href="@{/css/style.css}" rel="stylesheet"/>
</head>
<body>
<div class="st">
    Hello Weblogic!!!!!!!!!!!!!!!
</div>

</body>
</html>
  • src / main / resources / static / css / style. css

  • Контроллер

@Controller
public class IndexController {

    @RequestMapping(value="/", method= RequestMethod.GET)
    public String index() {
        return "index";
    }
}
  • pom. xml
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
  • src / main / webapp / WEB-INF / web. xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

</web-app>
  • src / main / webapp / WEB-INF / weblogi c. xml
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
        xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        https://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
        http://xmlns.oracle.com/weblogic/weblogic-web-app
        https://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">

    <wls:context-root>sat</wls:context-root>
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>

Работает.

...