小编Col*_*n M的帖子

Maven多模块项目结构

我正在构建一个基于前端(读取:面向Web)的HTTP API的分布式应用程序,该API调用底层(读取:非面向Web的)Thrift服务.

举个例子,我可能有:

  • 身份验证服务(包含身份验证代码)
  • 核心服务(包含生成的thrift源和一些常见的类,如服务发现和初始化逻辑)

所有单独的服务都依赖于核心服务,HTTP面向Web的API也是如此.我现在将它作为一个多模块项目,但我希望每个项目都是独立的(并在他们自己的存储库中进行跟踪 - 尽管我知道我仍然可以通过多模块构建来实现这一点).

tl;博士 -

是一个常见的构建实践,有一个单独构建的模块(核心服务),然后推送到maven repo(然后作为jar包含在其他项目中),或者在这种情况下更好地做一个多模块项目?

java maven

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

在没有WebMvcConfigurationSupport的情况下注册Spring HandlerInterceptor

我正在尝试HandlerInterceptor使用Java Config在Spring中注册一个实例而不进行扩展WebMvcConfigurationSupport.我正在创建一个带有注释的库,当添加到@Configuration类中时,它会注册一个处理安全注释的拦截器.

我有一个实现使用WebMvcConfigurationSupport#addInterceptors,但与春天的其他自动工作冲突,并覆盖了一些应用程序自己的逻辑.对于应该简单的事情来说,它似乎也非常沉重.我现在正在尝试:

@Configuration
public class AnnotationSecurityConfiguration {

    @Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping;

    @PostConstruct
    public void attachInterceptors() {
        requestMappingHandlerMapping.setInterceptors(new Object[] {
                new SecurityAnnotationHandlerInterceptor()
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,似乎拦截器注册的实例RequestMappingHandlerMapping与应用程序实际用于Web请求的实例完全不同.另外,当BeanFactoryPostProcessor我作为一个实现时,我NullPointerExceptionHealthMvcEndpoint尝试时得到一个beanFactory.getBean(RequestMappingHandlerMapping.class)

java spring spring-mvc

9
推荐指数
2
解决办法
9957
查看次数

部署并提供节俭服务

我在Zookeeper上构建了一个服务发现层,用于在分布式环境中查找Thrift服务.我正在寻找在生产环境中运行这些服务的最佳方法.

目前,它是通过打包部署到Tomcat的战争来完成的.在servlet实例化期间,将创建Spring ApplicationContext,从而创建TThreadPoolServerTomcat内部.

我不喜欢这个,原因有两个:

  • 它使Tomcat变得毫无用处,感觉就像是一个简化部署的黑客
  • 它避免了Tomcat线程池和已经用于确定分发请求的最佳方式的所有逻辑

在试图找到解决这个问题的最佳策略的过程中,我想出了几个选择:

  • 作为一个独立的JAR启动thrift服务(我不喜欢这个,主要是因为我现在需要重新发明应用容器开发人员花了很多时间研究的逻辑
  • 主机通过HTTP进行节俭,从而利用Tomcat线程池和服务请求的逻辑(如果由于 - 尽管是次要的 - 这会导致性能损失,这个问题)
  • 使用不同类型的应用程序容器来托管这些服务

有没有人建议他们以前如何处理托管分布式服务器.我最好只在Tomcat中使用HTTP吗?

java thrift

6
推荐指数
1
解决办法
2251
查看次数

Tomcat 8 JSR 356 WebSocket线程

我在Tomcat 8中使用JSR-356 WebSocket支持来驱动我正在处理的应用程序.到目前为止,看起来所有消息都在一个线程中处理.虽然我理解这背后的原因 - 以及为什么websockets以这种方式实现,有没有办法使用一个ExecutorService来处理进来的消息(没有在我的代码中创建ExecutorService)?

这将允许具有1个(或仅少数几个)网络选择器线程(以支持大量连接的客户端)的可伸缩性,同时允许对实际消息进行标准的基于线程的处理(当需要处理消息时)一个客户).

我没有看到任何特别允许改变的东西.

tomcat websocket tomcat8

5
推荐指数
1
解决办法
2442
查看次数

DefaultMessageListenerContainer未接收消息

我有一个DefaultMessageListenerContainer配置如下:

DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConcurrentConsumers(4);
container.setConnectionFactory(connectionFactory);
container.setDestinationName(String.format("Consumer.%s.VirtualTopic.%s", group, topic));
container.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
container.setSessionTransacted(true);
container.setMessageListener(new DelegatingMessageListener(listener, messageMapper, event));

container.start();
Run Code Online (Sandbox Code Playgroud)

消息容器永远不会收到消息,我的消息监听器永远不会被调用.保持其他所有相同,如果我只是将DefaultMessageListenerContainer切换到SimpleMessageListenerContainer,它可以工作 - 但是连接丢失后SimpleMessageListenerContainer不会恢复

日志中没有错误,几乎没有任何相关消息.有没有人有理由说明为什么会这样?

spring activemq-classic jms spring-jms

5
推荐指数
1
解决办法
3200
查看次数

Deinit 已调用但对象仍在内存中

我在 Xcode 8 和 Swift 2.3 中看到分配工具的奇怪行为。我有一个deinit正在调用的对象 (A) ,除了 A 引用的一个对象之外的所有对象都被释放(据我所知,不是一个单独的内存问题),但该对象继续在分配工具中被列为“实时”和持久的。此外,当我尝试调试它的保留时,我看到的是:

在此处输入图片说明

请注意,我已确认 deinit 正在由以下人员执行:

  • 向 deinit 方法添加打印行
  • 在 deinit 方法中添加断点
  • 验证 A 引用的其他对象是否已取消分配,并且它们收到声称发生在A.__deallocating_deinit方法内部的释放 (-1) 引用计数

然而,由于某种未知的原因,它似乎一直存在。

ios automatic-ref-counting swift

5
推荐指数
1
解决办法
1398
查看次数

Apache DocumentRoot的Gitolite本地工作副本

我有一个使用git和gitolite的系统设置.一切都运作良好,除了我希望我的结构是这样的:

本地环境 - >开发服务器 - >生产服务器

我在开发服务器上有一个repo设置,它已成功克隆到本地环境.现在,我需要的是开发服务器上的本地文件系统工作副本,但我不知道如何使用gitolite执行此操作.

git clone /home/gitolote/repositories/myrepo.git
Run Code Online (Sandbox Code Playgroud)

工作正常,直到我尝试推/拉,此时我得到这个:

remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
Run Code Online (Sandbox Code Playgroud)

关于如何用gitolite做这个的任何想法?

git version-control working-copy gitolite

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

在iPhone应用程序中使用REST API时的安全性

我知道以前曾以各种形式提出过这个问题.但是,我不是在寻找"使用https"的答案.我已经在使用HTTPS了,我并不担心有效载荷来回传输的敏感性.

但是,我正在处理的iPhone应用程序正在与我构建的REST API进行通信(我已经控制了应用程序和服务器 - 因此欢迎任何建议).

我使用OAuth2协议进行身份验证,这意味着我的"API密钥"是客户端ID和客户端密钥的组合,需要传输即可获取access_token.之后,使用access_token包含请求主体的HMAC的头部(使用客户端秘密作为密钥)将所有请求发送到服务器.这种添加的唯一原因是有人无法使用JUST进行API请求access_token.

我正在谈论的API将在我发布应用程序时公开.所以我不一定担心别人能够对它进行API调用.

我关心的是:

  • 人们可以使用我的应用程序的客户端凭据进行API调用(这意味着我无法在服务器端检测到它不是来自我的应用程序)
  • 人们可以滥用我的客户ID允许他们拥有的其他范围,而传统的API用户也不会

我的猜测是,这个问题并没有真正的解决方案(除了使用UIWebView并制作一个美化的webapp),但我想我还是会在这里问一下.

如果应用程序需要使用客户端ID /客户端密码,您能想到保护客户端ID /客户端密钥的方法吗?

security iphone encryption

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

将数据与HTML元素关联(不使用jQuery)

我需要将一些数据与HTML元素相关联,希望避免任何内存泄漏.显然,一个简单的解决方案是在元素上抛出某种标识符,然后创建一个字典映射,将该标识符映射到我需要的数据.但是,这是在用户将添加到其页面的javascript库中,因此我无法控制何时添加或删除元素.

我想要做的是将数据与页面上的HTML元素相关联,同时允许在删除元素时将数据用于GC.有没有办法做到这一点,不涉及编写我自己的定期GC来清理孤立的数据?向HTML元素添加属性是否安全?

html javascript

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

PHP流写缓冲区

我试图以非阻塞方式向流中写入大量数据(~250K).

抽象出复杂性和对象结构,这就是我正在运行的:

$fp = fsockopen('host', 80);
socket_set_blocking( $fp, false );
fwrite( $fp, $string, $length ); // Where $string is a 250K string
Run Code Online (Sandbox Code Playgroud)

但是,数据并非都写入.假设这是PHP的写缓冲区,我设置stream_set_write_buffer( $fp, 0 )但是也没有解决问题.

我把我的fwrite打成了4096B的块 - 看起来客户端发送了3个完整的批次(4096字节)和第四批的~1500B.对fwrite的任何和所有连续调用都返回0字节写入.

有没有人知道如何将这些数据排队以非阻塞的方式发送出去?如果我删除socket_set_blocking( $fp, false );- 一切正常.很明显,这是异步运行它的问题.

你的想法是什么?套接字扩展是否会对此有所帮助?它以不同方式处理缓冲区吗

注意:我故意编写此套接字传输层以避免因各种原因使用curl.使用curl_multi()不是一种选择.

php sockets php-socket

2
推荐指数
1
解决办法
3408
查看次数

检测ajax请求

我正在编写自己的MVC框架来练习,我有一个Request类.我想捕获请求的类型并相应地解析数据,无论是AJAX/JSON调用还是HTML/XML请求.

我目前正在使用:

$_SERVER['HTTP_ACCEPT']
Run Code Online (Sandbox Code Playgroud)

以及当使用var_dump时,返回application/json:

$.ajax({
    type: 'post',
    url: 'index',
    dataType: 'json',
    data: {
       _method: 'put'
    }
});
Run Code Online (Sandbox Code Playgroud)

var_dump($ _ SERVER ['HTTP_ACCEPT'])返回:

string(46) "application/json, text/javascript, */*; q=0.01"
Run Code Online (Sandbox Code Playgroud)

问题: 这种方法可靠吗?它总是有效吗?检测这样的ajax调用有任何安全问题吗?

请注意,我的框架中的所有ajax调用都必须具有dataType:'json',除非它是一种不同类型的调用,如HTMLXML.

php ajax jquery json

2
推荐指数
1
解决办法
3585
查看次数

使用正则表达式,MongoDB发现速度很慢

我目前开发的系统使用MongoDB 2.4.4

我有一个用户集合.

有一个组合索引:{ "LASTNAME" : 1 , "FIRSTNAME" : 1 , "EMAIL" : 1 , "CITY" : 1 , "STATUS" : 1} 我也试过单个索引,没有性能提升

系统包含400.000个测试记录.

查询(来自org.springframework.data.mongodb.core.query.Query的Java调试):

{ "LASTNAME" : { "$regex" : "^Schm"}},
  Fields: { "FIRSTNAME" : 1 , "EMAIL" : 1 , "CITY" : 1 , "STATUS" : 1 ,"LASTNAME" : 1},
  Sort: { "LASTNAME" : 1 , "FIRSTNAME" : 1 , "EMAIL" : 1 , "CITY" : 1 , "STATUS" : 1}
Run Code Online (Sandbox Code Playgroud)

在16ms内完成.真是太棒了.

此查询未显示在MongoDB控制台中(此处没有要发布的调试信息).

但是,我喜欢搜索不仅仅是开头,它也应该不区分大小写.

查询:

{ …
Run Code Online (Sandbox Code Playgroud)

mongodb

0
推荐指数
1
解决办法
4512
查看次数