How do widgets in Wookie get around same-origin restrictions for Ajax requests?

The Widget javascript object available to running widgets has a proxify() method for just this purpose. Proxify wraps the request in a call to a proxy server.

So proxify("http://example.org/myservice/") results in a URL like http://my.wookie.org/proxy?url=http://example.org/myservice/&api_key=myapikey

Shindig also uses the same method for OpenSocial applications, and has its own bundled proxy service.

Wookie lets you use either; see the widgetserver.properties configuration file. This contains instructions for specifying either no proxy, the Wookie service, or the Shindig one (assuming its available).

Wookie's bundled proxy servlet is a bit stricter than the one bundled in Shindig, as it only allows text, xml or json (not binary), and can also be controlled using a whitelist set up by the Wookie administrator and using W3C WARP. For more information see the Wookie Administrators guide.

How does localization work in Wookie?

Wookie implements the localization model described in the W3C Widgets: Packaging and Configuration specification. This means that Widgets contain "locale" folders for specific locales (eg. "/locales/et/index.html"), and Wookie will serve resources in matching locale folders in preference to generic resources. Wookie uses the 'locale' parameter of a request for a new widget as the preferred locale for resource requests; if this is absent then Wookie uses the server's default locale as picked up through system settings. We use ICU4J for all locale processing, including locating system defaults.

Wookie messed up my widget's <script> tags when I imported it! What happened?

Wookie uses HtmlCleaner to inject its own script tags into your Widget's start file when it is uploaded. This works fine in most cases; however if you use self-closing script tags things can go wrong. To avoid this always use regular HTML-style script tags e.g <script src="main.js"></script> and not <scripr src="main.js"/>. See Issue WOOKIE-42 for more information.

When I run Wookie in Tomcat I get a "java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)"

This problem occurs when the security manager is enabled in Tomcat, but without the proper permission assigned for Wookie. There is a How-To that can help you define the security policy properly.

Wookie installs fine in Tomcat, but when I try to see it I get "org.hibernate.HibernateException: flush is not valid without active transaction"

This problem occurs when running Tomcat with Security Manager enabled, but without having granted permissions for Wookie to access the database server. For development purposes its better to just run Tomcat without Security Manager enabled; otherwise you need to edit your catalina.policy file as described in the Tomcat Security Manager How-To.

Wookie throws a "java.lang.NoSuchMethodError:javax.servlet.ServletContext.getContextPath()" exception when I try to load a widget

This problem occurs in version of Apache Tomcat that do not support the current Servlet specification; to avoid this error update to Tomcat 6.0 or higher. See Issue WOOKIE-105 for more information

I shut down my Wookie and now when I try to run it I get an error. How do I run it again?

Whenever you execute the ant run command to run Wookie in standalone (developer) mode, the database is recreated. This means that if you stop and re-run Wookie you'll get an error message. To avoid this problem use ant clean-db run instead.

Why can't I add any widgets, either through the admin interface or by dropping them into the deploy folder?

One of the most common reasons for this is that the application doesn't have permission to write to the wookie/wservices directory, which is where Wookie expands widgets when they are uploaded. For example, if you are deploying Wookie on Tomcat, make sure webapps/wookie is owned by the tomcat user and not by root.

Why do I get an error message like "wookie\widgets\bubbles\widgets\bubbles does not exist" when I try to build Wookie?

This problem occurs when building Wookie using Ant 1.8.x. The build will work fine if you use Ant 1.7.1. See Issue WOOKIE-152 for more information

Why doesn't my script run using JQuery's $(document).ready ?

This is a known issue. See Issue WOOKIE-90 for more information. As a workaround you can use <body onload="...">

My widgets do not seem to be updating the preference data in wookie

This is a known issue. See Issue WOOKIE-44 for more information. This problem typically occurs when using Internet Explorer (version 8 and less). It is only flagged here as a warning because depending on how the widget calls the widget javascript API, you may or may not encounter a problem. In essence there are two ways of setting a preference in your widgets javascript implementation...

(1) widget.preferences.setItem("foo", "bar");
(2) widget.preferences.foo = "bar";

If your widget has been coded to only use method (1), there should not be a problem in Internet Explorer. However if your widget implementation uses method (2) or a combination of both, then you may experience unexpected results.

If you are experiencing this problem and you are using Internet Explorer (version 8 or less), then...

(1) update the javascript code to only use method (1) above in the affected widget
OR
(2) install Internet Explorer version 9, which should resolve the problem.

Other browsers should be unaffected by this issue.

Why when I update my widget and load it back onto wookie do I get two copies of my widget in the gallery?

If your widget does not have an id defined in the widget's config.xml file or the id is not a valid URI then wookie will load but not update your widget.  If this is the case then (for the moment) you will need to manually remove the old version of the widget using wookie's admin page.

  • No labels

1 Comment

  1. No se bien donde tengo que poner esta pregunta...¿Podriais explicar bien paso a paso como se integra shindig en wookie? Os lo agradecería muchísimo, porque llevo mucho tiempo intentándolo sin ningún resultado. Wookie lo estoy usando en standalone y lo ejecuto con ant, y Shindig lo estoy ejecutando con maven. Creo que lo estoy haciendo bien, como se dice en los readme.txt, pero está claro que hago algo mal porque no he conseguido que funcionen a la vez. Si podeis me gustaría que me indicaseis claramente paso a paso, incluso las descargas que tendría que hacer, por si acaso estoy intentando hacer funcionar algo que no puede funcionar. Si que he conseguido hacerlos funcionar por separado, pero no he podido juntarlos. Si está ejecutandose wookie y lanzo shindig, wookie deja de funcionar. Si está ejecutandose shindig y lanzo wookie, tampoco funciona bien. He intentado juntarlos en un solo proyecto, pero tampoco funciona. Creo que estoy cometiendo algún fallo al traducir lo que decis. Por eso os lo pongo en español y os pido que si podeis explicar un poco todo este tema del shindig para todos los españoles que no controlamos mucho el ingles.
    Gracias por la toda la ayuda que me podais dar, sea en ingles o en español..jeje
    Un saludo.