terça-feira, 19 de outubro de 2010

[java-br] INFO: Lookup failed for 'java:global/Corporate/ShoppingCartBean!com.thilux.ejb.session.remote.ShoppingCartBeanRemote' in SerialContext

·

 

Bom dia caros amigos,

Estou enfrentando um problema para usar um EJB Stateful Sessionbean
deployado no GlassFish de uma aplicação web Spring MVC deployada no mesmo
servidor. O controller que chamada os métodos do meu EJB compila normalmente
e não ocorrem erros de deploy, porem sempre que tenta-se invocar o EJB
recebesse a seguinte info nos logs do Glassfish:

INFO: Lookup failed for
'java:global/Corporate/ShoppingCartBean!com.thilux.ejb.session.remote.ShoppingCartBeanRemote'
in SerialContext

Segue abaixo o código do meu EJB e do meu controller para que de repente
vocês possam me ajudar.

Projeto Corporate:

package com.thilux.ejb.session;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.Remove;
import javax.ejb.Stateful;

import com.thilux.ejb.session.local.ShoppingCartBeanLocal;
import com.thilux.ejb.session.remote.ShoppingCartBeanRemote;

@Stateful
public class ShoppingCartBean implements ShoppingCartBeanLocal,
ShoppingCartBeanRemote{

private List<Object> products;

//public static final String RemoteJNDIName =
ShoppingCartBean.class.getSimpleName() + "/remote";
//public static final String LocalJNDIName =
ShoppingCartBean.class.getSimpleName() + "/local";

@PostConstruct
public void initBean(){
products = new ArrayList<Object>();
}

public List<Object> getProducts() {
return products;
}

public void setProducts(List<Object> products) {
this.products = products;
}

public void addToCart(Object obj) {
products.add(obj);

}

public void removeFromCart(Object obj) {
products.remove(obj);

}

public List<Object> getItensFromCart() {

return products;
}

@Remove
public void cancelCart() {
System.out.println("Canceling cart");

}

}

----------------------------------------------------------

package com.thilux.ejb.session.local;

import java.util.List;

import javax.ejb.Local;

@Local
public interface ShoppingCartBeanLocal {

public void addToCart(Object obj);
public void removeFromCart(Object obj);
public List<Object> getItensFromCart();
public void cancelCart();
}

----------------------------------------------------------
package com.thilux.ejb.session.remote;

import java.util.List;

import javax.ejb.Remote;

@Remote
public interface ShoppingCartBeanRemote {

public void addToCart(Object obj);
public void removeFromCart(Object obj);
public List<Object> getItensFromCart();
public void cancelCart();
}
------------------------------------------
------------------------------------------
------------------------------------------
------------------------------------------

Projeto Shopping:

package com.thilux.controller;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.thilux.ejb.session.remote.ShoppingCartBeanRemote;
import com.thilux.entity.dao.ProductDao;
import com.thilux.entity.model.Item;
import com.thilux.entity.model.ItemDetails;

@Controller
@RequestMapping("/products/**")
public class DoItAllController {

@Autowired
private ProductDao productDao;

@RequestMapping(value="/products",
method=RequestMethod.GET)
public String list(ModelMap modelMap){

modelMap.addAttribute("products", productDao.getAll());
modelMap.addAttribute("itemDetails", new ItemDetails());

return "products/list";

}

@RequestMapping(value="/products",
method=RequestMethod.POST)
public String addProductToChart(@Valid ItemDetails itemDetails,
BindingResult bindingResult,
ModelMap modelMap){

System.out.println("Check if you got the tthing.... " +
"pid ["+ itemDetails.getProductId() +
"] quantity is [" + itemDetails.getQuantity() + "]");

Context context;

try{

context = new InitialContext(getPropertiesForEJB());
//context = new InitialContext();

ShoppingCartBeanRemote shoppingCartBeanRemote = (ShoppingCartBeanRemote)
context.lookup("java:global/Corporate/ShoppingCartBean!com.thilux.ejb.session.remote.ShoppingCartBeanRemote");

Item item = new Item(productDao.findById(itemDetails.getProductId()),
itemDetails.getQuantity());

shoppingCartBeanRemote.addToCart(item);

}catch(NamingException e){
System.out.println(e.getMessage());
}

return "redirect:/products";
}

@RequestMapping(value="/products/cart",
method=RequestMethod.GET)
public String viewCart(ModelMap modelMap){

Context context;

try{

context = new InitialContext(getPropertiesForEJB());
//context = new InitialContext();

ShoppingCartBeanRemote shoppingCartBeanRemote = (ShoppingCartBeanRemote)
context.lookup("java:global/Corporate/ShoppingCartBean!com.thilux.ejb.session.remote.ShoppingCartBeanRemote");

modelMap.addAttribute("itens", shoppingCartBeanRemote.getItensFromCart());

}catch(NamingException e){
System.out.println(e.getMessage());
}

return "products/viewcart";
}

private Properties getPropertiesForEJB(){

Properties properties = new Properties();
properties.setProperty("java.naming.factory.initial",
"com.sun.enterprise.naming.SerialInitContextFactory");
properties.setProperty("java.naming.factory.url.pkgs",
"com.sun.enterprise.naming");
//properties.setProperty("java.naming.provider.url", "localhost:1099");
properties.setProperty("java.naming.factory.state",
"com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
properties.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
properties.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

return properties;
}

}
----------------------------------------------------------

Informações do JNDI do EJB no log do glassfish:

INFO: Portable JNDI names for EJB ShoppingCartBean :
[java:global/Corporate/ShoppingCartBean!com.thilux.ejb.session.local.ShoppingCartBeanLocal,
java:global/Corporate/ShoppingCartBean!com.thilux.ejb.session.remote.ShoppingCartBeanRemote]
INFO: Glassfish-specific (Non-portable) JNDI names for EJB ShoppingCartBean
: [com.thilux.ejb.session.remote.ShoppingCartBeanRemote,
com.thilux.ejb.session.remote.ShoppingCartBeanRemote#com.thilux.ejb.session.remote.ShoppingCartBeanRemote]
INFO: Loading Corporate Application done is 4925 ms

----------------------------------------------------------

O meu projeto shopping contém as libs necessárias do Glassfish em
WEB-INF/lib, são estas: appserv-rt.jar, gf_client.jar e
glassfish-naming.jar.

Alguém teria alguma idéia de qual possa ser o meu problema?

Ah vale ressaltar que verifiquei as configurações do ORB do srvidor e estão
corretas.

Muito grato pela atenção.
--
Thank you,
TS

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog