【问题标题】:restSQL war deployment issuerestSQL 战争部署问题
【发布时间】:2012-07-26 11:14:35
【问题描述】:

我正在尝试基于这个link.在我的本地tomcat安装中部署restSQL

从我的 tomcat webapps 文件夹:

webapps\restsql-0.8\WEB-INF\classes\resources\properties

我已修改'default-restsql.properties' 以设置正确的数据库连接

并在该位置添加/创建文件夹时保留属性'sqlresources.dir=/resources/xml/sqlresources'

我也在web.xml中修改过:

<context-param>
    <param-name>org.restsql.properties</param-name>
    <param-value>/WEB-INF/resources/properties/default-restsql.properties</param-value>
</context-param>

我很确定 default.restsql.properties 在我访问此资源时已加载:

http://localhost:8080/restsql-0.8/conf

我收到以下回复:

Properties loaded from /resources/properties/default-restsql.properties:
log4j.configuration = resources/properties/default-log4j.properties
org.restsql.security.Authorizer = org.restsql.security.impl.AuthorizerImpl
org.restsql.core.RequestLogger = org.restsql.core.impl.RequestLoggerImpl
**sqlresources.dir = /resources/xml/sqlresources**
database.driverClassName = com.mysql.jdbc.Driver
logging.config = resources/properties/default-log4j.properties
database.user = root
org.restsql.core.Factory.ResponseSerializerFactory = org.restsql.core.impl.ResponseSerializerFactoryImpl
org.restsql.core.SqlBuilder = org.restsql.core.impl.SqlBuilderImpl
database.password = root
org.restsql.core.Factory.ConnectionFactory = org.restsql.core.impl.ConnectionFactoryImpl
org.restsql.core.SqlResourceMetaData = org.restsql.core.impl.SqlResourceMetaDataMySql
org.restsql.core.HttpRequestAttributes = org.restsql.core.impl.HttpRequestAttributesImpl
logging.facility = log4j
response.useXmlSchema = false
org.restsql.core.Factory.RequestFactory = org.restsql.core.impl.RequestFactoryImpl
database.url = jdbc:mysql://localhost:3306/
logging.dir = /var/log/restsql
org.restsql.core.Factory.SqlResourceFactory = org.restsql.core.impl.SqlResourceFactoryImpl
request.useXmlSchema = false
response.useXmlDirective = false
org.restsql.core.Factory.RequestDeserializerFactory = org.restsql.core.impl.RequestDeserializerFactoryImpl

Properties using defaults:
org.restsql.core.Factory.Connection = org.restsql.core.impl.ConnectionFactoryImpl
java.util.logging.config.file = resources/properties/default-logging.properties
request.useXmlDirective = false
org.restsql.properties = /resources/properties/default-restsql.properties

但是当我访问这些资源时

http://localhost:8080/restsql-0.8/res/

我收到以下回复:

SQL 资源目录 /resources/xml/sqlresources 不存在...请 更正您的 restsql.properties 文件中的 sqlresources.dir 属性

虽然文件夹确实存在:webapps\restsql-0.8\WEB-INF\classes\resources\xml\sqlresources

可能是什么问题?

【问题讨论】:

  • /resources/xml/sqlresources 是否引用了文件系统中的绝对路径?尝试创建这个目录来测试它...
  • 我尝试将属性更改为:sqlresources.dir=%TOMCAT_HOME%/webapps/restsql-0.8/WEB-INF/classes/resources/xml/sqlresources 仍然遇到同样的问题。当我通过命令提示符对该目录执行“cd”时,我会进入正确的文件夹

标签: java sql rest tomcat


【解决方案1】:

抱歉,您在部署时遇到问题。 restSQL 需要主属性文件的绝对路径。除了在类路径中查找默认值外,它无法搜索其 WAR 文件或展开的 Web 应用程序目录。

大多数路径指向其他文件,在主要的 restSQL 属性文件中引用必须是绝对的。唯一相对的是 logging.config。请查看Deployment 了解所有详细的部署说明。

希望对你有用。

【讨论】:

  • 确实如此,但是当我访问“资源”时我遇到了另一个问题:定义需要表元素,由列 country_id 引用我怀疑这是因为表是空的,因为我我无法从 pqAdmin 中运行 sakila-data.sql。就您而言,您是如何填充 sakila 表的?我尝试了“psql”,但执行“/i C:/postgresql/sakila-data.sql”没有做任何事情,表仍然是空的......
【解决方案2】:

下雨时会倾盆大雨?

听起来您在运行其中一个数据库创建脚本时遇到了问题?是在restsql-sdk/WebContent/database/postgresql 中吗?您是否在运行 create-sakila.bat 时出错?也许您的 psql 可执行文件不在您的路径中。您可以编辑该文件以将其临时添加到您的 PATH 环境变量中。

如果资源查询没有返回数据,您将不会收到任何 5xx 错误。你会得到一个 200 和一个空的 readResponse 文档。

您的问题可能是资源定义元数据问题。 country_id 是否来自国家表?国家/地区是否定义为元数据中的表?你能发布资源定义吗?

您查看过http://restsql.org/doc/SqlResourceRules.html 的SQL 资源规则吗?抱歉,不允许使用 SQL 函数和视图。您必须使用普通的旧列和表。

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多