quinta-feira, 27 de novembro de 2008

Axis2 no Eclipse

Quando se corre o Axis2 Code Generator no eclipse e se obtém uma InvocationTargetException, pensa-se que é um problema nosso. Por incrível que pareça, até pode não ser. Depois de ter perdido horas neste erro, eis aqui a solução.

São necessários vários "artifícios" para se conseguir colocar o Axis2 Code Generator (versão 1.4.1) a funcionar no eclipse (versão europa).

Antes de mais referir que na realidade a versão 1.4.1 que se descarrega do site do Axis2 é a versão 1.3.0. E isto é um problema.

Para se conseguir gerar algo é necessário efectuar os seguintes passos no local onde está instalado o plugin no eclipse (...\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0):
  • Copiar para a pasta lib os jars seguintes:
- backport-util-concurrent-3.1.jar
- geronimo-stax-api_1.0_spec-1.0.1.jar
- jsr173_1.0_api.jar
  • Copiar o seguinte para o ficheiro plugin.xml

<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>
<library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">
<export name="*"/>
</library>
<library name="lib/jsr173_1.0_api.jar">
<export name="*"/>
</library>
  • Mudar no ficheiro plugin.xml a versão de 1.3.0 para 1.4.0
<plugin
id="Axis2_Codegen_Wizard"
name="Axis2 Codegen Wizard Plug-in"
version="1.4.0"
  • Alterar o nome da pasta do plugin para o número da nova versão (de Axis2_Codegen_Wizard_1.3.0 para Axis2_Codegen_Wizard_1.4.0)
E pronto adeus excepção e temos o eclipse a gerar que nem um doido. :-D

Actualização

Links para as libs

sexta-feira, 21 de novembro de 2008

Em que jar estás tu ó classe?

Há alturas em que é preciso descobrir em que jar está uma certa classe.
Para essas alturas temos o sítio web seguinte:

http://www.findjar.com/

Dá jeito. Dá mesmo muito jeito.

quinta-feira, 20 de novembro de 2008

Target runtime Apache Tomcat v5.5 is not defined - Parte II

Ás vezes quando se importa um projecto de eclipse, que tenha já uma configuração de Tomcat associada, o erro seguinte aparece:

Target runtime Apache Tomcat v5.5 is not defined

Para corrigir este erro é necessário um dos dois passos seguintes:
  1. Se no eclipse ainda não se tiver nenhum servidor configurado, então configurar um (Window->Preferences->Server->Installed Runtimes). Em princípio o problema fica resolvido quando se correr o projecto com o Run As -> Run on Server.
  2. Se o erro continuar, então efectuar o seguinte: sobre o projecto, carregando com o botão da direita, escolher Properties->Targeted Runtimes, e selecionar a checkbox ao lado do servidor Tomcat. Em princípio o erro desaparece.
  3. Se nenhum dos passos anteriores resultar então recorrer ao seguinte: Quando o eclipse se passa...

quarta-feira, 15 de outubro de 2008

Configurando o Eclipse Ganymede com o Weblogic

O servidor aplicacional Weblogic não vem com uma configuração disponível no eclipse Ganymede. Para ter o Weblogic disponível na configuração dos Servers no eclipse, é necessário fazer um update que está disponível no site:

https://eclipse-plugin.projects.dev2dev.bea.com/update

Depois de instalado, o eclipse já encontrará os servidores Weblogic.

segunda-feira, 13 de outubro de 2008

Cálculo de espaço ocupado na Base de Dados Oracle

A Base de Dados da Oracle, tem algumas ferramentas úteis que permitem calcular o espaço em disco que tabelas e índices virão a ocupar.

Cálculo de Espaço em Disco de Um Index

O código seguinte permite saber quanto espaço em disco irá ocupar um índice depois de criado.

set serveroutput on

DECLARE
ub NUMBER;
ab NUMBER;

BEGIN

DBMS_SPACE.CREATE_INDEX_COST('CREATE INDEX t_id ON ESQUEMA.NOME_DE_TABELA(id)',ub, ab, NULL);

DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));
DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));
END;
/

A tabela tem de existir previamente.

Substituir ESQUEMA e NOME_TABELA, pelo esquema e nome da tabela onde irá ser criado o índice.


Cálculo de Espaço em Disco Ocupado por uma Tabela

Quando se está a tentar saber quanto armazenamento é necessário para acomodar uma tabela, os códigos seguintes ajudam a determinar quanto espaço é necessário.

Cálculo Feito com Base no Tamanho Médio de uma Linha

O código seguinte permite saber, com base no tamanho médio de um registo na base de dados e no número de registos estimados, o tamanho de armazenamento necessário (em bytes) para acomodar uma tabela.

set serveroutput on

DECLARE
ub NUMBER;
ab NUMBER;

BEGIN

DBMS_SPACE.CREATE_TABLE_COST('USERS',45000,2000000,0,ub,ab);

DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));
DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));
END;
/

Onde,

USERS - Tablespace onde a tabela irá ser criada.
45000 - Tamanho médio de uma linha em bytes.
2000000 - Número total de linhas que a tabela irá conter.
0 - Espaço livre que a tabela deverá ter para novos inserts e updates.


Cálculo Feito com Base na Especificação de uma Tabela

O código seguinte permite saber o tamanho de armazenamento necessário para uma tabela, com a especificação fornecida e com o número de registos estimados.

set serveroutput on

DECLARE
ub NUMBER;
ab NUMBER;
cl sys.create_table_cost_columns;
BEGIN
cl := sys.create_table_cost_columns(
sys.create_table_cost_colinfo('VARCHAR2',100),
sys.create_table_cost_colinfo('CHAR',1),
sys.create_table_cost_colinfo('DATE',NULL),
sys.create_table_cost_colinfo('NUMBER',4)
);

DBMS_SPACE.CREATE_TABLE_COST('USERS',cl,2000000,0,ub,ab);

DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));
DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));
END;
/

Onde,

USERS - Tablespace onde a tabela irá ser criada.

cl - Definição da tabela cujo espaço é pretendido calcular.

2000000 - Número total de linhas que a tabela irá conter.

0 - Espaço livre que a tabela deverá ter para novos inserts e updates.





quarta-feira, 10 de setembro de 2008

Adicionando Itens aos Menus de Lançamento do Eclipse (XXX as)

A lógica de adicionar um novo item a um menu de Eclipse de lançamento (Run As, Debug As) deve ser feita de modo diferente de adicionar um item a um outro qualquer menu (seja menu, toolbal ou popupmenu).

Um item a ser colocado num menu de lançamento tem de estender

Forçar um Plug-In de Eclipse a Ser Carregado

Quando se desenvolve um plug-in para Eclipse (versão 3.3 ou superior) que necessita de adicionar itens a menus, e o estado destes itens dependem de condições (por exemplo a opção estar activa ou não), então, estas condições só serão verificadas se o plug-in já estiver sido carregado.

Para não obrigar o plug-in a ser carregado cada vez que o Eclipse é iniciado (gastando recursos sem necessidade), existem 2 opções que permitem que as condições sejam verificadas, mesmo se o plug-in ainda não estiver sido carregado, quando os itens têm de ser mostrados em menus:
- Uma é ter activa a opção - Activate this plug-in when one of its classes is loaded
- Outra é ter a opção na condição forcePlugInActivation a true

A opção forcePluginActivation só aparece para condições do tipo test. Se os menus estiverem a ser mal disponibilizados, pode-se forçar a criação de um teste "dummy" só para obrigar a carregar o plug-in, fazendo com que a partir daí os menus sejam correctamente disponibilizados.