【问题标题】:How to deploy maven web service on cloud?如何在云上部署 Maven Web 服务?
【发布时间】:2016-12-11 19:49:48
【问题描述】:

我有一个 Maven 网络服务,我想像亚马逊或任何托管站点一样部署在云上。我的项目需要对这项工作进行哪些更改?

我只是尝试将我的项目部署在“jelasic.cloud”上,方法是复制项目文件夹==> 并压缩成 zip ==> 上传到 jelastic 然后部署,但它给了我 404 错误。

但是当我测试在 Eclipse Tomcat 中部署相同的项目时,它工作正常。但是在云端怎么做呢?

这是我的简单 Maven 网络服务:

@Path("myresource")

    public class MyResource {


        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String getIt() {
            return "hellow world!";
        }
    }

pom.xml 文件:

<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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>org.start.project</groupId>
    <artifactId>smsdetails</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>smsdetails</name>

    <build>
        <finalName>smsdetails</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <!-- use the following artifactId if you don't need servlet 2.x compatibility -->
            <!-- artifactId>jersey-container-servlet</artifactId -->
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
        </dependency>
    </dependencies>
    <properties>
        <jersey.version>2.23.1</jersey.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

index.jsp 文件:

<html>
<body>
    <h2>Jersey RESTful Web Application!</h2>
    <p><a href="webapi/myresource">Jersey resource</a>
    <p>Visit <a href="http://jersey.java.net">Project Jersey website</a>
    for more information on Jersey!
</body>
</html>

web.xml 文件:

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 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">
    <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.start.project.smsdetails</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>
</web-app>

这段代码在eclipse中运行良好。

【问题讨论】:

    标签: java eclipse web-services maven tomcat


    【解决方案1】:

    通过Jelastic Cloud中的Maven插件创建和部署java web-application非常简单。 让我们执行一些简单的步骤。

    第 1 步 - 创建您的环境

    请登录您的仪表板并点击“新环境”。

    在环境的设置窗口中,请选择Java和Tomcat 7 Server,输入环境的唯一名称,例如-“maventest”并指定cloudlet的数量(可用资源)。然后按“创建”。

    您的环境将在几分钟内创建。

    第 2 步 - 通过 IntelliJ IDEA 创建 Web 应用程序的项目。

    请在您的机器上打开开发环境 IntelliJ IDEA(必须安装应用程序)并通过菜单“File -> New”创建一个新项目。在出现的窗口中,请选择Project's SDK的类型(例如:v1.8),勾选“Create from archetype”并选择“ maven-archetype-webapp:Release”在下面的列表中。

    然后按“下一步”按钮。

    用文本填写“GroupID”和“ArtifactID”字段,例如“demo-jelastic”。

    接下来,请指定 Maven 主目录文件夹(推荐使用 Bundled (Maven 3))并标记复选框,如下图所示。

    请保存文件settings.xml的路径。稍后这会派上用场。

    现在输入您的项目名称,指定项目的文件夹,然后按“完成”。

    现在您需要等到项目结构创建完成。通常,它需要大约五分钟。您可以在 IDE 内的 终端 窗口中跟踪该过程。完成后项目结构如下:

    第 3 步 - 编辑文件 web.xml

    请在您的项目中打开 web.xml 文件并将其内容替换为以下文本:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee
             http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

    请注意,链接可能会以红色突出显示。在这种情况下,请转到“File -> Settings -> Languages & Frameworks -> Schemas and DTDs " 并添加必要的链接到 "Ignored Schemas and DTDs"。示例如下:

    第 4 步 - 编辑文件 settings.xml

    请打开您的操作系统终端并转到文件夹“/home/$username$/.m2”(我们之前保存的文件夹的正确路径)。 打开文件 settings.xml(如果文件不存在,则创建一个)。 将其内容替换为以下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <profiles>
        <profile>
          <id>jelastic</id>
          <properties>
            <jelastic.username>[insert your Jelastic user name]</jelastic.username>
            <jelastic.password>[insert your Jelastic password]</jelastic.password>
          </properties>
        </profile>
      </profiles>
    </settings>
    

    请在指令“jelastic.username”和“jelastic.password”中为您的仪表板指定登录名和密码,并且不要忘记保存更改。

    第 5 步 - 编辑文件 pom.xml

    请返回项目结构并选择文件 pom.xml。 将其内容替换为以下内容:

    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>demo-jelastic</groupId>
        <artifactId>demo-jelastic</artifactId>
        <packaging>war</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>demo-jelastic Maven Webapp</name>
        <url>http://maven.apache.org</url>
        <dependencies>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
          </dependency>
        </dependencies>
        <build>
          <finalName>demo-jelastic</finalName>
        </build>
        <pluginRepositories>
          <pluginRepository>
            <id>sonatype-oss-public</id>
            <url>https://oss.sonatype.org/content/groups/public</url>
            <releases>
              <enabled>true</enabled>
            </releases>
            <snapshots>
              <enabled>true</enabled>
            </snapshots>
          </pluginRepository>
        </pluginRepositories>
        <profiles>
          <profile>
            <id>jelastic</id>
            <build>
              <plugins>
                <plugin>
                  <groupId>com.jelastic</groupId>
                  <artifactId>jelastic-maven-plugin</artifactId>
                  <version>1.7</version>
                  <configuration>
                    <api_hoster>[INSERT YOUR HOSTER'S API ADRESS]</api_hoster>
                    <context>ROOT</context>
                    <email>[YOUR EMAIL]</email>
                    <environment>[ENVIRONMENT NAME]</environment>
                    <password>[PASSWORD]</password>
                  </configuration>
                  <executions>
                    <execution>
                      <phase>install</phase>
                      <goals>
                        <goal>deploy</goal>
                      </goals>
                    </execution>
                  </executions>
                </plugin>
                <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-install-plugin</artifactId>
                  <version>2.4</version>
                  <executions>
                    <execution>
                      <phase>none</phase>
                    </execution>
                  </executions>
                </plugin>
              </plugins>
            </build>
          </profile>
        </profiles>
      </project>
    

    在“configuration”指令中,请指定以下指令:

    "api_hoster" - 指向您的hoster's dashboard 的网址。

    email”和“password” - 用于登录仪表板的凭据。

    environment” - 先前创建的环境的名称(第 1 步)。

    保存更改(文件 -> 全部保存)。

    第 6 步 - 在 Jelastic Cloud 中部署您的 Web 应用程序。

    在“Maven 项目”面板上,选择生命周期列表中的配置文件“Jelastic”和“Install”。

    按“运行 Maven 构建”按钮并观察 IDE 终端内的进程。 因此,我们在 Jelastic Cloud 中运行的简单 Web 应用程序。

    .

    【讨论】:

      猜你喜欢
      • 2012-09-10
      • 2013-07-19
      • 1970-01-01
      • 2019-09-27
      • 2016-11-19
      • 1970-01-01
      • 2022-11-04
      • 2020-07-07
      • 2013-08-19
      相关资源
      最近更新 更多