Qual arquivos baixar? os de dentro ou fora das pastas? são os mesmos?
O manual de instalação não bate, falta arquivos, e daí, como fica?
Acredito que não seja somente eu que estou com estas dúvidas.
Autor: Fabiano Buss
Qual arquivos baixar? os de dentro ou fora das pastas? são os mesmos?
O manual de instalação não bate, falta arquivos, e daí, como fica?
Acredito que não seja somente eu que estou com estas dúvidas.
Autor: Fabiano Buss
99 comentários
Aguardo retorno, obrigado
onde tinha: conn.bind(LDAPConnection.LDAP_V3, "cn=" + user + "," + Util.getLDAPBaseDn(), pass.getBytes("ISO-8859-1"));
coloquei : conn.bind(LDAPConnection.LDAP_V3, user + "@exemplo.com", pass.getBytes("ISO-8859-1"));
então agora o ldap está funcionando tudo ok, o problema é que no método de sincronizar o ldap ele tenta acessar alguma propriedade do arquivo config.properties e me retorna um erro que não tenho como descobrir a razão, visto que a parte do develox não está com código fonte.
erro:
[BOOT] WARN: Please use a separate 'OJB-logging.properties' file to specify your logging settings
com.miranteinfo.xml.util.MRuntimeException: javax.naming.NameNotFoundException: recurso de nome 'jdbc/default'
at info.mirante.develox.trans.BaseRecursos.getConnection(BaseRecursos.java:63)
at info.mirante.develox.trans.BaseRecursos.getConnection(BaseRecursos.java:73)
at com.miranteinfo.transxml.MConnectionFactory.lookupConnection(MConnectionFactory.java:21)
at org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.getConnection(Unknown Source)
at org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStatement(Unknown Source)
at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown Source)
at org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(Unknown Source)
at org.apache.ojb.broker.accesslayer.RsIterator.(Unknown Source)
at org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Unknown Source)
at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source)
at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source)
at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Unknown Source)
at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(Unknown Source)
at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(Unknown Source)
at br.gov.exercito.sped.persistencia.UsuarioHome.query(UsuarioHome.java:94)
at br.gov.exercito.sped.util.Util.getUsuarioByLogin(Util.java:1074)
at br.gov.exercito.sped.administracao.sessao.SincronizarLDAP.executar(SincronizarLDAP.java:105)
at com.miranteinfo.transxml.RoteadorSoapTransxml.executarFeature(RoteadorSoapTransxml.java:281)
at com.miranteinfo.transxml.RoteadorSoapTransxml.callImpl(RoteadorSoapTransxml.java:242)
at com.miranteinfo.soap.trans.rt.RoteadorSoap.call(RoteadorSoap.java:92)
at com.miranteinfo.soap.trans.rt.SOAPMiranteFactory.call(SOAPMiranteFactory.java:311)
at com.miranteinfo.soap.trans.rt.SOAPMiranteFactory$1.executar(SOAPMiranteFactory.java:277)
at com.miranteinfo.soap.trans.rt.SOAPMiranteFactory$1.executar(SOAPMiranteFactory.java:280)
at info.mirante.develox.trans.ContextoTransacao.executarUsoInterno(ContextoTransacao.java:191)
at com.miranteinfo.soap.trans.rt.SOAPMiranteFactory.call(SOAPMiranteFactory.java:275)
at com.miranteinfo.soap.trans.rt.SOAPMiranteFactory.call(SOAPMiranteFactory.java:211)
at com.miranteinfo.soap.light.SOAPLight.call(SOAPLight.java:330)
at com.miranteinfo.soap.light.SOAPLight.call(SOAPLight.java:296)
at br.gov.exercito.sped.administracao.sessao.FiltroAcesso.sincronizarLDAP(FiltroAcesso.java:321)
at br.gov.exercito.sped.administracao.sessao.FiltroAcesso.efetuarLogon(FiltroAcesso.java:256)
at br.gov.exercito.sped.administracao.sessao.FiltroAcesso.doFilter(FiltroAcesso.java:140)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.naming.NameNotFoundException: recurso de nome 'jdbc/default'
at info.mirante.develox.trans.ContextoTransacao.lookup(ContextoTransacao.java:298)
at info.mirante.develox.trans.ContextoTransacao.lookup(ContextoTransacao.java:271)
at info.mirante.develox.trans.BaseRecursos.lookup(BaseRecursos.java:49)
at info.mirante.develox.trans.BaseRecursos.getConnection(BaseRecursos.java:60)
... 47 more Se alguém tem alguma informação a respeito de como corrigir esse erro, estou na escuta =)
- Na classe FiltroAcesso.java, foi necessário mudar o modo de acesso ao LDAP, pois estou acessando um servidor AD.
No método autenticarLDAP, foi necessário mudar a String de conexão:
Era:
conn.bind(LDAPConnection.LDAP_V3, "cn=" + user + "," + Util.getLDAPBaseDn(), pass.getBytes("ISO-8859-1"));
Passou a ser:
conn.bind(LDAPConnection.LDAP_V3, user + "@dominio.com", pass.getBytes("ISO-8859-1"));
Com isso foi possível fazer a autenticação no AD. Mas também é necessário poder fazer buscas no AD, então deve-se mudar o método getNomeCompletoLDAP, na classe FeatureLDAP.java, além de adicionar uma String static no começo da classe:
private static final String LDAP_ATTR_NAME = "name";
Na String de conexão, foram feitas as seguintes mudanças:
Era:
lc.bind(LDAPConnection.LDAP_V3, Util.getLDAPManagerCn() + "," + Util.getLDAPBaseDn(), Util.getLDAPManagerPassword().getBytes("UTF8"));
Ficou:
lc.bind(LDAPConnection.LDAP_V3, Util.getLDAPManagerCn() + "@dominio.com ", Util.getLDAPManagerPassword().getBytes("ISO-8859-1")); E depois, deve-se mudar o modo de fazer a busca no AD:
LDAPSearchResults searchResults = lc.search(Util.getLDAPBaseDn(), LDAPConnection.SCOPE_ONE, "(objectClass=*)", new String[] { LDAP_ATTR_DISPLAY_NAME, LDAP_ATTR_GIVEN_NAME,LDAP_ATTR_SURNAME }, false);
Passa a ser:
String filter = "(objectClass=user)";
LDAPSearchResults searchResults = lc.search(Util.getLDAPBaseDn(), LDAPConnection.SCOPE_SUB,filter, new String[] {LDAPConnection.ALL_USER_ATTRS }, false);
Vale salientar que é possível diminuir a quantidade de campos retornados pelo servidor LDAP, mas como eu estava fazendo testes, prefer retornar todos os campos e ver o que estava vindo. O while que segue a busca do LDAP deve ser modificado para atender as mudanças que foram feitas no restante do código:
while (searchResults.hasMore()) { LDAPEntry entry = searchResults.next();
LDAPAttributeSet set = entry.getAttributeSet(); String cn = "";
LDAPAttribute at= set.getAttribute("sAMAccountName");
if(at!=null){
cn = at.getStringValue();
} if (cn.equalsIgnoreCase(nomeUsr)) { // achou o usuário! // se ele não tiver o atributo 'displayName', tenta pegar o primeiro e último
// nomes. Se não tiver nenhum desses, usa o nome de usuario :/ LDAPAttribute nomeCompleto = entry.getAttribute(LDAP_ATTR_NAME);
LDAPAttribute primeiroNome = entry.getAttribute(LDAP_ATTR_GIVEN_NAME);
LDAPAttribute sobrenome = entry.getAttribute(LDAP_ATTR_SURNAME); if (nomeCompleto != null && nomeCompleto.getStringValue().trim().length() > 0) {
return nomeCompleto.getStringValue();
} // se não tem nome completo, tenta montar a partir o 1o e ultimo nomes. StringBuffer nome = new StringBuffer(); if (primeiroNome != null && primeiroNome.getStringValue().trim().length() > 0) {
nome.append(primeiroNome.getStringValue()).append(" ");
}
if (sobrenome != null && sobrenome.getStringValue().trim().length() > 0) {
nome.append(sobrenome.getStringValue());
} return (nome.length() == 0 ? nomeUsr : nome.toString());
}
}
(Não vou postar o conteúdo anterior do bloco, pra não ficar muito grande o texto). Foi necessário também mudar os arquivos de configuração do banco de dados, onde foi necessário adicionar as seguintes linhas dentro da seção que descreve o usuário:
<field-descriptor column="cd_patente" jdbc-type="INTEGER" name="cdPatente" nullable="true"/>
<field-descriptor column="cd_especialidade" jdbc-type="INTEGER" name="cdEspecialidade" nullable="true"/>
<field-descriptor column="in_assina" jdbc-type="VARCHAR" name="inAssina" nullable="true"/>
<field-descriptor column="in_despacha" jdbc-type="VARCHAR" name="inDespacha" nullable="true"/>
<field-descriptor column="in_aprova" jdbc-type="VARCHAR" name="inAprova" nullable="true"/>
<field-descriptor column="in_arquiva" jdbc-type="VARCHAR" name="inArquiva" nullable="true"/>
<field-descriptor column="in_imprime" jdbc-type="VARCHAR" name="inImprime" nullable="true"/>
<field-descriptor column="in_doc_sigiloso" jdbc-type="VARCHAR" name="inDocSigiloso" nullable="true"/>
<field-descriptor column="in_doc_secreto" jdbc-type="VARCHAR" name="inDocSecreto" nullable="true"/>
<field-descriptor column="in_doc_ultra_secreto" jdbc-type="VARCHAR" name="inDocUltraSecreto" nullable="true"/>
<field-descriptor column="in_doc_reservado" jdbc-type="VARCHAR" name="inDocReservado" nullable="true"/>
Pois esses atributos do banco não estavam sendo mapeados.
E se alguém não conseguiu criar o banco, eu usei os arquivos que estão no diretório \src\bd\versao2\novo.
Não lembro quais usei, mas criei o banco e fiz os inserts iniciais a partir de scripts nesse diretório.
Por enquanto o sistema está rodando aqui, mas não fiz testes ainda, só de ter conseguido fazer ele rodar já estou meio satisfeito =)
Espero que tenha ajudado =)
Quem tiver mais dicas, estamos todos na escuta! Até mais.