lookup remote bean from JBoss AS 6.0.0.GA (ejb3) to Spring application (JBoss 7.1.1. Final)
serpentcross Dec 6, 2016 3:44 PMHello everyone!
I faced with the problem listed below. I have two different JBoss (standalone) servers in my corporate intra-network. No problems with networks, firewalls, etc. It works good.
1st - JBoss AS 7.1.1. Final
this server contains a SpringMVC war application. MyTest.war
my MVC class:
WebControler.java
@Controller public class WebController { String jndi = "myapplication/BusinessFormLBean/remote-com.mycompany.example.dao.BusinessFormRB"; InitialContext context; BusinessFormRB businessFormRB; @RequestMapping(value = "/testing", method = RequestMethod.GET) public void testing() throws NamingException { context = new InitialContext(getProperties()); businessFormRB = (BusinessFormRB) context.lookup(jndi); System.out.println(businessFormRB); } private Properties getProperties() { Properties props = new Properties(); props.put(context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put(context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); props.put(context.PROVIDER_URL, "jnp://192.25.189.109:1099"); props.put("jboss.naming.client.ejb.context", true); return props; } }
2st - JBoss AS 6.
Contains some beans with local and remote interfaces:
BusinessFormLB.java
package com.mycompany.example.dao; import com.mycompany.example.entity.BusinessForm; import javax.ejb.Local; import java.util.List; @Local public interface BusinessFormLB { List<BusinessForm> findAllReplyType(); }
BusinessFormRB.java
package com.mycompany.example.dao; import com.mycompany.example.entity.BusinessForm; import javax.ejb.Remote; import java.util.List; @Remote public interface BusinessFormRB { List<BusinessForm> findAllReplyType(); }
BusinessFormLBean.java
package com.mycompany.example.dao; imports.... @Stateless @Remote(BusinessFormRB.class) public class BusinessFormLBean implements BusinessFormLB, BusinessFormRB { @PersistenceContext(unitName = "exampleDBManager") protected EntityManager em; public void delete(Abbreviation src) { em.remove(src); } @Override public List<BusinessForm> findAllReplyType() { List<BusinessForm> result = null; ..... return result; } }
When I try to call a method testing() from WebController class, I got an error:
exception org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: javax.naming.Reference cannot be cast to com.mycompany.example.dao.BusinessFormRB org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) javax.servlet.http.HttpServlet.service(HttpServlet.java:734) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:847) com.mycmopany.ef.example.backend.configuration.CorsFilter.doFilterInternal(CorsFilter.java:19) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) root cause java.lang.ClassCastException: javax.naming.Reference cannot be cast to com.mycompany.example.dao.BusinessFormRB com.mycmopany.ef.example.backend.controllers.WebController.testing(WebController.java:34) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:601) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) javax.servlet.http.HttpServlet.service(HttpServlet.java:734) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:847) ru.alfabank.ef.questionnarie.backend.configuration.CorsFilter.doFilterInternal(CorsFilter.java:19) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
Also I imported a jar file to my Spring project, that contains all remote interfaces from EJB project.
What may be wrong???
Thank you in advance!