I will try to illustrate my implementation as best as I
can then hopefully I can find a way to solve my logging issue.
In my web.xml I have:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>org.restlet.application</param-name>
<param-value>org.example.RestApplication</param-value>
</context-param>
<servlet>
<servlet-name>RestServlet</servlet-name>
<servlet-class>
com.noelios.restlet.ext.servlet.ServerServlet
</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RestServlet</servlet-name>
<url-pattern>/atom/*</url-pattern>
</servlet-mapping>
Which initializes the spring framework and also hands all
/atom/* requests to the ServerServlet.
My RestApplication contains:
public class RestApplication extends Application {
public RestApplication(Context context){
super(context);
}
@Override
public Restlet createRoot() {
Router router = new Router(getContext());
RestManager manager = (RestManager) SpringResolver.
getBean("manager");
manager.init(router);
return router;
}
public void handle(Request request, Response response) {
try {
start();
} catch (Exception ee) {
ee.printStackTrace();
}
super.handle(request, response);
}
}
This gets a reference to the RestManager via spring. It
hands it a map of <String, Restlet> and calls its init
method.
My RestManager contains:
public class RestManager {
private Map<String, Restlet> resourceMappings
= new HashMap<String, Restlet>();
public void init(Router router) {
for (String key : resourceMappings.keySet()) {
router.attach(key, resourceMappings.get(key));
}
}
public void setResourceMappings(HashMap<String, Restlet>
resourceMappings) {
this.resourceMappings = resourceMappings;
}
}
This loops over the map and attaches all the restlets
to the router.
My Spring applicationContext.xml file contains:
<bean id="portalRoot" class="org.example.PortalRoot">
<bean id="manager" class="org.example.RestManager">
<property name="resourceMappings">
<bean class="java.util.HashMap">
<constructor-arg>
<map>
<entry key="/portal">
<ref local="portalRoot" />
</entry>
</map>
</constructor-arg>
</bean>
</property>
</bean>
As you can see all the restlets are defined in the map.
PortalRoot contains:
public class PortalRoot extends Restlet {
public void handle(Request request, Response response) {
if (request.getMethod().equals(Method.GET)) {
snip........ main code etc......
This handles all my get requests for /atom/portal, I have
simplified the code to make it easier to read.
I would like to disable logging at the RestApplication level
see above. Not at the PortalRoot restlet level.
As I am not directly referencing any restlet components I am
finding it hard to see where to put the logging code.
Thanks,
Takasho