如何在云上部署maven Web服务?

时间:2016-08-05 11:47:26

标签: java eclipse web-services maven tomcat

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

我只是试图通过复制项目文件夹==>将项目部署在" jelasic.cloud"上。并压缩成zip ==>上传jelastic然后部署,但它给我404错误。

但是当我测试在eclipse tomcat中部署相同的项目时,它运行正常。但是如何在云上做呢?

这是我简单的maven webservice:

@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中正常运行。

1 个答案:

答案 0 :(得分:1)

通过 Jelastic Cloud 中的Maven插件创建和部署java Web应用程序非常简单。 让我们执行一些简单的步骤。

第1步 - 创建环境

请登录您的信息中心,然后点击&#34;新环境&#34;。

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

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

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

请在您的机器上打开开发环境IntelliJ IDEA(必须安装该应用程序)并通过菜单&#34; 文件 - &gt;创建一个新项目。 &#34 ;.在显示的窗口中,请选择项目的SDK 的类型(例如:v1.8),选中&#34; 从原型创建框&#34;并选择&#34; maven-archetype-webapp:发布&#34;在下面的列表中。

然后按&#34;下一步&#34;按钮。

填写字段&#34; GroupID &#34;和&#34; ArtifactID &#34;例如,使用文本&#34; demo-jelastic&#34;。

接下来,请指定Maven主目录文件夹(捆绑(Maven 3)推荐)并标记复选框,如下面的屏幕截图所示。

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

现在输入您的项目名称,指定项目文件夹,然后按&#34;完成&#34;。

现在您需要等到创建项目结构。通常需要大约五分钟。您可以在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>

小心,链接可以用红色突出显示。在这种情况下,请转到&#34; 文件 - &gt; 设置 - &gt; 语言&amp;框架 - &gt; 架构和DTD &#34;并添加必要的链接到&#34; 忽略的架构和DTD &#34;。示例如下:

步骤4 - 编辑文件settings.xml

请打开操作系统的终端,然后转到文件夹&#34; / home / $ username $ /。m2 &#34; (我们之前保存的文件夹的正确路径)。 打开文件 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>

请在指令内指定仪表板的登录名和密码&#34; jelastic.username &#34;和&#34; jelastic.password &#34;并且不要忘记保存更改。

步骤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>

内部&#34; 配置&#34;指令请指定以下指令:

&#34;的 api_hoster &#34; - 指向hoster's dashboard的网址。

&#34; 电子邮件&#34;和&#34; 密码&#34; - 凭据,用于登录仪表板。

&#34;的环境&#34; - 先前创建的环境的名称(步骤1)。

保存更改(文件 - &gt; 全部保存)。

步骤6 - 在Jelastic Cloud中部署Web应用程序。

关于&#34; Maven项目&#34;面板,选择个人资料&#34; Jelastic &#34;和&#34; 安装&#34;在生命周期列表中。

按&#34;运行Maven Build&#34;按钮并监视IDE终端内的进程。 因此,我们在Jelastic Cloud中运行的简单Web应用程序。