gpt4 book ai didi

jakarta-ee - 未解决

转载 作者:行者123 更新时间:2023-12-01 09:06:51 24 4
gpt4 key购买 nike

我正在使用 EJB3.1 和 Glassfish 3.1 在 NetBeans 7 中进行开发。
我正在尝试从 WAR 中的 POJO 中引用 JAR 中 session Bean 的本地接口(interface)。
当我部署到 Glassfish 时,我收到:

SEVERE: Unresolved <ejb-link>: TaskTool-ejb#ContextFacade
SEVERE: Exception while deploying the app [com.oracle.eas_TaskTool-ear_ear_1.0-SNAPSHOT]
SEVERE: Error: Unresolved <ejb-link>: TaskTool-ejb#ContextFacade

我使用 NetBeans 帮助器生成引用 session Bean 的本地接口(interface)的代码,它生成了 <ejb-local-ref> web.xml 中的部分对我来说。
@Local
public interface ContextFacadeLocal {
void create(Context context);
void edit(Context context);
void remove(Context context);
Context find(Object id);
List<Context> findAll();
List<Context> findRange(int[] range);
int count();
List<Context> findRootContexts();
}

@Stateless
public class ContextFacade extends AbstractFacade<Context> implements ContextFacadeLocal {
@PersistenceContext(unitName = "TaskToolPU")
private EntityManager em;

protected EntityManager getEntityManager() {
return em;
}

public ContextFacade() {
super(Context.class);
}

@Override
public List<Context> findRootContexts() {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Context> query = builder.createQuery(Context.class);
Root<Context> c = query.from(Context.class);
query.select(c).where(builder.isNull(c.get("parent")));
query.orderBy(builder.asc(c.get("id")));

TypedQuery<Context> q = em.createQuery(query);
return q.getResultList();
}
}

@FacesConverter(value = "contextConverter")
public class contextConverter implements Converter {

ContextFacadeLocal contextFacade = lookupContextFacadeLocal();

@Override
public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
return contextFacade.find(string);
}

@Override
public String getAsString(FacesContext fc, UIComponent uic, Object o) {ntityManager() {
return em;
}

public ContextFacade() {
super(Context.class);
}

@Override
public List<Context> findRootContexts() {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Context> query = builder.createQuery(Context.class);
Root<Context> c = query.from(Context.class);
query.select(c).where(builder.isNull(c.get("parent")));
query.orderBy(builder.asc(c.get("id")));

TypedQuery<Context> q = em.createQuery(query);
return q.getResultList();
}
}

@FacesConverter(value = "contextConverter")
public class contextConverter implements Converter {

ContextFacadeLocal contextFacade = lookupContextFacadeLocal();

@Override
public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
return contextFacade.find(string);
}

@Override
public String getAsString(FacesContext fc, UIComponent uic, Object o) {
return ((Context) o).getId().toString();
}

private ContextFacadeLocal lookupContextFacadeLocal() {
try {
javax.naming.Context c = new InitialContext();
//return (ContextFacadeLocal) c.lookup("java:global/com.oracle.eas_TaskTool-ear_ear_1.0-SNAPSHOT/com.oracle.eas_TaskTool-ejb_ejb_1.0-SNAPSHOT/ContextFacade!com.oracle.eas.ejbs.ContextFacadeLocal");
return (ContextFacadeLocal) c.lookup("java:comp/env/TaskTool-ejb#ContextFacade");

} catch (NamingException ne) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
throw new RuntimeException(ne);
}
}
}


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<ejb-local-ref>
<ejb-ref-name>ContextFacade</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>com.oracle.eas.ejbs.ContextFacadeLocal</local>
<ejb-link>TaskTool-ejb#ContextFacade</ejb-link>
</ejb-local-ref>
</web-app>

更新

为了清楚起见:

我根本没有 ejb-jar.xml。

使用 <ejb-link>TaskTool-ejb/ContextFacade</ejb-link><ejb-link>com.oracle.eas_TaskTool-ejb_ejb_1.0-SNAPSHOT/ContextFacade</ejb-link>作品。

请参阅下面的 bkail 答案以获取解释。非常感谢!

最佳答案

我在尝试部署我的应用程序时遇到了同样的问题,NetBeans 自己在我的 web.xml 中生成了这段代码。

检查你的 web.xml,看看你是否看到这个:

<ejb-local-ref>
<ejb-ref-name>appName</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<ejb-link>AppName#SomeClass</ejb-link>
</ejb-local-ref>

如果是这样,只需将其完全删除,它应该在之后部署。

关于jakarta-ee - 未解决 <ejb-link>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6369628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com