Probably a good idea to include it in the docs then?


> On Jul 6, 2015, at 2:43 PM, Andrus Adamchik <and...@objectstyle.org> wrote:
> 
> Yeah, this looks about right. This is a correct way to use CayenneFilter. 
> 
>> On Jul 6, 2015, at 12:35 PM, Joe Baldwin <jfbald...@earthlink.net> wrote:
>> 
>> OK, after over an hour of hacking, I think I have figured out at least some 
>> of the rules for specifying the location of Cayenne config files in a Tomcat 
>> environment.   I put this together from bits an pieces I found in the docs - 
>> I could not find a full example.
>> 
>> For anyone who is configuring a Cayenne 4.X web.xml filter here is what I 
>> found.   I cannot say this is the best or only way to do this, but it seems 
>> to work for at least the basic Cayenne 4.X configuration files.  (I also 
>> have dbcp.properties in the same directory).
>> 
>> In this example, my domain name is “CMSDomain”.  This is an excerpt from my 
>> web.xml file.   The init-param appears to be named “configuration-location”, 
>> and the value is a path to the Cayenne Modeler xml file relative to classes 
>> (which is part of the standard Tomcat classpath).   It appears that the 
>> filter derives the directory name from the embedded path.
>> 
>> I could not find an example of this in the docs, but this appears to work in 
>> Cayenne 4.X.  If anyone has a better idea, please let me know.
>> 
>>      <filter>
>>              <filter-name>cayenne-CMSDomain</filter-name>
>>              
>> <filter-class>org.apache.cayenne.configuration.web.CayenneFilter</filter-class>
>>              <init-param>
>>                      <param-name>configuration-location</param-name>
>>                      
>> <param-value>config/cayenne/cayenne-CMSDomain.xml</param-value>
>>              </init-param>
>>      </filter>
>>      <filter-mapping>
>>              <filter-name>cayenne-CMSDomain</filter-name>
>>              <url-pattern>/*</url-pattern>
>>      </filter-mapping>
>> 
>> 
>> Joe
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>> On Jul 6, 2015, at 11:48 AM, John Huss <johnth...@gmail.com> wrote:
>>> 
>>> You can use subfolders inside WEB-INF/classes.  These are essentially java
>>> packages, although it doesn't really matter.  How you handle it would
>>> depend on your dev environment and build tool.
>>> 
>>> With ant based projects, just throw in the src folder under whatever
>>> package you want, then ensure your ant script includes it in the build.
>>> 
>>> With maven or other tools you would put in under
>>> src/main/resources/whatever/package/you/want.  With maven I imagine this
>>> just does the right thing.
>>> 
>>> Then in your code to create the runtime you just specify the whole package
>>> in path format.  new
>>> ServerRuntime("/whatever/package/you/want/cayenne-MyApp.xml").  If it
>>> doesn't work in the built version it's probably because you aren't actually
>>> copying the file in the build product.
>>> 
>>> 
>>> On Mon, Jul 6, 2015 at 10:34 AM Joe Baldwin <jfbald...@earthlink.net> wrote:
>>> 
>>>> OK, lets start over.  You say below:
>>>> 
>>>>>>> Yes, XML files can be placed in subdirectories of any CLASSPATH
>>>> directory. So if you have the project file under
>>>> "WEB-INF/classes/org/example/cayenne-myproject.xml" , your location would
>>>> be "org/example/cayenne-myproject.xml".
>>>> 
>>>> 
>>>> 
>>>> And I am reporting that this only works if the config files are in the
>>>> "WEB-INF/classes" directory.   If I put them in a directory, say
>>>> "WEB-INF/classes/cayenne-config” it fails.   My understanding from your
>>>> comment is that it is possible to put them in this directory.   If so, then
>>>> how is this done per Cayenne rules.  I would prefer an example.
>>>> 
>>>> If it is not possible to do so then please let me know.
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On Jul 6, 2015, at 11:14 AM, Andrus Adamchik <and...@objectstyle.org>
>>>> wrote:
>>>>> 
>>>>> Try debugging your app, putting a breakpoint in
>>>> ClassLoaderResourceLocator.findResources(..) method. This may give you an
>>>> idea.
>>>>> 
>>>>> Andrus
>>>>> 
>>>>> 
>>>>>> On Jul 5, 2015, at 9:11 PM, Joe Baldwin <jfbald...@earthlink.net>
>>>> wrote:
>>>>>> 
>>>>>> OK, so the question is “how”.
>>>>>> 
>>>>>> (I spent about 45min hacking different combinations and none worked.
>>>> All I could get working is depositing all the config files in the top
>>>> level WEB-INF/classes dir.  I am sure I am missing something but the
>>>> previous two solutions stopped working with 4.0)
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Jul 5, 2015, at 8:56 PM, Andrus Adamchik <and...@objectstyle.org>
>>>> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>>> On Jul 5, 2015, at 8:51 PM, Joe Baldwin <jfbald...@earthlink.net>
>>>> wrote:
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> "configuration-location" init parameter.”
>>>>>>>> 
>>>>>>>> 
>>>>>>>> This was mentioned in the docs. Is this not good practice?
>>>>>>>> 
>>>>>>>> I would *prefer* to put them in a separate directory under
>>>> “classes”.   Is there a better way to do this - in your experience?
>>>>>>> 
>>>>>>> Yes, XML files can be placed in subdirectories of any CLASSPATH
>>>> directory. So if you have the project file under
>>>> "WEB-INF/classes/org/example/cayenne-myproject.xml" , your location would
>>>> be "org/example/cayenne-myproject.xml". This is a standard way of locating
>>>> any kind of resources in Java via ClassLoader.
>>>>>>> 
>>>>>>> Andrus
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> 
>> 
>> 
> 

Reply via email to