I followed http://wiki.orbeon.com/forms/doc/developer-guide/xforms-with-java-applications and successfully got separate deployments working.
I would like to create my own resources folder which will have some configuration files like properties-local.xml and custom XBL controls. I got this working by copying my resources under orbeon.war/WEB-INF/resources. I would like them to go under myapp.war/WEB-INF/resources. How can I achieve that?
How can I configure a resource manager to pickup my resources which are under myapp.war/WEB-INF/resources without modifying orbeon?
I have seen this http://wiki.orbeon.com/forms/doc/developer-guide/admin/overriding-adding-resources but not sure how this applies in the context of separate deployments.
Orbeon has a series of resource managers, able to load resources from:
classloader -> resources can be packaged in JAR files
webapp -> resources can be put e.g. under WEB-INF/resources
filesystem -> resources can be put anywhere on disk
What you want to do here it seems is having one WAR file access resources stored in another WAR file. I don't think that this is possible with the current resource managers, unless you setup the filesystem, in which case you need to specify an absolute path to the location of the resources on disk.
In theory, I think it should be possible to enhance the webapp resource manager to access other servlet contexts. So you could tell the Orbeon webapp to load resources from your own webapp.
BTW this would still mean that you would need to update the Orbeon WAR's web.xml to configure the resource manager.
Related
in my grails application I would like to make all files in a specific folder in my web-app directory to be public so I can use them whenever I want. Is this possible when messing around with ApplicationResources.groovy config or is there any other smart way to make them public without calling them directly?
I imagine something like this: resource url:'images/flags/*'
Apparently the Resources plugin does not have this feature, see Resources Plugin -- How To include all contents in a directory?.
The linked post does, however, include a solution.
Currently i am doing a project so that i need to access application resource file
outside from my war file.
So i that application resource file can be kept anywhere in my system and i can access it.
Resource bundle is searched in the following order:
ActionClass.properties
Interface.properties
BaseClass.properties
ModelDriven’s model
package.properties
Search up the i18n message key hierarchy itself
Global resource properties
Go to following link, which shows way to load resource bundle for languages.
http://theswarmintelligence.blogspot.com/2012/08/use-resource-bundle-messages-files-out.html
I would like to store some XML program preferences as a resource in a Delphi application. The resource would be modified based on user changes. I have no problem creating the XML and loading it as a resource, and can modify the xmlDocument that I load it into, but I don't know how to write the document back. Is this even possible? I would prefer not to end up with 2 files in the end (.exe and .xml).
The answer is both yes and no.
Yes, it is possible to update resources in a binary using Windows API routines. This link to BeginUpdateResource() should get you on the right track on that score.
However, you will note the following condition on the use of BeginUpdateResource():
"The binary file in which to update resources. An application must be
able to obtain write-access to this file; the file referenced by
pFileName cannot be currently executing."
In other words, it is not possible for an application to simply update it's own resources while running.
There are a number of strategies you could employ to achieve what you want - or something close enough to it as to be satisfactory. Which is most appropriate will depend on your precise needs.
Of the multitude of solutions, two might be:
1) Maintain all such resources in a DLL (resource only DLL - containing no actual code as such) which you open only when specifically loading resources (or updating them). Thus at the time you wish to write a resource back to the DLL you should be able to get the required write-lock.
or
2) When you need to update a resource rename the current running EXE to something like "myapp.OLD", copy it so that you have a new file with the current name "myapp.exe". You can then update "myapp.exe" because it is actually "myapp.old" that is executing.
This second approach is quite messy and has a "nasty smell" but is a technique that is (or used to be) quite commonly used by auto-updaters, for example. Obviously will involve a restart of your app at some point if the current running code is to make use of the updated resources in the modified EXE, so it may not be appropriate to your needs.
Something else to consider is that anti-virus software may flag the activity as suspicious.
Thinking about Deltics' answer I thought you could also create a console application that writes your resource back to the main exe. So your main exe saves it's changes to a file and also extracts the console app. When the main application terminates it calls the console app. The console app waits for a short period of time and then binds the resource file to the main executable, deletes the resource file and itself. The console app could do a check to make sure that the resource file was written successfully and, if not, leave the resource file open. The main executable could see the resource file upon start up and use it instead of the embedded file - as a safeguard.
All of this assumes a single user application.
I am wondering if there is a designated place for resource files in a Grails application? I have a csv file that gets loaded into a map (nothing major) but didn't quite know where to put it in the project.
So my question is, is there a dedicated place in the project to place this file? (If so, where?) Or is it better to place it outside of the project?
If the csv is going to need updating from time to time, I'd put it external to your grails folder, and point to it from config.groovy.
If it's basically a static file, I'd put it in src/java/resources, and load it with something like this.class.getResource("/resources/file.csv") as you would with a regular java app
I have an ASP.NET MVC2 application where I need to support not only multiple languages, but also potentially multiple versions of each language. I usually solve localization requirements by using resx files in the App_GlobalResources folder, and this works well as long as I do not need to support multiple resource-sets for the same language.
This is an issue because each customer shall be able to specify a set of resources, and they may use the same language.
My initial thought was to have a file structure where every customer has a separate folder located under for instance App_Data. In this customer folder I would put configuration files and resources. But then I would need a way to tell the application that it should look for resources in this particular folder instead of App_GlobalResources.
So my question is: Is this doable, and what do I have to do to make it work? Is this a bad way to solve a problem like this, and if that seems to be the case: Does anyone have suggestions for a better solution?
Will be thankful for all input.
I usually use a custom ResourceProviderFactory to store the resources in the database. Creating a custom provider to look in specific folders should not be to hard if you can distinguish the different customers by virtualpath.
But then I would need a way to tell the application that it should look for
resources in this particular folder instead of App_GlobalResources.
You might consider compiling your resources so that they are deployed as DLLs rather than compiled at runtime. To do this you have to move your resources our of the standard App_GlobalResources.
This post has a good explanation of the benefits of doing this:
http://odetocode.com/Blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx