Redirecionar classe de library utilizada no projeto

2 respostas
F

Pessoal,
Tenho o seguinte problema. utilizado um .jar, precisamente o mondrian.jar(https://github.com/pentaho/mondrian), e preciso customizar determinada classe desse jar.
Sei que alguns componentes ou arquivos de mensagens são configuráveis dentro do EE. Como no exemplo abaixo, que encontrei na internet .

<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/bookstore.taglib.xml</param-value>
</context-param>

A questão é:
Conseguiria eu redirecionar o acesso a determinada classe utilizando o web.xml ou algum outro arquivo?

Exemplo:
Tenho que falar par ao meu mondrian.jar, que é uma library, que, ao invés de acessar o package mondrian.spi.impl.MicrosoftSqlServerDialect acessar o br.com.meuprojeto.MicrosoftSqlServerDialect!

Consigo fazer isso.

O mondrian também conta com um arquivo " /META-INF/services/mondrian.spi.Dialect". Cosneguiria alterar esse caminho dentro da minha aplicação? falando para ele utilizar o arquivo que eu desejar? Dentro do mesmo encontro os caminho dos Dialects .

2 Respostas

aix

Se eu entendi o que deseja e se você usa CDI eu penso que @Specializes seria uma boa forma de fazer o que deseja, veja exemplo:

https://docs.oracle.com/javaee/6/tutorial/doc/gjsdf.html

Quanto ao acesso ao arquivo é da biblioteca encontrar, não sei como esta a arquitetura do seu projeto, mas se for um projeto Maven você pode adiconar uma cópia do arquivo em main/resources/file.xml fazer as alterações que deseja.

F

aix, o que eu acabei fazendo foi os eguinte, e vi essa solução em uma resposta do stackoverflow.com.
Eu tinha o classe java e a única coisa que eu precisava ela compila-la para class com o objetivo de substituir dentro do .jar porém, se apenas colo o código, sem ter as libraries, ele simplesmente da erro e nada acontece.

O que fiz foi:

1 - Criar um novo projeto

2 - Criei a mesma estrutura do package, existente na classe;

3 - Importei o jar do projeto que estava trabalhando, no caso o mondrian.jar

4 - Modifiquei a classe que gostaria de modificar;

5 - exportei;

6- copiei a classe gerada no meu exporte e substituir dentro do mondrian.jar, utilizando o winrar.

Espero que esta solução possa ajudar muita gente aqui presente.

Obrigado a todos, no caso aix, por ter me dado a dica.

Criado 15 de fevereiro de 2016
Ultima resposta 15 de fev. de 2016
Respostas 2
Participantes 2