EJB를 처음 사용합니다. 나는 java_for_web_with_servlets_jsp_and_ejb 책에서 예제를 시도했다.클라이언트 클래스를 사용하여 동일한 컴퓨터에서 ejb를 호출 할 수 없습니다.
AdderHome.java을package com.brainysoftware.ejb;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface Adder extends EJBObject{
public int add(int a,int b) throws RemoteException;
}
AdderBean.java
package com.brainysoftware.ejb;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class AdderBean implements SessionBean{
public int add(int a, int b){
System.out.println("From AdderBean");
return (a+b);
}
@Override
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
@Override
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
@Override
public void ejbRemove() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
@Override
public void setSessionContext(SessionContext arg0) throws EJBException,
RemoteException {
// TODO Auto-generated method stub
}
}
:
Adder.java : 다음 코드는 두 개의 정수를 추가하는 세션이었다라고 가산기를 생성
package com.brainysoftware.ejb; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface AdderHome extends EJBHome{ Adder create() throws RemoteException, CreateException; }
다음과 같이 1,363,210 배포 설명은 다음과 같습니다
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="3.1" 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/ejb-jar_3_1.xsd">
<description>Your first EJB application</description>
<display-name>Adder Application</display-name>
<enterprise-beans>
<session>
<ejb-name>Adder</ejb-name>
<home>com.brainysoftware.ejb.AdderHome</home>
<remote>com.brainysoftware.ejb.Adder</remote>
<ejb-class>com.brainysoftware.ejb.AdderBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
- 나는이 프로젝트의 jar 파일을 생성하고 Tomcat의 lib에 항아리를 배치했다.
이제, 클라이언트에 대한 I는 가산기 콩 사용하는 클래스 BeanClient.java 갖는 동적 웹 프로젝트 생성 :
수입 java.rmi.RemoteException을을; 가져 오기 java.util.Properties; import javax.ejb.CreateException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import com.brainysoftware.ejb.Adder; import com.brainysoftware.ejb.AdderHome; 가져 오기 javax.rmi.PortableRemoteObject;
공용 클래스 BeanClient { public static void main (String [] args) { Properties props = new Properties(); props.put (Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put (Context.PROVIDER_URL, "localhost : 1099"); 시도 { InitialContext jnic = 새 InitialContext (소품); System.out.println ("컨텍스트 가져 오기"); 개체 ref = jnic.lookup ("Adder"); System.out.println ("참조 정보"); AdderHome home = (AdderHome) PortableRemoteObject.narrow (ref, AdderHome.class); 덧셈기 덧셈기 = home.create(); System.out.println ("2 및 5 추가 :"+ adder.add (2,5)); } catch (NamingException e) { System.out.println (e.toString()); } catch (CreateException e) { System.out.println (e.toString()); } catch (RemoteException e) { System.out.println (e.toString());
가져 오기 컨텍스트 javax.naming의 : 일식이 클래스를 실행에 }
} }
, 나는 다음과 같은 오류가 발생합니다.CommunicationException : localhost : 1099 및 발견으로 오류가 발생했습니다 : javax.naming.CommunicationException : Receive timed out [루트 예외는 java.net.SocketTimeoutException : Receive timed out]입니다. [루트 예외는 javax. naming.CommunicationException : 서버 localhost에 연결하지 못했습니다 : 1099 [루트 예외가 javax.naming.ServiceUnavailableException : 서버 localhost에 연결하지 못했습니다 : 1099 [루트 예외 java.net.ConnectException : 연결이 거부되었습니다 : 연결]]
도와 주시겠습니까?