[jboss-dev-forums] [Design of JBoss Remoting, Unified Invokers] - Re: Remoting 2: Servlet Invoker

ron.sigal@jboss.com do-not-reply at jboss.com
Wed Jan 14 02:59:27 EST 2009


While you were off finding G-d, I got invoker-test to pass.  :)

There's one change in servlet-invoker-service.xml:


  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <server>
  | 
  |   <mbean code="org.jboss.remoting.transport.Connector" name="jboss.remoting:service=connector,transport=servlet"
  |     display-name="Servlet transport Connector">
  |     <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>
  | 
  | </server>
  | 

In particular, I changed the MBean name from "jboss.remoting:service=invoker,transport=servlet" to "jboss.remoting:service=connector,transport=servlet".  That's the source of the "Unable to find operation processRequest(javax.servlet.http.HttpServletRequest,[B,javax.servlet.http.HttpServletResponse)" problem.  ServerInvokerServlet found the "jboss.remoting:service=invoker,transport=servlet" it was looking for, but what it was finding was an org.jboss.remoting.transport.Connector instead of the ServletServerInvoker created by the Connector.

Also, I changed web.xml:


  | <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-->
  |         <init-param>
  |             <param-name>locatorUrl</param-name>
  |             <param-value>servlet://${jboss.bind.address}:8080/servlet-invoker/ServerInvokerServlet</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>
  | 

so that it searches for the ServletServerInvoker by InvokerLocator instead of MBean name.  Strictly speaking, that shouldn't be necessary, as long as the correct MBean name is supplied.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4201602#4201602

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4201602



More information about the jboss-dev-forums mailing list