小编Sup*_*pen的帖子

添加CORS支持后,Tomcat应用程序无法启动

我有一个Tomcat 7项目,它在我的Eclipse集成测试服务器上工作就像一个魅力,但无法在生产服务器上启动.

它之前也曾用于生产,但我不得不添加CORS支持,这在某种程度上使它失败了.

要添加CORS支持,我将其添加到我的pom.xml中

<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-catalina</artifactId>
  <version>8.0.22</version>
  <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这到我的web.xml

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

如果我再次删除这些行,它可以在生产服务器上运行,但CORS不起作用.

ClassNotFoundException当我尝试启动应用程序时,服务器抛出一个奇怪的东西,因为该类显然存在于.war文件中.

catalina日志声称一些.jar文件无法验证,因为"jar not loaded"..jars都在.war中,所以我不明白它失败的原因.

日志输出:

卡塔利娜日志:

May 19, 2015 9:10:29 AM org.apache.catalina.util.LifecycleBase stop
INFO: The stop() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/APIMR]] after stop() had already been called. The second call will be ignored.
May 19, 2015 9:10:29 AM org.apache.catalina.startup.HostConfig deleteRedeployResources
INFO: Undeploying context [/APIMR]
May 19, 2015 9:10:36 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /var/lib/tomcat/webapps/APIMR.war
May …
Run Code Online (Sandbox Code Playgroud)

tomcat maven cors

7
推荐指数
1
解决办法
1万
查看次数

JsDoc:从属性中删除"static"标记

我有用JavaScript编写的图形构造函数.文档有点笨拙.下面是我的代码部分和文档,它不能按我的意愿工作:

function Graph() {
    ....
    var nodes = [];
    Object.defineProperties(this, {
        /**
         * An array of all node handles in the graph
         *
         * @return {Array}
         */
        nodes: {
            get: function() {
                var ids = [];
                for (var id in nodes) {
                    ids.push(id);
                }
                return ids;
            }
        }
    });
    ....
}
Run Code Online (Sandbox Code Playgroud)

基本上,我要做的是确保使用除提供节点列表副本而不是实际节点列表提供的方法之外的其他方法来操作图形.

这很好用,但在JsDoc中,它被定义为static:

<static>    Graph.nodes
            An array of all node handles in the graph
Run Code Online (Sandbox Code Playgroud)

现在,这个属性不是静态的.它适用于所有图形实例.我的猜测是JsDoc识别出属于该nodes属性的定义Object.defineProperties(),并声称这里的所有声明都是静态的.

有没有办法告诉JsDoc这个属性实际上不是静态的?我只能找到@static完全相反的标签.

javascript jsdoc

4
推荐指数
1
解决办法
1526
查看次数

开玩笑:监视正在测试的模块中的其他功能

我正在尝试使用 jest 测试模块。在模块中,我有一个函数作为其他两个函数的前端,并根据其参数委托给它们。我试图弄清楚这些函数是否确实被调用了。

我尝试过使用间谍功能,但它从未被调用。相反,实际的函数被调用,绕过了我的间谍。

我发现的所有模拟和间谍示例都涉及模拟和监视另一个模块而不是正在测试的模块,但在这种情况下,我试图监视正在测试的模块中的函数。这可能吗?有一个更好的方法吗?

示例代码:

// funcs.js

const decide = obj => {
  if (obj.a !== undefined) {
    return funcA(obj);
  } else {
    return funcB(obj);
  }
};

const funcA = obj => obj.a;
const funcB = obj => obj.b;

export { decide, funcA, funcB };
Run Code Online (Sandbox Code Playgroud)
// funcs.test.js

import * as fns from "./funcs";

describe("decide", () => {
  it("should delegate to 'funcA' when the parameter has an 'a' property", () => {
    const spy = jest.spyOn(fns, "funcA");
    fns.decide({ a: "Cake" …
Run Code Online (Sandbox Code Playgroud)

unit-testing jestjs

4
推荐指数
1
解决办法
1737
查看次数

Meteor MongoDB订阅以10秒的间隔提供数据而不是实时数据

我相信这更像是一个MongoDB问题,而不是一个流星问题,所以如果你对mongo有很多了解,但对流星一无所知,不要害怕.

在开发模式下运行Meteor,但将其连接到外部Mongo实例而不是使用Meteor的捆绑实例,会导致同样的问题.这让我相信这是一个Mongo问题,而不是流星问题.


实际问题

我有一个流星项目,它不断地将数据添加到数据库中,并在应用程序中实时显示它们.它在开发模式下完美运行,但在构建和部署到生产时具有奇怪的行为.它的工作原理如下:

  • 一个单独运行的小脚本收集广播UDP包并将它们推送到mongo集合中
  • 然后,Meteor应用程序发布此集合的子集,以便客户端可以使用它
  • 客户端订阅并实时更新其视图

这里的问题是订阅似乎只获得大约每10秒一次的数据,而这些UDP包到达并每秒数次被推入数据库.这使得应用程序表现得很奇怪

UDP消息的收集最为明显,但不限于此.它发生在订阅的每个集合中,即使那些没有被外部脚本填充的集合也是如此

通过mongo shell或通过应用程序直接查询数据库,表明文档确实按照预期添加和更新.该出版物没有注意到,并且似乎默认以10秒的间隔查询

Meteor使用MongoDB上的oplog尾部来查找何时添加/更新/删除文档并基于此更新出版物

有没有比我更多Mongo经验的人可能对这个问题有什么了解?


作为参考,这是死的简单发布功能

/**
 * Publishes a custom part of the collection. See {@link  https://docs.meteor.com/api/collections.html#Mongo-Collection-find} for args
 *
 * @returns {Mongo.Cursor}      A cursor to the collection
 *
 * @private
 */
function custom(selector = {}, options = {}) {
        return udps.find(selector, options);
}
Run Code Online (Sandbox Code Playgroud)

和订阅它的代码:

Tracker.autorun(() => {
        // Params for the subscription
        const selector = {
                "receivedOn.port": port
        };
        const options = {
                limit,
                sort: {"receivedOn.date": -1},
                fields: …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js meteor

3
推荐指数
1
解决办法
474
查看次数

标签 统计

cors ×1

javascript ×1

jestjs ×1

jsdoc ×1

maven ×1

meteor ×1

mongodb ×1

node.js ×1

tomcat ×1

unit-testing ×1