JavaEE + eclipseLink + TomEE提供了java.sql.SQLSyntaxErrorException:用户缺少特权或找不到对象 [英] JavaEE + eclipseLink + TomEE gives java.sql.SQLSyntaxErrorException: user lacks privilege or object not found

查看:89
本文介绍了JavaEE + eclipseLink + TomEE提供了java.sql.SQLSyntaxErrorException:用户缺少特权或找不到对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用REST服务,eclipseLink和mysql创建一个简单的应用程序。
我想在TomEE服务器(apache-tomee-plume-1.7.4)上运行它。

I try to make a simple app using a rest service, eclipseLink and mysql. I want to make this run on a TomEE server (apache-tomee-plume-1.7.4).

我使用eclipse部署应用程序。

I deploy the app with eclipse.

部署似乎还可以

当我进入 http:// localhost:8080 / eleve / 我正在获取:

javax.servlet.ServletException: Error processing webservice request
    org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:98)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

java.io.IOException: Failed to invoke AbstractHTTPDestination
    org.apache.openejb.server.cxf.rs.CxfRsHttpListener.doInvoke(CxfRsHttpListener.java:229)
    org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:94)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: 
Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: ELEVE
Error Code: -5501
Call: SELECT ID, ADRESSE, classe, date_naissance, NOM, PRENOM, SEXE FROM ELEVE
Query: ReadAllQuery(referenceClass=Eleve sql="SELECT ID, ADRESSE, classe, date_naissance, NOM, PRENOM, SEXE FROM ELEVE")
    org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
    org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:324)
    org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:240)
    org.apache.openejb.server.cxf.rs.CxfRsHttpListener.doInvoke(CxfRsHttpListener.java:227)
    org.apache.tomee.webservices.CXFJAXRSFilter.doFilter(CXFJAXRSFilter.java:94)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

这是我的persistence.xml:

Here is my persistence.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0"
        xmlns="http://java.sun.com/xml/ns/persistence"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="notePU" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>com.test.eleve.model.Eleve</class>
        <properties>
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/notes_eleves" />
            <!-- <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> -->
            <property name="eclipselink.logging.level" value="INFO" />
        </properties>
    </persistence-unit>
</persistence>

我必须丢失某些东西,但找不到。

I must be missing something but I can not find what.

我在这里推送了我的代码: gitlab

I pushed my code here: gitlab

感谢您的帮助

推荐答案

我终于设法使其适用于TomEE 1.7和7。

I finally managed to make it works on TomEE 1.7 and 7.

这是我要做的更改:


  • 从以下位置删除与数据库相关的属性persistence.xml

  • 在persistence.xml中通过jta-data-source替换非jta-data-source标签

  • 将mysql连接器jar放入我的服务器/ lib

  • 在我的服务器/conf/tomee.xml中,我已将myDatasource配置添加为资源。

  • 放入@XmlRootElement(name =我的Eleve实体上的删除)(这似乎仅在TomEE <7上是强制性的)

  • Remove the database related properties from the persistence.xml
  • Replace non-jta-data-source tag by jta-data-source in persistence.xml
  • Put the mysql connector jar in my server /lib
  • In my server /conf/tomee.xml I have added myDatasource configuration as a resource.
  • Put @XmlRootElement(name = "eleve") over my Eleve entity (this seems to be only mandatory on TomEE <7)

最后,我认为我的问题是,数据源需要在EE上下文中的服务器conf中进行配置(数据持久性中的源属性只是我想忽略的,所以就好像没有人声明过),并且例外

At the end I think that my issue was that the datasource needs to be configure in the server conf in a EE context (datasource properties in persistence was just ignore I think, so it was like no one was declared) and the exception


用户缺少特权或对象没有发现

user lacks privilege or object not found

来自以下事实:


如果应用程序需要一个数据源并且未声明一个数据源,则
TomEE将使用默认设置动态创建一个。

If a DataSource is needed by the application and one is not declared, TomEE will create one dynamically using default settings.

TomEE文档

我不是100%肯定该解释,但至少问题已解决,如果我误解了某些内容,请不要犹豫发表评论。

I'm not 100% sure of that explanation but at least the problem is solved, don't hesitate to put comments if I misunderstood something.

我已经更新了 gitlab项目

编辑:请注意,您也可以在/WEB-INF/resources.xml文件中配置资源

Be aware that you can also configure the resource in a /WEB-INF/resources.xml file

编辑2:如果您使用的是Eclipse,并且您错误地配置了服务器位置,则也可能会遇到此问题,应将其设置为使用Tomcat安装(控制...)而不是使用工作空间元数据

Edit 2: If you are using Eclipse you can also face this issue if you wrongly configured your server location, it should be set to "use Tomcat installation (take control...)" and not "use workspace metadata"

这篇关于JavaEE + eclipseLink + TomEE提供了java.sql.SQLSyntaxErrorException:用户缺少特权或找不到对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆