Olá pessoal,
primeiramente desculpa pela pergunta hehehhe
Então, estou com um problema, tenho um projeto EAR, onde tem minhas classes EJB,
e eu quero fazer um cliente que acesse via local ou remote de um Servlet, esse cliente está em outro projeto.
Esse mesmo EJB, via remote e com um main() de uma aplicação Desktop, ele acesse, porém em Servlet ele não acessa.
BEAN:
/**
* TesteSession
*
* @ejb.bean name = "TesteBusiness" jndi-name = "TesteRemote" view-type =
* "remote" type = "Stateless"
*/
public class TesteSessionBean implements SessionBean {
private static final long serialVersionUID = 1L;
/**
* Teste/**
*
* @param long cdEmpresa1
* @param long cdEmpresa2
* @return
*
* @ejb.interface-method
*/
public void teste(long cdEmpresa1, long cdEmpresa2) {
System.out.println(">>>>>>>>>>>"+cdEmpresa1+"<=>"+cdEmpresa2);
}
/**
* @ejb.create-method
*/
public void ejbCreate() throws CreateException {
}
@Override
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
@Override
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
@Override
public void ejbRemove() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
@Override
public void setSessionContext(SessionContext arg0) throws EJBException,
RemoteException {
// TODO Auto-generated method stub
}
}
HOME (gerado pelo XDoclet):
/**
* Interface Home para TesteBusiness.
*/
public interface TesteBusinessHome
extends javax.ejb.EJBHome
{
public static final String COMP_NAME="java:comp/env/ejb/TesteBusiness";
public static final String JNDI_NAME="TesteRemote";
public com.nexxera.compromisso.web.business.ejb.session.TesteBusiness create()
throws javax.ejb.CreateException,java.rmi.RemoteException;
}
REMOTA (gerado pelo XDoclet):
/**
* Interface Remota para TesteBusiness.
*/
public interface TesteBusiness
extends javax.ejb.EJBObject
{
/**
* Teste/**
* @param long cdEmpresa1
* @param long cdEmpresa2
* @return
*/
public void teste( long cdEmpresa1,long cdEmpresa2 )
throws java.rmi.RemoteException;
}
EJB-JAR.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar >
<description><![CDATA[Sem Descri��o.]]></description>
<display-name>Gerado pelo XDoclet</display-name>
<enterprise-beans>
<session >
<description><![CDATA[TesteSession]]></description>
<ejb-name>TesteBusiness</ejb-name>
<home>com.nexxera.compromisso.web.business.ejb.session.TesteBusinessHome</home>
<remote>com.nexxera.compromisso.web.business.ejb.session.TesteBusiness</remote>
<ejb-class>com.nexxera.compromisso.web.business.ejb.session.TesteSessionBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
<enterprise-beans>
<session>
<ejb-name>TesteBusiness</ejb-name>
<jndi-name>TesteRemote</jndi-name>
<method-attributes>
</method-attributes>
</session>
<!--
write a merge file jboss-webservices.ent for webservice-description
-->
</enterprise-beans>
<!--
To specify your own assembly descriptor info here, add a file to your
XDoclet merge directory called jboss-assembly-descriptor.xml that contains
the <assembly-descriptor></assembly-descriptor> markup.
-->
<assembly-descriptor>
<!-- message destinations -->
<!--
To specify additional message-destination elements, add a file in the merge
directory called jboss-message-destinations.ent that contains them.
-->
</assembly-descriptor>
<resource-managers>
</resource-managers>
<!--
| for container settings, you can merge in jboss-container.xml
| this can contain <invoker-proxy-bindings/> and <container-configurations/>
-->
</jboss>
SERVLET CLIENTE:
public class Consumer extends HttpServlet {
private static final long serialVersionUID = 1L;
// public static void main(String[] args) {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException {
String param = req.getParameter("x");
// String param = "ejb/EmployeeFacadeRemote";
Properties properties = new Properties();
properties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
properties.put("java.naming.provider.url", "localhost:1099");
try {
Context context;
context = new InitialContext(properties);
// Object object = context.lookup(param);
// TesteBusinessHome efrh = (TesteBusinessHome) PortableRemoteObject.narrow(object, TesteBusinessHome);
TesteBusinessHome efrh = (TesteBusinessHome) context.lookup(param);
efrh.create().teste(123l,321l);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Alguém pode me ajudar? Qualquer ajuda será de muita ajuda.
Agradeço.
Att,
Jhonatan Serafim.