2015-01-30 5 views
0

Got это исключение при попытке подключиться к локальному серверу JBoss (wildfly-8.2.0.Final)Не удается подключиться к серверу JBoss - Ошибка выполнения операции с состоянием ОЖИДАНИЯ

javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException: Operation failed with status WAITING] 
    at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36) 
    at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121) 
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684) 
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) 
    at javax.naming.InitialContext.init(InitialContext.java:244) 
    at javax.naming.InitialContext.<init>(InitialContext.java:216) 
    at com.sample.CalculatorIntegrationTestCase.obtainProxyReferences(CalculatorIntegrationTestCase.java:34) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) 
Caused by: java.lang.RuntimeException: Operation failed with status WAITING 
    at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:89) 
    at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56) 
    at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateCachedNamingStore(InitialContextFactory.java:166) 
    at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.java:139) 
    at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104) 
    ... 18 more 

свойства JNDI следующие:

@BeforeClass 
    public static void obtainProxyReferences() throws Throwable { 

     Properties properties = new Properties(); 
     properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 
     properties.put(Context.PROVIDER_URL, "remote://localhost:4447"); 
     properties.put("jboss.naming.client.ejb.context", true); 
     properties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); 
     properties.put(Context.SECURITY_PRINCIPAL, "testuser"); 
     properties.put(Context.SECURITY_CREDENTIALS, "!Test1"); 
     namingContext = new InitialContext(properties); 

     bean = (MeBeanImpl) namingContext.lookup(JNDI_NAME); 
    } 

Telnet также говорит, что он не может подключиться к серверу с портом 4447. Я открыл этот порт в брандмауэре, но это не помогло.

ответ

0

По умолчанию WildFly использует 8080 как удаленный порт. API-интерфейс EJB-клиента использует http-порт с функцией обновления HTTP для связи с сервером для удаленного вызова.

Например:

Properties jndiProps = new Properties(); 
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 
jndiProps.put(Context.PROVIDER_URL,"http-remoting://localhost:8080"); 
jndiProps.put("jboss.naming.client.ejb.context", true); 
jndiProps.put(Context.SECURITY_PRINCIPAL, "testuser"); 
jndiProps.put(Context.SECURITY_CREDENTIALS, "!Test1"); 

// create a context passing these properties 
Context ctx = new InitialContext(jndiProps); 
// lookup 
ctx.lookup(JNDI_NAME); 

См: Remote EJB invocations via JNDI - EJB client API or remote-naming project

+1

javax.naming.NamingException: Не удалось подключиться к любому серверу. Серверы пытались: [http-remoting: // localhost: 8080] – Dmitrii

0

Если вы используете Maven, не забудьте добавить эту зависимость:

<dependency> 
    <groupId>org.wildfly</groupId> 
    <artifactId>wildfly-ejb-client-bom</artifactId> 
    <version>8.0.0.Final</version> 
    <type>pom</type> 
    </dependency> 

Для JMS, вам нужно они также:

<dependency> 
    <groupId>org.hornetq</groupId> 
    <artifactId>hornetq-jms-client</artifactId> 
    <version>2.2.13.Final</version> 
    </dependency> 
    <dependency> 
    <groupId>org.hornetq</groupId> 
    <artifactId>hornetq-core-client</artifactId> 
    <version>2.2.13.Final</version> 
    </dependency> 

Это должна быть единственная зависимость, в которой вы нуждаетесь.

0

вместо использования "удаленный: // локальный: 4447" использовать "HTTP-Remoting: // локальный: 8080"

properties.put(Context.PROVIDER_URL, "http-remoting://localhost:8080"); 

При настройке JNDI свойства в коде, поиск имен не должно содержать ejb:

JNDI_NAME = "ear-name/ejb-name/beanClass!beanInterface.fullpath"); 
0

изменить ваше имущество

properties.put (Context.PROVIDER_URL, "удаленный: // локальный: 4447");

в

properties.put (Context.PROVIDER_URL, "HTTP-Remoting: // локальный: 4447");