配置好了JBoss,把EJB和Java_Web项目部署完成,EJB项目也加入到了web工程的build path里,结果是虽然能正常显示JSP页面,但调用的Bean提示无法找到,返回Bean not found错误信息。
Hello hello = (Hello)ctx.lookup( "HelloBean/remote"); 此句代码出现错误
我是初学,不知道哪个地方配置出现了问题,请大家帮我发现一下问题,我被这个问题困扰2天了。web工程中JSP代码:
<%@ page contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<%@ page import="java.util.*, ejb.Hello, ejb.impl.HelloBean, javax.naming.*" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'index.jsp' starting page</title>  </head>
  
  <body>
    This is my JSP page. <br><br>
    <%
    
    Properties props = new Properties();
    props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099"); 
   
    try{
    InitialContext ctx = new InitialContext();
    Hello hello = (Hello)ctx.lookup( "HelloBean/remote"); 
    out.println(hello.sayHello("!!!"));
    }catch (NamingException e) {
out.println(e.getMessage());
}
 %>
  </body>
</html>EJB项目:
HelloBean.java
package ejb.impl;import javax.ejb.Remote;
import javax.ejb.Stateless;import ejb.Hello;@Stateless
@Remote
public class HelloBean implements Hello{ public String sayHello(String string) {
// TODO Auto-generated method stub
return "Hello is OK!"+string;
}}Hello.java
package ejb;
public interface Hello {
public String sayHello(String string);}

解决方案 »

  1.   


    Properties pro=new Properties();
    pro.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    pro.setProperty(Context.PROVIDER_URL, "localhost:1099");
    InitialContext ctx=new InitialContext(pro);
      

  2.   

    Hello hello = (Hello)ctx.lookup( "HelloBean/remote"); 此句代码出现错误
    属性文件么?
    HelloBean/remote.properties  应该是没有写全
      

  3.   

    问题发现了,打war包的问题,如果直接把web工程打包,则无法找到bean,应该是文件目录路径的问题。只要打war包时把webroot里的部分内容打成war包就ok啦(即war包中不包含webroot文件夹),不过还是感谢各位的解答!