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]
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br







0 comentários:
Postar um comentário