Hi, is anyone there to help? Thanks!
> Dear All, > I am using the restlet-jee-2.0snapshot, > jdk5.0 on Tomcat 5.5. > > I have an application.properties file: > WEB-INF/classes/application.properties > > But I keep getting the following error: > java.lang.IllegalArgumentException: Cannot access to the configuration file: > "clap://system/WEB-INF/classes/application.properties" > > It seems that I am not working properly with > the classloader, CLAP. > > I have tried most ways, clap://thread/.., > clap://class...but no luck so far. > > Here below is the code: > > Thanks, > Sinoea > > [code] > public class DirectoryServletApplication extends Application { > > /** Freemarker configuration object. */ > private Configuration fmc; > > public static void main(String[] args) throws Exception { > // Create a component > Component component = new Component(); > component.getServers().add(Protocol.HTTP, 8182); > component.getClients().add(Protocol.FILE); > component.getClients().add(Protocol.CLAP); > component.getClients().add(Protocol.HTTP); > > DirectoryServletApplication application = new > DirectoryServletApplication(component.getContext()); > > // Attach the application to the component and start it > component.getDefaultHost().attach("", application); > component.start(); > } > > public DirectoryServletApplication(Context context) throws IOException { > super(context); > getConnectorService().getClientProtocols().add(Protocol.FILE); > getConnectorService().getClientProtocols().add(Protocol.CLAP); > getConnectorService().getClientProtocols().add(Protocol.HTTP); > > // Look for the configuration file in the classpath (Here is the > PROBLEM) > Properties properties = > getProperties("clap://system/WEB-INF/classes/application.properties"); > System.out.println(properties.get("web.root.path")); > try { > this.fmc = new Configuration(); > final File templateDir = new File("C:\\Program Files\\Apache > Software Foundation\\Tomcat > 5.5\\webapps\\directory\\ROOT\\WEB-INF\\template"); > this.fmc.setDirectoryForTemplateLoading(templateDir); > } catch (Exception e) { > getLogger().severe("Unable to configure FreeMarker."); > e.printStackTrace(); > } > } > > @Override > public synchronized Restlet createInboundRoot() { > // Create a router Restlet that routes each call to a > // new instance of HelloWorldResource. > Router router = new Router(getContext()); > > // Defines only one route > router.attachDefault(HomePage.class); > > router.attach("/contactus", ContactUs.class); > > return router; > } > > /** > * Returns the freemarker configuration object. > * > * @return the freemarker configuration object. > */ > public Configuration getFmc() { > return this.fmc; > } > > /** > * Returns a Properties instance loaded from the given URI. > * > * @param propertiesUri > * The URI of the properties file. > * @return A Properties instance loaded from the given URI. > * @throws IOException > */ > public static Properties getProperties(String propertiesUri) > throws IOException { > Reference reference = new Reference(propertiesUri); > Response response = new > Client(reference.getSchemeProtocol()).get(reference); > if (!(response.getStatus().isSuccess() && > response.isEntityAvailable())) { > StringBuilder stringBuilder = new StringBuilder(); > stringBuilder.append("Cannot access to the configuration file: > \""); > stringBuilder.append(propertiesUri); > stringBuilder.append("\""); > throw new IllegalArgumentException(stringBuilder.toString()); > } > > Properties properties = new Properties(); > properties.load(response.getEntity().getStream()); > return properties; > } > } > [/code] > > > [code] > > <?xml version="1.0" encoding="UTF-8"?> > <web-app id="directory" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee > http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> > <display-name>directory</display-name> > <!-- Application class name --> > <context-param> > <param-name>org.restlet.application</param-name> > <param-value>example.DirectoryServletApplication</param-value> > </context-param> > <context-param> > <param-name>org.restlet.clients</param-name> > <param-value>HTTP HTTPS CLAP FILE</param-value> > </context-param> > > <!-- Restlet adapter --> > <servlet> > <servlet-name>RestletServlet</servlet-name> > > <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class> > </servlet> > > <!-- Catch all requests --> > <servlet-mapping> > <servlet-name>RestletServlet</servlet-name> > <url-pattern>/*</url-pattern> > </servlet-mapping> > </web-app> > > [/code] ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2409438