0

我正在尝试基于此链接在我的本地 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

可能是什么问题呢?

4

2 回答 2

0

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

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

希望这对你有用。

于 2012-07-26T20:50:14.553 回答
0

当鸣则已一鸣惊人?

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

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

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

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

于 2012-07-27T12:23:20.567 回答