이 EJB 예제를 JBoss 7에서 실행하려고하지만 항상 NameNotFoundException을 발생시킵니다.JBoss 7에서 실행되는 EJB 3.1의 JNDI 이름
테스트하려고하는 EJB는 다음과 같습니다. 계산기. 나는 보스에 7 쇼를 배포 할 때 서버 콘솔에서이 다음 라인 :
package demo;
import javax.ejb.Stateless;
@Stateless
public class Calculator implements CalculatorRemote
{
@Override
public double sum(double a, double b)
{
return a+b;
}
}
그리고 원격 인터페이스 코드 :
java:global/CalculadoraProject/Calculator!demo.CalculatorRemote
java:app/CalculadoraProject/Calculator!demo.CalculatorRemote
java:module/Calculator!demo.CalculatorRemote
java:jboss/exported/CalculadoraProject/Calculator!demo.CalculatorRemote
java:global/CalculadoraProject/Calculator
java:app/CalculadoraProject/Calculator
java:module/Calculator
계산기 빈 코드는 이것이다
package demo;
import javax.ejb.Remote;
@Remote
public interface CalculatorRemote
{
public double sum(double a,double b);
}
JNDI를 통해 EJB를 연결해야하는 주 코드는 다음과 같습니다.
package demo;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
public class Test
{
public static void main(String[] args) throws Exception
{
Context ctx=getInitialContext();
String jndiName="?????????????";
CalculatorRemote c = (CalculatorRemote)ctx.lookup(jndiName);
System.out.println(c.sum(2,2));
}
private static Context getInitialContext() throws Exception
{
Properties p=new Properties();
p.put("java.naming.factory.initial","org.jboss.naming.remote.client.InitialContextFactory");
p.put("java.naming.provider.url","remote://localhost:4447");
return new InitialContext(p);
}
}
첫 번째 오류는 인증에 실패했습니다. USR : 테스트, PWD : 그래서, 서버에 "ApplicationRealm"의 "관리 사용자"사용자 생성 test123를 다음과 같이보고() getInitialContext을 수정
Properties p=new Properties();
p.put("java.naming.factory.initial","org.jboss.naming.remote.client.InitialContextFactory");
p.put("java.naming.provider.url","remote://localhost:4447");
p.put(Context.SECURITY_PRINCIPAL,"test");
p.put(Context.SECURITY_CREDENTIALS,"test123");
다음 오류는 다음과 같습니다 javax의를. naming.NameNotFoundException : ????????????
그럼, 묻고 싶습니다. 내 이름을 Calculator Bean을 조회 할 때 사용해야합니까?
감사합니다.
감사합니다. 불행히도 여러분이 나열한 이름 중 어느 것도 작동하지 않습니다. 'endpoint.name = 클라이언트 엔드 포인트 remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED = 거짓 원격 : 나는이 클라이언트의 classpath에있는 파일을 jboss-ejb-client.properties 추가하여 시도 원격 .connections = 기본 remote.connection.default.host = 10.20.30.40 remote.connection.default.port = 4447 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS = 거짓 .connection.default.username = test remote.connection.default.password = test123' 여전히 동일하게 표시됩니다 : NameNotFoundException. – pablosz
로컬 클라이언트와 EJB에 많은 문제가 있다는 것을 기억합니다. 프론트 엔드가 아직 준비되지 않은 경우 서블릿을 사용하여 테스트를 시작한 이유는 무엇입니까? 보시다시피, 모든 것이 JNDI 이름에 포함되는 것은 아니므로, EJB가을 가지지 않는다면, ejb :/CalculadoraProject // Calculator! demo.CalculatorRemote와 같이 보일 것입니다. 사용하려고 시도한 JNDI 이름은 무엇입니까? –
Candyman
ejb :/CalculadoraProject // 계산기! demo.CalculatorRemote가 작동해야합니다. 그렇지 않으면 일부 구성이 꺼져 있거나 라이브러리가 없습니다. – Candyman