On 8 December 2010 17:14, Marius Dumitru Florea <
mariusdumitru.florea(a)xwiki.com> wrote:
On 12/08/2010 10:13 AM, Paul Harris wrote:
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
In the default XE distribution the WYSIWYG editor is the only one making
GWT-RPC calls and they all go to *.gwtrpc URLs so you're safe.
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.
Note that
xwiki.org is an open wiki so you can register and contribute.
Thanks,
Marius