web-dev-qa-db-ja.com

SpringBootをEARプロジェクトに統合する

SpringBootを使用して作成された既存の戦争プロジェクトがあります。 EJBモジュールを備えたEAR内にパッケージ化する方法は?

モデルとdaoパッケージをEJBモジュールに移動し、WARモジュールで注入する方法はありますか?

7
Shakthi

依存関係管理システムを使用する必要があります。

これにより、Spring Boot WARモジュールプロジェクトの親をspring-boot-starter-parentとは異なるものに設定できます。そうすれば、他のプロジェクトと同じように、WARプロジェクトをEARプロジェクトに含めることができます。

<dependencyManagement>
     <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

...これで、すべてのSpringBootスターターの依存関係を通常の方法で使用できます。

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

モジュールプロジェクトレベルで指定する必要のあるスターター依存関係。依存関係管理構成は、アプリの要件に応じて、EARプロジェクト全体で、またはプロジェクトごとに個別に、両方で指定できます。

親POMなしでSpring Bootを使用

1
WildDev

春のブートプロジェクトとなる戦争プロジェクトを含む親プロジェクトと、耳を作るための耳プロジェクトが必要です。

親は、親としてスプリングブーツを持っている必要があります:

<?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 http://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>1.4.3.RELEASE</version>
  </parent>

  <groupId>com.greg</groupId>
  <artifactId>ear-example</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <properties>
        <myproject.version>1.0-SNAPSHOT</myproject.version>
  </properties>

  <name>ear-example</name>
  <modules>
    <module>example-ear</module>
    <module>example-war</module>
  </modules>

</project>

あなたの耳のプロジェクトは次のとおりです。

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.Apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.greg</groupId>
    <artifactId>ear-example</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <artifactId>example-ear</artifactId>
  <packaging>ear</packaging>

  <dependencies>
    <dependency>
      <groupId>com.greg</groupId>
      <artifactId>example-war</artifactId>
      <version>${project.version}</version>
      <type>war</type>
    </dependency>
  </dependencies>

  <build>
   <plugins>
     <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.10.1</version>
        <configuration>
                <modules>
                        <webModule>
                                <groupId>com.greg</groupId>
                                <artifactId>example-war</artifactId>
                                <contextRoot>/appname</contextRoot>
                        </webModule>
                </modules>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
7
Essex Boy

Spring RESTFulWebサービスを含むマルチモジュールgradleプロジェクトを作成しました-EARアプリケーション名は-bluestonebluestone/settings.gradle-

rootProject.name = 'bluestone'
include ':bluestone-web'
include ':bluestone-core'
include ':bluestone-rest'

project (':bluestone-web').projectDir = new File('bluestone-web')
project (':bluestone-core').projectDir = new File('bluestone-core')
project (':bluestone-rest').projectDir = new File('bluestone-rest')

bluestone-restプロジェクトの構造は-

enter image description here

bluestone-rest/build.gradle

plugins {
    id 'war'
}

group 'com.bluestone.smart.rest'
version '1.0-SNAPSHOT'



dependencies {
    compile library.spring_context
    compile library.spring_web
    compile library.spring_beans
    compile library.spring_mvc
    providedCompile library.servlet_api
    testCompile library.junit

}

すべての依存関係は、共通のlibraries.gradleからインポートされます。一般的なlibraries.gradleはユーザーの耳ですbluestone/libraries.gradle

/* ============================================================================
   Library definitions for project 'Bluestone'
   ============================================================================
   Define here library dependencies and use them inside sub-modules build.gradle.

   Included from: "${rootProject.projectDir}/build.gradle"
   ============================================================================

 */
ext {

    library = [
            /* testing */
            junit: "junit:junit:4.12",
            log4j: "log4j:log4j:1.2.17",

            /* Spring libraries*/
            spring_context:                                     "org.springframework:spring-context:${spring_lib_version}",
            spring_aop:                                         "org.springframework:spring-aop:${spring_lib_version}",
            spring_beans:                                       "org.springframework:spring-beans:${spring_lib_version}",
            spring_orm:                                         "org.springframework:spring-orm:${spring_lib_version}",
            spring_web:                                         "org.springframework:spring-web:${spring_lib_version}",
            spring_mvc:                     "org.springframework:spring-webmvc:${spring_lib_version}",
            servlet_api:                     "javax.servlet:javax.servlet-api:4.0.1"

    ]
}

Bluestone-rest内で、サンプルのrestメッセージをテストするための3つの基本ファイルを作成しました-

  1. 名前付きのSpring構成-BlueRestConfiguration.Java
package com.bluestone.smart.rest.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.bluestone.smart.rest.resources", "com.bluestone.smart.rest.controller"})
public class BlueRestConfiguration {
}
  1. 初期化ファイル-名前は-RestInit.Java
package com.bluestone.smart.rest.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.ServletContext;

public class RestInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    /**
     * Specify {@code @Configuration} and/or {@code @Component} classes for the
     * {@linkplain #createRootApplicationContext() root application context}.
     *
     * @return the configuration for the root application context, or {@code null}
     * if creation and registration of a root context is not desired
     */
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] {BlueRestConfiguration.class};
    }

    /**
     * Specify {@code @Configuration} and/or {@code @Component} classes for the
     * {@linkplain #createServletApplicationContext() Servlet application context}.
     *
     * @return the configuration for the Servlet application context, or
     * {@code null} if all configuration is specified through root config classes.
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    /**
     * Specify the servlet mapping(s) for the {@code DispatcherServlet} &mdash;
     * for example {@code "/"}, {@code "/app"}, etc.
     *
     * @see #registerDispatcherServlet(ServletContext)
     */
    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }
}
  1. RestサービスAPI-名前付き-GreetingsController.Java
package com.bluestone.smart.rest.resources;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingsController {
    @RequestMapping(path = "/greeting", method = RequestMethod.GET)
    public String greetings(){
        return "Welcome Spring Rest!";
    }
}

最後に、このEARアプリケーションを-を使用してビルドします

gradlew clean build 

wildFlyアプリケーションにデプロイしてから、postmanを使用してこのサービスを呼び出します- enter image description here

詳細が必要な場合はお知らせください。このコードをgitにプッシュし、ここでgitリンクを共有します。

0
Pravind Kumar