Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 角度路由解析器中对同一服务的两个资源调用_Java_Angularjs_Multithreading - Fatal编程技术网

Java 角度路由解析器中对同一服务的两个资源调用

Java 角度路由解析器中对同一服务的两个资源调用,java,angularjs,multithreading,Java,Angularjs,Multithreading,我有一个控制器,它在加载路由之前有一个解析器。我的解析器设置两个常量:viewA和viewB。这两个常量都是通过调用同一服务上的两个不同端点来设置的。该服务调用同一个db,根据我传递的id重设数据 角度模块 angular.module("ModuleA", ["ngRoute"]) .config(["$routeProvider", "moduleResolver", function ($routeProvider, moduleResolver) {

我有一个控制器,它在加载路由之前有一个解析器。我的解析器设置两个常量:viewA和viewB。这两个常量都是通过调用同一服务上的两个不同端点来设置的。该服务调用同一个db,根据我传递的id重设数据

角度模块

 angular.module("ModuleA", ["ngRoute"])
    .config(["$routeProvider", "moduleResolver",
        function ($routeProvider, moduleResolver) {
            $routeProvider
                .when('/route1', {
                    templateUrl: 'route1.html',
                    controller: "route1Ctrl",
                    resolve: moduleResolver
                })
                .when('/route2', {
                    templateUrl: 'route2.html',
                    controller: "route2Ctrl",
                    resolve: moduleResolver
                })
        }])
angular.module("ModuleA")
    .service('moduleService', ['$q', '$resource',  
        function ($q, $resource) {

           this.getResource= function (resourceToCall) {
                var defer = $q.defer();
                $resource("url based on resourceToCall passed in", {}, {})
                        .get({}, function (result) {
                            defer.resolve(result);
                        },
                        function (result) {
                            defer.reject(result);
                        });
                return defer.promise;
           }

           this.mapResourceToViewA = function() {
             //map result from resource call to view model for View A
           }

           this.mapResourceToViewB = function() {
             //map result from resource call to view model for View B
           }

    }]);
解析器

angular.module("ModuleA")
    .constant("moduleResolver", {

        "viewA": ["moduleService", function(moduleService) {
            return moduleService.getResource("resourceA")
                .then(moduleService.mapResourceToViewA);
        }],
        "viewB": ["moduleService", function(moduleService) {
            return moduleService.getResource("resourceB")
                .then(moduleService.mapResourceToViewB);
        }]
    });
服务

 angular.module("ModuleA", ["ngRoute"])
    .config(["$routeProvider", "moduleResolver",
        function ($routeProvider, moduleResolver) {
            $routeProvider
                .when('/route1', {
                    templateUrl: 'route1.html',
                    controller: "route1Ctrl",
                    resolve: moduleResolver
                })
                .when('/route2', {
                    templateUrl: 'route2.html',
                    controller: "route2Ctrl",
                    resolve: moduleResolver
                })
        }])
angular.module("ModuleA")
    .service('moduleService', ['$q', '$resource',  
        function ($q, $resource) {

           this.getResource= function (resourceToCall) {
                var defer = $q.defer();
                $resource("url based on resourceToCall passed in", {}, {})
                        .get({}, function (result) {
                            defer.resolve(result);
                        },
                        function (result) {
                            defer.reject(result);
                        });
                return defer.promise;
           }

           this.mapResourceToViewA = function() {
             //map result from resource call to view model for View A
           }

           this.mapResourceToViewB = function() {
             //map result from resource call to view model for View B
           }

    }]);

我尝试在冲突解决程序中执行这些调用时出错。我是否需要调用$digest()来解析第一个调用,或者它触发下一个调用。我应该链接解析程序中的资源调用吗。我不想这样做,因为从技术上讲,它们是两个独立的模型,我想保持独立,而且我不想改变映射方法来回报承诺。

在这么长的描述之后,您不能错过相关的细节,错误是什么?这是第二次资源调用获取resourceB返回的500服务器错误,但是,当我从浏览器url执行相同的调用时,资源调用工作正常。我是否丢失了客户端上的某些内容并破坏了服务器。我使用并行测试套件进行了soapUI测试,服务器似乎可以处理并行请求。你知道当我从客户端触发多个调用时,它似乎不起作用吗?你应该看到你调用的结构是失败的,并且运行良好。可能发送的内容不正确。已修复该问题。这是服务器端的问题。被触发的java服务随后启动了另一个HTTP客户端连接。java服务未配置为处理多个连接。我们最终使用了PoolgClientConnectionManager类,解决了这个问题。