OK. One more level down the rabbit hole now…

now that I have velocity seemingly loading, I get this in the stack trace:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class 
org.apache.cayenne.access.jdbc.SQLTemplateProcessor
at 
org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:102)
at 
org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:87)
at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:280)
at 
org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:442)
at 
org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:70)
at 
org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomainQueryAction.java:415)
at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:877)
at 
org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:412)
at 
org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:122)
at org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:758)
at 
org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:1009)
at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:748)
at 
org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:350)
at 
org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:106)
at 
org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:93)
at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:989)
at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:978)
at 
com.mesca.services.AccessorialService.allAccessorialRows(AccessorialService.java:90)

I'm very puzzled as to why other Cayenne classes and methods sen to work fine. 
For example, this code works within the same web service:

ServerRuntime cayenneRuntime = new 
ServerRuntime("cayenne-cayenne-service-template.xml");
ObjectContext context = cayenneRuntime.getContext();


SelectQuery select1 = new SelectQuery(Accessorial.class);
Collection<Accessorial> accessorials = context.performQuery(select1);

Just in general, I've yet to get a SQLTemplate or EJBQLQuery to work when 
running in glassfish, although using SelectQuery has given me no problems.



On Apr 16, 2013, at 9:59 AM, Mike Kienenberger 
<[email protected]<mailto:[email protected]>> wrote:

My first guess would be that you have more than one velocity jar files
in the classpath.
I guess a second possibility is that you have no velocity jar files in
the classpath.

We have an in-house findClass.jsp (backed by a ClassPath bean) which
we use for problems like this to identify all definitions of a class
in the classpath.   Unfortunately, I don't have permission to share
this.

But you could probably come up with something similar:


Here's a jsp that looks like it identifies the first definition of a class.
http://mcpaint.tistory.com/13


Here's how to show all resources
http://www.mkyong.com/java/how-to-print-out-the-current-project-classpath/

You'd probably want to combine the two.


Here's something else I came across while trying to find an example of
what you needed.  Not sure how easy it would be to integrate with your
app.

http://classpathhelper.sourceforge.net/

On Tue, Apr 16, 2013 at 8:38 AM, Rick Bonnett <[email protected]> wrote:
I'm trying to use SQLTemplate queries and running into a strange problem. This 
snippet works fine if I run it in a plain Java application, but fails if I then 
use it within a web service running under Glassfish.
In both cases I am using the same cayenne metadata files. I have also noticed 
the same issue when using EJBQL queries.


ServerRuntime cayenneRuntime = new 
ServerRuntime("cayenne-cayenne-service-template.xml");
ObjectContext context = cayenneRuntime.getContext();


SQLTemplate  sql = new SQLTemplate(Accessorial.class,"SELECT * FROM 
live.tbl_accessorials");
String pgSql = "SELECT * FROM live.tbl_accessorials";
sql.setTemplate(PostgresAdapter.class.getName(), pgSql);
Collection<Accessorial> accessorials = context.performQuery(sql);


I have tried this both with and without the Postgres specific template - same 
result either way. Works fine in a console app, fails running under the web 
server.

This seems to be the relevant section of the stack trace:

Caused by: java.lang.NoClassDefFoundError: 
org/apache/velocity/runtime/parser/ParseException
at 
org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:102)
at 
org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:87)
at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:280)
at 
org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:442)
at 
org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:70)
at 
org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomainQueryAction.java:415)
at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:877)
at 
org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:412)
at 
org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:122)
at org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:758)
at 
org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:1009)
at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:748)
at 
org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:350)
at 
org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:106)
at 
org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:93)
at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:989)
at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:978)
at 
com.mesca.services.AccessorialService.allAccessorialRows(AccessorialService.java:83)

Any ideas on what I am missing here?

Thanks
Rick


Reply via email to