2012-11-19 152 views
0

我有一個Maven EJB項目,意在安裝在WAS8.5服務器上。一切都編譯到EAR正常,但是,當我嘗試將應用程序部署的MDB映射不會自動填充。我解壓JAR(耳內),我看到...如何正確包含使用Maven的IBM EJB映射

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

UPDATE:

這看起來更與IBM的web-bnd.xml的問題。我已經確認那是在最後的戰爭中。

更新的問題...

我使用激活規範,據我可以告訴這些都是在EJB項目的IBM-EJB-bnd.xml delcared罰款。我可以在耳邊看到他們。但是,它仍然不起作用。另外,我有一個耳朵增其舊制,並在這裏建成,我發現在下列文件中沒有真正的差異...

  • 的application.xml
  • IBM的web-bnd.xml
  • IBM -ejb-jar-bnd.xml

我也瀏覽了web.xml和MANIFEST文件,沒有看到任何東西。

最後另一個奇怪值得注意的是,當我嘗試安裝行家產生一個我看看......

enter image description here

然而,當我嘗試上傳螞蟻(以前的版本)一個我看到這些選項

enter image description here

UPDATE:根據註釋

我添加了這些文件到名爲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 
+0

你使用什麼樣的MDB映射?聽衆端口?激活規範? – Isaac

+0

看到我上面的修訂 – Jackie

+0

你能確認文件是否相同?另外,您是否可以確認這兩個文件的擴展名是「xml」,而不是「xmi」? – Isaac

回答

0

我有這麼多的東西打在我的決議是不科學的。但是,這種SEEMED爲我工作....

<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> 
+0

嗨,我有類似的問題。除了使用antrun plgunin之外,還有更新嗎? – Basu

0

你可以嘗試使用was6-maven-plugin。

它完全相同(它使用Websphere自定義標記(如wsejbdeploy生成一個ant文件,然後使用Websphere ws_ant實用程序調用它),但它會爲您計算大多數屬性和路徑。

還有一個Ant任務命名wsDefaultBindings(見上面的鏈接),您可以用直接或通過WAS6 - Maven的插件,可以幫助您創建使用外部文件

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

的綁定問候