Jakarta ee 从web.xml并使用下面的全局名称是有效的。有人能告诉我为什么web.xml中的部分会导致错误吗?NetBeans是否生成了错误的代码?java:global/com.oracle.eas_TaskTool-ejb_ejb_1.0-SNAPSHOT/Co
Jakarta ee 从web.xml并使用下面的全局名称是有效的。有人能告诉我为什么web.xml中的部分会导致错误吗?NetBeans是否生成了错误的代码?java:global/com.oracle.eas_TaskTool-ejb_ejb_1.0-SNAPSHOT/Co,jakarta-ee,java-ee-6,ejb-3.1,Jakarta Ee,Java Ee 6,Ejb 3.1,从web.xml并使用下面的全局名称是有效的。有人能告诉我为什么web.xml中的部分会导致错误吗?NetBeans是否生成了错误的代码?java:global/com.oracle.eas_TaskTool-ejb_ejb_1.0-SNAPSHOT/ContextFacade!com.oracle.eas.ejbs.ContextFacadeLocalbkail,我根本没有ejb-jar.xml。使用TaskTool ejb/ContextFacade或com.oracle.eas_TaskT
从web.xml并使用下面的全局名称是有效的。有人能告诉我为什么web.xml中的部分会导致错误吗?NetBeans是否生成了错误的代码?java:global/com.oracle.eas_TaskTool-ejb_ejb_1.0-SNAPSHOT/ContextFacade!com.oracle.eas.ejbs.ContextFacadeLocalbkail,我根本没有ejb-jar.xml。使用TaskTool ejb/ContextFacade或com.oracle.eas_TaskTool-ejb_ejb_1.0-SNAPSHOT/ContextFacade都可以工作。您能解释一下使用#或/和为什么我需要web.xml中的这一部分之间的区别吗?#语法是#,其中uri是EAR中的物理JAR名称,ejb名称是bean名称(默认值是带注释ejb的短类名)。/syntax是/,其中模块名在ejb-jar.xml中指定(默认为不带扩展名的URI)。你能详细解释一下“为什么我需要web.xml中的这个部分”是什么意思吗?你是说整个ejb本地引用还是ejb链接?我是说ejb-local-ref.Glassfish 3.1似乎不需要它。ejb本地引用声明了一个允许查找的引用(“java:comp/env/ContextFacade”)。如果您的代码中没有任何东西在使用它(或者您在其他地方有一个@EJB(name=“ContextFacade”),那么您就不需要EJB-local-ref。我不知道是什么触发了netbeans这样做,这是在开发Web服务时第一次发生。。。
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
@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-link>TaskTool-ejb.jar#ContextFacade</ejb-link>
<ejb-link>TaskTool-ejb/ContextFacade</ejb-link>
SEVERE: Exception while deploying the app [.....] : Error: Unresolved <ejb-link>: #NotifyMe
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 Servlet 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
<sun-web-app error-url="">
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
<description>Keep a copy of the generated servlet class' java code.</description>
</property>
</jsp-config>
</sun-web-app>
<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>
<ejb-link>MyEjb.jar#MyEJB</ejb-link>
<ejb-link>MyEJB</ejb-link>