Bom dia pessoal, preciso muito da ajuda de vocês, não sei mais o que fazer. Vou descrever o meu cenário.
Tenho 2 aplicações hospedadas em servidores de aplicação jboss-eap-6.1, através da injeção de EJB remoto preciso que uma aplicação utilize um EJB que se encontra na outra aplicação.
Então eu inicio um Jboss, com a aplicação A.
E agora preciso executar o EJB remotamente, tenho o seguinte codigo:
List<Imovel> lista = new ArrayList<Imovel>();
try
{
Properties props = new Properties();
props.put("remote.connections", "default");
props.put("remote.connection.default.port", "4448");
props.put("remote.connection.default.host", "localhost");
props.put("remote.connection.default.username", "ejb");
props.put("remote.connection.default.password", "ejb@1234");
props.put("remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS", "false");
props.put("remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT", "false");
props.put("remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED", "false");
EJBClientConfiguration ejbClientConfiguration = new PropertiesBasedEJBClientConfiguration(props);
ContextSelector<EJBClientContext> contextSelector = new ConfigBasedEJBClientContextSelector(ejbClientConfiguration);
EJBClientContext.setSelector(contextSelector);
Properties jndiProperties = new Properties();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
jndiProperties.put("jboss.naming.client.ejb.context", "true");
Context context = new InitialContext(jndiProperties);
IWSTMIPTUSiap wstmIptu = (IWSTMIPTUSiap) context.lookup("ejb:siapconnector-ear/siapconnector-ejb//WSTMIPTUSiap!" + IWSTMIPTUSiap.class.getCanonicalName());
FiltroImovel filtro = new FiltroImovel();
filtro.setCpfCnpj("123456789");
Contribuinte contribuinte = wstmIptu.listarImoveis(filtro);
System.out.println("Nome: " + contribuinte.getNome());
System.out.println("CPF: " + contribuinte.getCpfCnpj());
System.out.println("CUC: " + contribuinte.getNumeroCuc());
System.out.println("Endereço: " + contribuinte.getLogradouro() + ", " + contribuinte.getNumero() + ", " + contribuinte.getBairro() + "\n");
System.out.println("Imóveis: ");
for (Imovel imovel : contribuinte.getImoveis())
{
System.out.println("Inscrição: " + imovel.getInscricao() + " - " + imovel.getLogradouro() + ", " + imovel.getNumero() + ", " + imovel.getBairro() + ", " + imovel.getComplemento());
}
} catch (Exception e)
{
e.printStackTrace();
}
return lista;
Quando eu executo esse codigo em um main(), ele funciona perfeitamente, conecta la no outro jboss e executa o método listarImoveis().
Porém agora, quando eu inicio o jboss onde se encontra essa aplicação cliente, e executo o mesmo codigo, chamando de um ManagedBean por exemplo.
Quando ele executa a linha:
EJBClientConfiguration ejbClientConfiguration = new PropertiesBasedEJBClientConfiguration(props);
Printa no log o seguinte:
10:58:21,245 WARN [org.xnio.option.parse] (http-/0.0.0.0:8080-1) Invalid option 'org.xnio.Options.SSL_ENABLED' in property 'remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED': java.lang.IllegalArgumentException: Class 'org.xnio.Options' not found
10:58:21,250 WARN [org.xnio.option.parse] (http-/0.0.0.0:8080-1) Invalid option 'org.xnio.Options.SASL_POLICY_NOANONYMOUS' in property 'remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS': java.lang.IllegalArgumentException: Class 'org.xnio.Options' not found
10:58:21,254 WARN [org.xnio.option.parse] (http-/0.0.0.0:8080-1) Invalid option 'org.xnio.Options.SASL_POLICY_NOPLAINTEXT' in property 'remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT': java.lang.IllegalArgumentException: Class 'org.xnio.Options' not found
E logo após executando a linha:
ContextSelector<EJBClientContext> contextSelector = new ConfigBasedEJBClientContextSelector(ejbClientConfiguration);
Printa o seguinte log:
11:02:10,569 ERROR [org.jboss.remoting.remote.connection] (Remoting "config-based-ejb-client-endpoint" read-1) JBREM000200: Remote connection failed: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
11:02:10,576 WARN [org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector] (http-/0.0.0.0:8080-1) Could not register a EJB receiver for connection to localhost:4448: java.lang.RuntimeException: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at org.jboss.ejb.client.remoting.IoFutureHelper.get(IoFutureHelper.java:91) [jboss-ejb-client-1.0.21.Final-redhat-1.jar:1.0.21.Final-redhat-1]
não vou colocar o log inteiro por limitaçao do GUJ em 32000 caracteres.
Mais adiante quando executa a linha:
EJBClientContext.setSelector(contextSelector);
Cai no catch e printa o seguinte log:
java.lang.SecurityException: EJBCLIENT000021: EJB client context selector may not be changed
at org.jboss.ejb.client.EJBClientContext.setSelector(EJBClientContext.java:210)
at br.com.ejbclientside.programmatically.ClientServiceProgrammatically.listarImoveis(ClientServiceProgrammatically.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at
não vou colocar o log inteiro por limitaçao do GUJ em 32000 caracteres.
Eu não sei mais o que fazer, pq o mesmo codigo funciona executando localmente em um main() e quando é executado a partir de um servidor de aplicação jboss não funcionar?
Por favor me ajudem!!
Obrigado.