【问题标题】:Using maven to build an CXF & Spring Web Service EAR file for Weblogic 10.3.6使用 maven 为 Weblogic 10.3.6 构建 CXF & Spring Web Service EAR 文件
【发布时间】:2013-08-08 03:24:16
【问题描述】:

我创建了一个简单的 CXF 和 Spring Web 服务,并使用 maven 成功构建了一个 war 文件。现在我需要将此 Web 服务打包到一个 EAR 文件中,并将其部署在远程 WebLogic 服务器上。

我尝试在网上搜索有关如何使用 maven 为 CXF 和 Spring Web 服务构建 EAR 文件的信息,但信息不多。

有没有人以前做过这个并且能够分享我该如何去做这个?

谢谢!

【问题讨论】:

  • 这会有帮助吗? cxf.apache.org/docs/…
  • 我看到了这个,但我还需要配置到 pom.xml 来为 weblogic 服务器构建 ear 文件。有什么想法吗?

标签: spring maven weblogic cxf


【解决方案1】:

maven-ear-plugin docs 涵盖了很多内容。 WebLogic 的特定部分是决定将使用哪种production redeployment strategy。如果计划使用“生产重新部署”,则需要在 ear manifest 中添加一个额外条目,以便 WebLogic 具有应用程序的版本信息(更多 documentation)。这是一个部分 POM 示例。

<groupId>com.company.maven.sample</groupId>
<artifactId>myEarSimple</artifactId>
<version>${my.ear.version}</version>
<packaging>ear</packaging>

<build>
    <finalName>myAppEar</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <version>5</version>  <!-- Java EE version used by the app -->
                <displayName>${project.artifactId}</displayName>
                <applicationName>${project.artifactId}</applicationName>
                <fileNameMapping>no-version</fileNameMapping>

                <archive>
                    <manifestEntries>
                        <!-- Must have this if you intend to use production redeployment, use whatever value you like as long as it conforms to WebLogic's version criteria specified in documentation provided -->
                        <Weblogic-Application-Version>${project.version}</Weblogic-Application-Version>
                    </manifestEntries>
                </archive>
                <modules>
                    <webModule>
                        <moduleId>myWebAppId</moduleId>
                        <groupId>com.company.maven.sample</groupId>
                        <artifactId>myWar</artifactId>
                        <contextRoot>myWarContextRoot</contextRoot>
                    </webModule>
                    <ejbModule>
                        <moduleId>myEjbId</moduleId>
                        <groupId>com.company.maven.sample</groupId>
                        <artifactId>myEjb</artifactId>
                    </ejbModule>
                    <!-- other modules here -->
                </modules>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <!-- Here, you specify dependencies corresponding to the modules -->
    <dependency>
        <groupId>com.company.maven.sample</groupId>
        <artifactId>myWar</artifactId>
        <version>${the.war.version}</version>
        <type>war</type>
    </dependency>

    <dependency>
        <groupId>com.company.maven.sample</groupId>
        <artifactId>myEjb</artifactId>
        <version>${my.ejb.version}</version>
        <type>ejb</type>
    </dependency>
</dependencies>

【讨论】:

  • 谢谢!我设法构建了 EAR 文件并成功部署到 weblogic,但现在我遇到了另一个问题。 Weblogic 似乎没有重新识别 Web 服务。当我在 weblogic 管理控制台中展开树时,我看到的是: HelloWorldWS +Modules ++ HelloWorld(Web 应用程序)+EJBs ++ 无显示 +Web 服务 ++ 无显示 这可能是我的 CXF 和 Spring 配置吗?
  • 我从来没有在网络服务上做过这个。从理论上讲,您在耳朵中部署什么样的模块并不重要。我建议检查 WebLogic 日志以确保正确部署 ear 的所有模块。您是否确保正确配置了您的应用所需的数据源、JNDI 等?
  • 目前它只是一个简单的 hello world web 服务。没有数据库连接。
  • 我设法让 Web 服务启动并运行。感谢你的帮助。 =]
猜你喜欢
  • 2019-12-17
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
相关资源
最近更新 更多