[ejbs/jboss3.2] Acesso local

4 respostas
_fs

Olá, boa tarde.

Estou apanhando um bocado para fazer o acesso local de um session bean a um entity bean.

A partir de uma app de testes, consigo acessar o session bean tranquilamente.

O problema é que, de dentro do session bean, só consigo referência à interface remota do entity bean, mas não à local.

No meu session bean, faço o seguinte:

Properties prop = new Properties();
		prop.put( Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory" );
		prop.put( Context.PROVIDER_URL, "localhost:1099" );
		
		try
		{
			Context ctx = new InitialContext( prop );
			Object ref = ctx.lookup( "CustomerBean" );
			System.out.println( ref.toString() );
			CustomerLocalHome customerHome = ( CustomerLocalHome ) ref;
...

No log do Jboss, o meu System.out imprime

[STDOUT] CustomerBeanHome

E o ClassCastException se dá na linha seguinte, quando tento transformar uma referencia ao objeto CustomerBeanHome em CustomerLocalHome.

No jar com todos os ejbs, o ejb-jar.xml está assim:

<session>
			<ejb-name>CustomerSessionBean</ejb-name>
			<jndi-name>CustomerSessionBean</jndi-name>
			
			<home>customer.customersession.CustomerSessionHome</home>
			<remote>customer.customersession.CustomerSession</remote>
			<ejb-class>customer.customersession.CustomerSessionBean</ejb-class>
			<session-type>Stateless</session-type>
			<transaction-type>Container</transaction-type>

			<ejb-local-link>
				<ejb-link-name>CustomerBean</ejb-link-name>
				<ejb-link-type>Entity</ejb-link-type>
				<local-home>customer.customerbmp.CustomerLocalHome</local-home>
				<local>customer.customerbmp.CustomerLocal</local>
				<ejb-link>customer.customerbmp.CustomerBean</ejb-link>
			</ejb-local-link>
		</session>
		
		<entity>
			<ejb-name>CustomerBean</ejb-name>
			<jndi-name>CustomerBean</jndi-name>
			<home>customer.customerbmp.CustomerHome</home>
			<remote>customer.customerbmp.Customer</remote>
			<local-home>customer.customerbmp.CustomerLocalHome</local-home>
			<local>customer.customerbmp.CustomerLocal</local>
			<ejb-class>customer.customerbmp.CustomerBean</ejb-class>
...

Só para frisar, se mudo minhas referencias todas aos objetos remotos, tudo funciona perfeitamente.

Alguém pode me ajudar?

Valeu!

4 Respostas

Alexandre

O que significa a tag <ejb-local-link>, dentro de seu ejb-jar.xml?

_fs

Ah está desnecessária ai.

Serve para acessar ejbs que estão em outros jars, o que não é o caso.
Só por encucação, retirei essa parte do arquivo e continuei recebendo o mesmo erro :smiley:

Alexandre

tente o seguinte:

try &#123;
    Context ctx = new InitialContext&#40; prop &#41;;
    Object ref = ctx.lookup&#40;"CustomerLocalHome"&#41;;
    CustomerLocalHome customerLocalHome = &#40; CustomerLocalHome &#41; ref;

    // se quiser criar a interface local
    CustomerLocal customerLocal = customerLocalHome.create&#40;&#41;;
&#125;
catch &#40;java.lang.ClassCastException e&#41; &#123;
    e.printStackTrace&#40;&#41;;
&#125;
catch &#40;javax.ejb.CreateException e&#41; &#123;
    e.printStackTrace&#40;&#41;;
&#125;

falow!!!

_fs

hehe é que postei o código meio embananado … já tentei fazer sem o narrow, dá o mesmo erro :expressionless:

xo editar lá em cima.

Obrigado mesmo assim cara :smiley:

Criado 14 de junho de 2004
Ultima resposta 14 de jun. de 2004
Respostas 4
Participantes 2