提问人:Ande Hofer 提问时间:9/6/2012 更新时间:10/17/2012 访问量:3404
Eclipse with Websphere 7.0.0.17:EJB 项目不处理工作区中的资源,但处理服务器上的资源
Eclipse with Websphere 7.0.0.17: EJB project does not work with resources within the workspace, but works with resources on Server
问:
我的应用程序与 Maven 一起工作,并有三个模块:
- 耳模块
- web模块
- 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>
有什么建议,需要更多信息吗?
感谢
答:
0赞
Isaac
9/8/2012
#1
问题不在于您的 ejb-jar.xml。请记住,ejb-jar.xml 只是声明引用;与“真实”资源的实际绑定是由特定于应用程序服务器的文件完成的。在 WebSphere 的示例中,此文件是 ibm-ejb-jar-bnd.xml,它应该与 ejb-jar.xml 位于同一目录中。你碰巧那里有那个文件吗?
评论
0赞
Isaac
9/23/2012
好的,这意味着,当 RAD 设置为使用“使用工作区中的资源运行”时,找不到此文件。在运行时,使用 WebSphere 的“类加载器查看器”来查看与应用程序的类路径相关联的目录列表。
0赞
Alan B. Dee
10/17/2012
#2
我遇到了类似的情况,即找不到应用程序定义的资源。解决方案是定义 /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 教程中导出已部署的应用程序发现了这一点。根据您的应用程序,您必须更改上述资源引用。
希望这会有所帮助
评论