2015-04-28 3 views
0

Я новичок в приложении ejb3 мой проект: ServletController.javacontext.lookup в не работает в WebLogic

package controller; 

import java.io.IOException; 

import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.HelloUser; 

public class ServletController extends HttpServlet { 

    @Override 
    protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { 
     try { 
      InitialContext Context = new InitialContext(); 
      Context context = new InitialContext(); 
      HelloUser helloUser = (HelloUser) context.lookup("ejb3/" + HelloUser.class.getSimpleName() + "/local"); 
      System.out.println("................................."); 
      helloUser.sayHello("reza"); 
      arg1.sendRedirect("reza"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 

HelloUser.java:

package com; 

import javax.ejb.Local; 

@Local 
public interface HelloUser { 
    public void sayHello(String name); 
} 

HelloUserBean.java

package com; 

import javax.ejb.Stateless; 

@Stateless 
public class HelloUserBean implements HelloUser { 
    public HelloUserBean() { 
    } 

    public void sayHello(String name) { 
     System.out.println("Hello " + name + " welcome to EJB 3!"); 
    } 

} 

web.xml

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <display-name>Baharan-Framework</display-name> 
    <welcome-file-list> 
     <welcome-file>Index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 


    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>controller.ServletController</servlet-class> 
    </servlet> 
</web-app> 

следующая ошибка возникает, когда ServletController вызывается WebBrowser (URL является: http://localhost:7001/weblogic/rest/jkfg):

javax.naming.NameNotFoundException: While trying to lookup 'ejb3.HelloUser/local' didn't find subcontext 'ejb3'. Resolved ''; remaining name 'ejb3/HelloUser/local' 
    at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139) 
    at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:247) 

ответ

0

Прежде всего, Weblogic печать всех имен JNDI, присвоенные каждому Enterprise боба, и вы можете получить его непосредственно. Во-вторых, удалите context.lookup ("ejb3 /" + HelloUser.class.getSimpleName() + "/ local"); то в простых случаях эта функция может вам помочь:

public static <T>T lookupBean(Class<T> beanClass) { 
final String jndiName = "java:module/" + beanClass.getSimpleName(); 
     logger.info("lookup : {}", jndiName); 

     try { 
      T bean = InitialContext.doLookup(jndiName); 
      logger.info("detected : {}", bean); 
      return bean; 
     } 

     catch(NamingException e) { 
      logger.error(e.getMessage(), e); 
      return null; 
     } 
0

Можете ли вы предоставить мне журнал развертывания? и вместо этого пытается использовать начальный контекстный поиск с аннотацией @EJB.

Смежные вопросы