【问题标题】:How to properly include IBM EJB mappings using Maven如何使用 Maven 正确包含 IBM EJB 映射
【发布时间】:2012-11-19 19:57:51
【问题描述】:

我有一个打算安装在 WAS8.5 服务器上的 Maven EJB 项目。一切都编译到 EAR 上,但是,当我尝试部署应用程序时,MDB 映射不会自动填充。我提取了 jar(在耳朵内),我看到了......

--META-INF
----ejb-jar.xml
----ibm-ejb-jar-bnd.xml

那么为什么没有拾取映射?我的插件中有我需要的配置吗?

       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ejb-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <ejbVersion>3.0</ejbVersion>
                <generateClient>true</generateClient>
                <archive>
                    <manifest>
                        <!-- generate manifest file properly -->
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

更新:

这看起来更像是 ibm-web-bnd.xml 的问题。我已经确认那是在最后的战争中。

更新问题...

我正在使用激活规范,据我所知,这些在 ejb 项目的 ibm-ejb-bnd.xml 中得到了很好的处理。我可以在耳朵里看到它们。但是,它仍然不起作用。另外,我有一个由旧系统和here构建的耳朵,我发现以下文件没有真正的区别......

  • application.xml
  • ibm-web-bnd.xml
  • ibm-ejb-jar-bnd.xml

我还浏览了 web.xml 和 MANIFEST 文件,但什么也没看到。

最后,另一个奇怪的提示是当我尝试安装我看到的 maven 生成的...

但是,当我尝试上传 Ant(以前的版本)时,我看到了这些选项

更新:根据评论

我将这些文件添加到一个名为 new 和一个名为 old 的文件夹中。

~/My Documents/tmp/file
$ ls old/
application.xml  ibm-ejb-jar-bnd.xml  ibm-web-ext.xml
ejb-jar.xml      ibm-web-bnd.xml

然后我比较了这两个文件夹,结果如下...

diff new/application.xml old/application.xml
5c5
<       <module id="Module_1352494482335">^M
---
>       <module id="Module_1276803943498">^M

【问题讨论】:

  • 您使用的是哪种 MDB 映射?监听端口?激活规范?
  • 您能确认文件是否相同吗?另外,你能确认这两种情况下文件的扩展名是“xml”,而不是“xmi”吗?
  • 看我的新更新,它们看起来很相似,我会尽量准确...
  • 所以您是在告诉我们两个模块之间的所有差异都属于该模块 ID 属性?再看一遍。 :-)
  • 不确定您是否再次要求我进行三次检查,还是我遗漏了一些明显的东西?非常感谢您的帮助。

标签: maven websphere ejb-3.0


【解决方案1】:

我玩了很多东西,我的解决方案是不科学的。但是,这似乎对我有用....

<plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>verify</phase>
                    <configuration>
                        <tasks>
                            <property name="was6.home" value="C:\Program Files\IBM\WebSphere\AppServer" />
                            <property name="user.install.root" value="${was6.home}" />   
                            <path id="was.classpath">
                                <fileset dir="${was6.home}/lib">
                                    <include name="webservices.jar" />
                                    <include name="wsprofile.jar" />
                                    <include name="j2ee.jar" />
                                    <include name="ffdc.jar" />
                                    <include name="wsdl4j.jar" />
                                    <include name="bootstrap.jar" />
                                    <include name="commons-logging-api.jar" />
                                    <include name="commons-discovery.jar" />
                                    <include name="ras.jar" />
                                    <include name="wsexception.jar" />
                                    <include name="emf.jar" />
                                    <include name="classloader.jar" />
                                </fileset>
                                <fileset dir="${was6.home}/dev">
                                    <include name="was_public.jar" />
                                </fileset>
                                <fileset dir="${was6.home}/plugins">
                                    <include name="com.ibm.ws.runtime.jar" />
                                </fileset>
                                <fileset dir="${was6.home}/java/jre/lib">
                                    <include name="xml.jar" />
                                    <include name="ibmorb.jar" />
                                    <include name="ibmorbapi.jar" />
                                </fileset>
                            </path>
                            <path id="wsejbdeploy.path">
                                <path refid="maven.compile.classpath"/>
                                <fileset dir="${was6.home}/java/jre/lib">
                                    <include name="xml.jar" />
                                    <include name="ibmorb.jar" />
                                    <include name="ibmorbapi.jar" />
                                </fileset>
                            </path>
                            <taskdef name="wasEjbDeploy" classname="com.ibm.websphere.ant.tasks.WsEjbDeploy" 
                                 classpathref="was.classpath" />

                            <echo> 
                                Hello World: FYI
                                project.name=${project.name}
                                project.artifactId=${project.artifactId}
                                project.groupId=${project.groupId}
                                project.version=${project.version}
                                project.packaging=${project.packaging}
                                project.description=${project.description}
                            </echo>

                            <delete dir="${project.build.directory}/ejbdeply-working" />
                            <wasEjbDeploy 
                                inputJar="${project.build.directory}/${project.artifactId}-${project.version}.jar" 
                                outputJar="${project.build.directory}/${project.artifactId}-${project.version}-OUTPUT.jar" 
                                wasHome="${was6.home}" 
                                classpathref="wsejbdeploy.path"
                                workingDirectory="${project.build.directory}/ejbdeply-working"
                                keepGenerated="true"
                                failonerror="true"
                                trace="true" />

                            <move file="${project.build.directory}/${project.artifactId}-${version}.jar" 
                                tofile="${project.build.directory}/${project.artifactId}-${version}-INPUT.jar"  />

                            <move file="${project.build.directory}/${project.artifactId}-${version}-OUTPUT.jar" 
                               tofile="${project.build.directory}/${project.artifactId}-${version}.jar"  />

                            <echo> **** Task WsEJBDeploy Complete! **** </echo>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

【讨论】:

  • 嗨,我也有类似的问题。除了使用antrun plgunin还有什么更新吗?
【解决方案2】:

您可以尝试使用 was6-maven-plugin。

它做的事情完全相同(它使用 Websphere 自定义标签(如 wsejbdeploy)生成一个 ant 文件,然后使用 Websphere ws_ant 实用程序调用它),但它会为您计算大部分属性和路径。

还有一个名为 wsDefaultBindings 的 ant 任务(参见上面的链接),您可以直接使用它或通过 was6-maven-plugin 使用它,它可以帮助您使用外部文件创建绑定

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/index.jsp?topic=%2Fcom.ibm.websphere.javadoc.doc%2Fweb%2Fapidocs%2Findex.html&com%2Fibm%2Fwebsphere%2Fant%2Ftasks%2FInstallApplication.html

问候

【讨论】:

    猜你喜欢
    • 2022-06-28
    • 2015-12-08
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多