السلام عليكم،،
أستخدم 4.1 Net beans و Sun Application Server 8.1،، وحاليا أقوم بتجربة البذور EJB،، وصنعت أول SessionBean واسمها hussam.beans.FirstTestBean..
المصنع البعيد Remote Home: اسمه hussam.beans.FirstTestRemoteHome...
وضعت هذه البذرة في الخادم Sun Application Server
صنعت برنامج يستخدم هذه البذرة... لكن واجهتني مشكلة في الحصول على مصنع البذرة RemoteHome..
طبعا نستعمل InitialContext للحصول على المصنع، لكن ما هو الاسم الذي أبحث عنه للحصول على هذا المصنع؟؟ ومن أين أعرفه؟؟
context=new InitialContext();
home = (ChatterRemoteHome)context.lookup("java:comp/env/hussam/beans/FirstTestRemoteHome");
//أم ماذا،، ما هو الاسم الذي يفترض أن يذهب هنا؟طبعا هذا هو الخطأ الذي يخرج من الأمر السابق:
javax.naming.NameNotFoundException com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:668), com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:132), com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:288), javax.naming.InitialContext.lookup(InitialContext.java:351), org.apache.jsp.index_jsp._jspService(index_jsp.java:86), org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105), javax.servlet.http.HttpServlet.service(HttpServlet.java:860), org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:336), org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301), org.apache.jasper.servlet.JspServlet.service(JspServlet.java:251), javax.servlet.http.HttpServlet.service(HttpServlet.java:860), sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method), sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39), sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25), java.lang.reflect.Method.invoke(Method.java:585), org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249), java.security.AccessController.doPrivileged(Native Method), javax.security.auth.Subject.doAsPrivileged(Subject.java:517), org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282), org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165), org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:257), org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:55), org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:161), java.security.AccessController.doPrivileged(Native Method), org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157), org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:263), org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551), org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:225), org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173), org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551), org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161), org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551), org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:132), org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551), org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:933), org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:185), com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:653), com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:534), com.sun.enterprise.web.connector.grizzly.ProcessorTask.doTask(ProcessorTask.java:403), com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:55)]
وهذا هو شرح البذرة:
<?xml version="1.0" encoding="UTF-8"?> <ejb-jar version="2.1" 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/ejb-jar_2_1.xsd"> <display-name>EJBFirstTest</display-name> <enterprise-beans> <session> <display-name>FirstTestSB</display-name> <ejb-name>FirstTestBean</ejb-name> <home>hussam.beans.FirstTestRemoteHome</home> <remote>hussam.beans.FirstTestRemote</remote> <local-home>hussam.beans.FirstTestLocalHome</local-home> <local>hussam.beans.FirstTestLocal</local> <ejb-class>hussam.beans.FirstTestBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>FirstTestBean</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>