Hi,

Yesterday I had the same problem so here is the solution:
---------------- a component that configures a FILE client ------------
/**
 * @author Gal Nitzan ([EMAIL PROTECTED])
 *
 * 04/06/2008 06:28:34
 */
public class ServletComponent extends Component {

        /**
         * 
         */
        public ServletComponent() {
                this.getClients().add(Protocol.FILE);
        }

        /**
         * @param xmlConfigReference
         */
        public ServletComponent(Reference xmlConfigReference) {
                super(xmlConfigReference);
        }
}------------------------------- ebd of component 
------------------------------


--------------- the application ----------------------
/**
 * @author Gal
 * 
 */
public class ApiApplication extends Application {

        public ApiApplication(Context parentContext) {
                super(parentContext);
        }

        /**
         * Creates a root Restlet that will receive all incoming calls.
         */
        @Override
        public synchronized Restlet createRoot() {
                // Create a router Restlet that routes each call to a
                // new instance of Resource.
// here we get the param configured in web.xml 
                String rootPath = 
getContext().getParameters().getFirstValue("com.meuhedet.app.root");

                Router router = new Router(getContext());

    LocalReference lr = LocalReference.createFileReference(rootPath + 
"/static/");
 
    Directory dir = new Directory(getContext(), lr);
 
    router.attach("/docs/", dir);

    router.attach("/programs/", PcmlProgramsResource.class);

                return router;
        }
}--------------- end of application -----------------

-------------- web.xml -------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee";
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";>
 <display-name>api</display-name>

 <context-param>
  <description>a parameter that tells restlet to load our 
component</description>
  <param-name>com.meuhedet.app.root</param-name>
 
<param-value>C:/jboss-4.2.2.GA/server/default/deploy/api.war</param-value>
 </context-param>

 <context-param>
  <description>a parameter that tells restlet to load our 
component</description>
  <param-name>org.restlet.component</param-name>
  <param-value>com.meuhedet.api.ServletComponent</param-value>
 </context-param>
 <context-param>
  <description>a parameter that tells restlet to load our ApiApplication 
class</description>
  <param-name>org.restlet.application</param-name>
  <param-value>com.meuhedet.api.ApiApplication</param-value>
 </context-param>
 <servlet>
  <display-name>Restlet Servlet</display-name>
  <servlet-name>RestletServlet</servlet-name>
 
<servlet-class>com.noelios.restlet.ext.servlet.ServerServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>RestletServlet</servlet-name>
  <url-pattern>/*</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>------------- end of web.xml ------------------






"Stephane Fellah" <[EMAIL PROTECTED]> wrote on 03/06/2008 17:06:27:

> Hi,
> 
> I am  trying to wrap a custom Restlet application in a Servlet to 
> facilitate its deployment in a WAR file. The application needs to be
> initialized with some parameters using the standard web.xml file.
> My understanding is that it is possible to do it in 2 ways: 
> Subclassing ServletServer or writing a Servlet using 
> ServletConverter class. I decided to use the second approach because
> it seems cleaner to me. 
> 
> I tried to initialize the Application with the context of the 
> ServletConverter but it seems that application does not work 
> properly to serve files from directory. What type of context needs 
> to be created in this case.  Do I need to create a component for 
> this Servlet ? The usage of Context is pretty confusing in Restlet. 
> Inheritance of attributes from parent context are not automatic. 
> Passing context in constructor of Restlet does not behave the same 
> way than calling setContext() afterwards.  Can anyone provide some 
> guideline to make this wrapping successful and provide some snippet 
> of code to illustrate the wrapping of an Application.
> 
> Thank you in advance
> Stephane Fellah
> Image Matters LLC

Reply via email to