On 8 December 2010 14:46, Paul Harris <harris.pc(a)gmail.com> wrote:
On 8 December 2010 14:14, Paul Harris <harris.pc(a)gmail.com> wrote:
Hi,
I tried to follow the instructions here:
http://platform.xwiki.org/xwiki/bin/view/Main/ShortURLs
and the URLs look great, but I couldn't get the skins and logo to work.
The problem is this part of the instructions:
<servlet>
<servlet-name>defaultSkins</servlet-name>
<servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
<init-param>
<param-name>relativeResourceBase</param-name>
<param-value>skins</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>defaultSkins</servlet-name>
<url-pattern>/skins/*</url-pattern>
</servlet-mapping>
This is totally wrong for me. I'm using xwiki + Jetty + lighttpd on
Debian stable/testing.
The correct entry into web.xml is to add:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/skins/*</url-pattern>
</servlet-mapping>
in addition to:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
It would also help if someone wrote WHERE to put these things in the
web.xml file. I guessed, and it appears to work.
Further to this, I discovered this fix does not work, as the /resources/*
mapping seems to conflict with the *.gwtrpc mapping (mentioned in another
email).
When you Create A Link in the wysiwyg editor, it POSTs to:
/resources/js/xwiki/wysiwyg/xwe/HTMLConverter.gwtrpc
how do I set up my web.xml file so that both the static resources, and
these apparently dynamic resource are able to both work?
Please help, this is very frustrating.
Ok, I have a solution that works for me.
HOWEVER, it will only work if ALL of the gwtrpc requests will be to urls
such as
domain.com/resources/blah/blah/file.gwtrpc
This is the way I could have done it, if I had known where to put that java
code etc:
http://www.kuligowski.pl/java/rest-style-urls-and-url-mapping-for-static-co…
The fundamental problem is due to the limited power of servlet mapping
rules.
ANY mapping to *.gwtrpc will not work if there is a /* mapping or a
/resource/* mapping, as file extensions are always the lowest priority.
So, instead of going the java-path, I used lighttpd since I am using it
anyway.
My new lighttpd rules are:
$HTTP["host"] =~ "^www\.domain\.com$" {
# ensure all requests for .gwtrpc files go through
$HTTP["url"] =~ "\.gwtrpc$" {
proxy.server = ( "" => (( "host" => "127.0.0.1",
"port" => 8080 )))
}
# otherwise, we can handle the static resources
else $HTTP["url"] =~ "^/resources/" {
alias.url += ( "/resources" =>
"/usr/share/jetty/webapps/root/resources" )
}
# otherwise, we can handle the static resources
else $HTTP["url"] =~ "^/skins/" {
alias.url += ( "/skins" =>
"/usr/share/jetty/webapps/root/skins" )
}
# and here is the primary server
else $HTTP["host"] =~ "^www\.domain\.com$" {
proxy.server = ( "" => (( "host" => "127.0.0.1",
"port" => 8080 )))
}
}
else $HTTP["host"] =~ "\.domain\.com$" {
url.redirect = ( "^/(.*)" => "http://www.domain.com/$1" )
server.name = "www.domain.com"
}
else $HTTP["host"] =~ "domain\.com$" {
url.redirect = ( "^/(.*)" => "http://www.domain.com/$1" )
server.name = "www.domain.com"
}
so lighttpd will serve static content from resources and skins, EXCEPT if it
ends with .gwtrpc
THEN in web.xml: I change the gwtrpc mapping to:
<servlet-mapping>
<servlet-name>gwtrpc</servlet-name>
<url-pattern>/resources/*</url-pattern>
<url-pattern>/skins/*</url-pattern>
</servlet-mapping>
because we know that anything that makes it past lighttpd in the resources
or skins folder MUST be a gwtrpc file.
AND then I do not need the skins/resources mappings (that I mentioned above
in prev email), all I need to add is:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
yay.
please put this up on the wiki for ShortUrls, it might save someone like me
quite a few hours.
thanks
Paul