Yeah, this looks about right. This is a correct way to use CayenneFilter.
> On Jul 6, 2015, at 12:35 PM, Joe Baldwin <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]>
>>> 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 <[email protected]>
>>> 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 <[email protected]>
>>> wrote:
>>>>>>
>>>>>>
>>>>>>> On Jul 5, 2015, at 8:51 PM, Joe Baldwin <[email protected]>
>>> 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
>>>>>
>>>>>
>>>>
>>>
>>>
>
>