Eclipse与Websphere 7.0.0.17:EJB项目不适用于工作空间中的资源,但适用于Server上的资源

时间:2012-09-05 17:22:10

标签: eclipse maven ejb websphere

我的应用程序与Maven一起使用,有三个模块:

  • ear-module
  • web-module
  • EJB模块

EJB版本是3.0。

部署以两种方式工作,没有错误消息。

当我尝试使用Websphere的发布设置“在服务器上运行带有资源的服务器”运行应用程序时,它可以正常工作。

当我尝试使用“在工作区中运行带有资源的服务器”并在浏览器中打开应用程序时,它会失败并显示以下错误消息:

  

无法为以下为NustService组件定义的资源引用[jdbc / nust]找到资源引用绑定。

我是JEE5的新手,但在我看来,本地的websphere无法找到ejb-jar.xml。

这里是ejb modul的pom:

<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>mycomp-nust-frontend-app</artifactId>
        <groupId>mycomp.app</groupId>
        <version>0.1.0-SNAPSHOT</version>
    </parent>
    <artifactId>mycomp-nust-frontend-svc</artifactId>
    <name>mycomp-nust-frontend-svc</name>
    <packaging>ejb</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.ejb</groupId>
            <artifactId>ejb-api</artifactId>
            <version>3.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>mycomp.service</groupId>
            <artifactId>mycomp-service-utils</artifactId>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <configuration>
                    <ejbVersion>3.0</ejbVersion>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <!-- Add classpath container for Websphere Application Server 7 to the 
                Eclipse project. -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <classpathContainers>
                        <classpathContainer>org.eclipse.jst.server.core.container/com.ibm.ws.ast.st.runtime.runtimeTarget.v70/was.base.v7</classpathContainer>
                        <classpathContainer>org.eclipse.jst.j2ee.internal.module.container</classpathContainer>
                    </classpathContainers>
                    <projectNameTemplate>${project.name}</projectNameTemplate>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

有任何建议,需要更多信息吗?

THX

2 个答案:

答案 0 :(得分:0)

问题不在于你的ejb-jar.xml。请记住,ejb-jar.xml只是声明引用;实际绑定到“真实”资源是由特定于应用程序服务器的文件完成的。在WebSphere的情况下,该文件是ibm-ejb-jar-bnd.xml,它应该与ejb-jar.xml位于同一目录中。你碰巧有那个档案吗?

答案 1 :(得分:0)

我遇到了类似的情况,我的应用程序定义的资源无法找到。解决方案是定义/WEB-INF/ibm-web-bnd.xmi

<?xml version="1.0" encoding="UTF-8"?>
<com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.ibm.ejs.models.base.bindings.webappbnd="webappbnd.xmi" xmi:id="WebAppBinding_1348167502046" virtualHostName="default_host">
    <webapp href="WEB-INF/web.xml#struts_blank"/>
    <resRefBindings jndiName="jms/MyConnectionFactory" xmi:id="cf">
        <bindingResourceRef href="WEB-INF/web.xml"/>
    </resRefBindings>
    <messageDestinationRefBindings jndiName="jms/TopicSpace/Group/Test" xmi:id="myTopic">
        <bindingMessageDestinationRef href="WEB-INF/web.xml"/>
    </messageDestinationRefBindings>  
</com.ibm.ejs.models.base.bindings.webappbnd:WebAppBinding>

该团队的一名高级开发人员表示,这应该是一个XML文件,但之后无效。我通过从IBM教程导出已部署的应用程序来发现这一点。根据您的应用程序,您将不得不更改上述资源引用。

希望这有帮助