You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Christian Nutz (JIRA)" <de...@tapestry.apache.org> on 2008/03/18 11:21:24 UTC

[jira] Updated: (TAPESTRY-2273) Websphere 6.1 ear asset problem

     [ https://issues.apache.org/jira/browse/TAPESTRY-2273?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Nutz updated TAPESTRY-2273:
-------------------------------------

    Environment: WinXP SP2, Java 1.5.0_14, Tapestry 4.1.2 (also  4.1.5), IBM Websphere 6.1  (was: WinXP SP2, Java 1.5.14, Tapestry 4.1.2 (also  4.1.5), IBM Websphere 6.1)

> Websphere 6.1 ear asset problem
> -------------------------------
>
>                 Key: TAPESTRY-2273
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-2273
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 4.1.2, 4.1.3, 4.1.5
>         Environment: WinXP SP2, Java 1.5.0_14, Tapestry 4.1.2 (also  4.1.5), IBM Websphere 6.1
>            Reporter: Christian Nutz
>            Priority: Critical
>             Fix For: 4.1.6
>
>
> We are using Tapestry 4.0 for our project and all works fine.
> Now we want migrate to Tapestry 4.1.5 but in our Websphere environment css-assets are not loaded (The css is embedded via Asset in the html header of our page).
> In the source of the generated html page the css is not correct resolved and looks like this:
> <head>
>   <title>XYZ</title>	
>   <link href="/xyz/app?digest=xxxxx&amp;service=asset&amp;path=%2Fpage_x%2Fpage_x.css" type="text/css" rel="stylesheet" id="Any_0"></link>
> </head>
> The correspondending java class creates the css link via "AbstractComponent.getAsset("pageCss").buildURL()".
> The Websphere log says:
> SRTServletRes W   WARNING: Cannot set header. Response already committed.
> After debugging, we found the reason for this issue.
> If you deploy an war file in Websphere application server, Websphere creates an ear file with the war included. The classpath is:
> C:\Programme\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\ws-product03Node01Cell\demoApp.ear\demoApp.war\WEB-INF\classes;
> C:\Programme\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\ws-product03Node01Cell\demoApp.ear\demoApp.war\WEB-INF\lib\tapestry-annotations-4.1.5.jar;
> C:\Programme\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\ws-product03Node01Cell\demoApp.ear\demoApp.war\WEB-INF\lib\tapestry-contrib-4.1.5.jar;
> C:\Programme\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\ws-product03Node01Cell\demoApp.ear\demoApp.war\WEB-INF\lib\tapestry-framework-4.1.5.jar;
> C:\Programme\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\ws-product03Node01Cell\demoApp.ear\demoApp.war
> And our directory structure looks like this:
> demoApp
> demoApp/styles
> demoApp/html
> demoApp/WEB-INF
> Tapestry tries to load an Asset with an AssetFactory.
> In the class org.apache.tapestry.assetAssetSourceImpl the method findAssetFactory(IComponentSpecification spec, Resource baseResource, String path, Locale locale) is used for this.
> It looks up the factory in this way:
> AssetFactory findAssetFactory(IComponentSpecification spec, Resource baseResource, String path, Locale locale) {
>    // need to check these two core factories in order first
>    if (_classpathAssetFactory.assetExists(spec, baseResource, path, locale))
>        return _classpathAssetFactory;
>    if (_contextAssetFactory.assetExists(spec, baseResource, path, locale))
>        return _contextAssetFactory;
>             
>    ....
>         
> }
> As you can see for the ear file, the styles directory is visble from classpath and _classpathAssetFactory.assetExists() will return true.
> And this is the problem.
> Like in Tapestry 4.0, you have to check first _contextAssetFactory.assetExists() and then _classpathAssetFactory.assetExists().
> After applying the patch (changing the order to return the assetFactory), the problem was solved for us.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org