I am using Jboss 4.0.4RC1 and have created a simple stateless session bean
using ejb3. Remote access using the default socket transport works fine but I
cannot get servlet trandport working.
I have added this to ejb3.deployer/META-INF/jboss-service.xml
| <mbean code="org.jboss.remoting.transport.Connector"
| xmbean-dd="org/jboss/remoting/transport/Connector.xml"
|
name="jboss.remoting:type=Connector,transport=servlet,name=Servlet,handler=ejb3">
| <depends>jboss.aop:service=AspectDeployer</depends>
| <attribute
name="InvokerLocator">servlet://${jboss.bind.address}:8080/servlet-invoker/ServerInvokerServlet</attribute>
| <attribute name="Configuration">
| <handlers>
| <handler
subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
| </handlers>
| </attribute>
| </mbean>
|
I have added servlet-invoker.war to the deploy directory. This contains the
following META_INF/web.xml file
| <?xml version="1.0" encoding="UTF-8"?>
| <!DOCTYPE web-app PUBLIC
| "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
| "http://java.sun.com/dtd/web-app_2_3.dtd">
|
| <!-- The the JBossRemoting server invoker servlet web.xml descriptor
| $Id: web.xml,v 1.1 2005/06/16 21:12:48 telrod Exp $
| -->
| <web-app>
| <servlet>
| <servlet-name>ServerInvokerServlet</servlet-name>
| <description>The ServerInvokerServlet receives requests via HTTP
| protocol from within a web container and passes it onto the
| ServletServerInvoker for processing.
| </description>
|
<servlet-class>org.jboss.remoting.transport.servlet.web.ServerInvokerServlet</servlet-class>
| <init-param>
| <param-name>invokerName</param-name>
|
<param-value>jboss.remoting:service=invoker,transport=servlet</param-value>
| <description>The servlet server invoker</description>
| </init-param>
| <load-on-startup>1</load-on-startup>
| </servlet>
| <servlet-mapping>
| <servlet-name>ServerInvokerServlet</servlet-name>
| <url-pattern>/ServerInvokerServlet/*</url-pattern>
| </servlet-mapping>
| </web-app>
|
|
My session bean is declared as:
|
@RemoteBinding(clientBindUrl="http://localhost:8080/servlet-invoker/ServerInvokerServlet",
jndiBinding="mailserver.TestStatelessEJB.servlet")
|
The client program is:
| Properties p = new Properties();
| p.put(
Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
| p.put( Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces" );
| p.put("java.naming.provider.url", "localhost");
| ctx = new InitialContext(p);
| TestStatelessRemote r = (TestStatelessRemote)
ctx.lookup("mailserver.TestStatelessEJB.servlet");
| r.remove(10);
| r.create(10,"hello from testEJB");
| System.out.println(r.getText(10));
| .....
|
|
JNDI lookup works ok but when r.remove is executed the following exception is
thrown:
| org.jboss.remoting.CannotConnectException: Can not connect http client
invoker.
| at
org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:192)
| at
org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:74)
| at
org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:136)
| at org.jboss.remoting.Client.invoke(Client.java:444)
| at org.jboss.remoting.Client.invoke(Client.java:407)
| at
org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:55)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:55)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:65)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
| at $Proxy0.remove(Unknown Source)
| at trevan.mailserver.client.TestClient.main(TestClient.java:55)
| Caused by: java.io.StreamCorruptedException: invalid stream header
| at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
| at java.io.ObjectInputStream.<init>(Unknown Source)
| at
org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.<init>(ObjectInputStreamWithClassLoader.java:57)
| at
org.jboss.remoting.serialization.impl.java.JavaSerializationManager.createInput(JavaSerializationManager.java:52)
| at
org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:119)
| at
org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:66)
| at
org.jboss.remoting.marshal.http.HTTPUnMarshaller.read(HTTPUnMarshaller.java:131)
| at
org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:166)
| ... 15 more
|
Please can anyone help.
Please can you tell me if http transport is still supported or only servlet and
socker.
Regards Trevor
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3926561#3926561
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3926561
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user