小编Dav*_*d V的帖子

如何在Java SDK中退出SQS读取

我们有一个Java Web服务,用于轮询AWS SQS队列以获取消息.它使用最长20秒的等待时间.在Tomcat中更新服务时,Tomcat会尝试关闭现有服务,然后启动更新后的版本.发生这种情况时,如果正在读取队列,则线程被卡住并且Tomcat无法阻止它,从而导致内存泄漏.从我的实验中,只有当Tomcat在队列中等待时尝试停止服务时,才会发生此内存泄漏.

如何在关机过程中停止Java中的SQS队列?

这里有一些更多的细节.

Jan 03, 2014 7:52:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application appears to have started a thread named [pollSQSQueue-1] but has failed to stop it. This is very likely to create a memory leak.
Jan 03, 2014 7:52:52 PM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application created a ThreadLocal with key of type [com.amazonaws.auth.AWS4Signer$2] (value [com.amazonaws.auth.AWS4Signer$2@71f69c90]) and a value of type [java.text.SimpleDateFormat] (value [java.text.SimpleDateFormat@ef87e460]) but failed to remove it when the web application was stopped. Threads …
Run Code Online (Sandbox Code Playgroud)

java spring multithreading amazon-sqs amazon-web-services

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

如何使用Maven使用其他文件更新现有的war文件?

我想用一些额外的类文件和jar文件更新Maven中的一个开源war文件.我还需要用自己的配置文件替换一个配置文件.

我看到这样做的最简单方法是从基本war文件复制Java源文件和配置文件,并将它们检入我的源存储库.这可以工作,但它要求我复制源文件和配置文件.因此,我想要做的是构建基本war文件,仅检入war文件,然后运行maven构建,添加我的类文件,额外的jar文件,并替换基本战争中的一个配置文件.Maven构建的输出将是一个war文件.

有没有人对Maven如何做到这一点有任何建议?

顺便说一句,基本文件来自jUDDI - 它是判决战.我认为问题的答案并不依赖于特定的war文件.

java maven-2 maven

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

将 RDF 转换为 SQL/RDBMS

我发现有很多项目可以提供从 SQL 到 RDF 的转换。有什么可以从 RDF 转换为 SQL 的吗?它最好使用与 SQL 到 RDF 相同的映射。

sql rdbms rdf

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

在Objective-C中消除参数名称与实例变量名称的歧义的良好实践

我在Objective-C中遇到了一个相当常见的场景,我将一个变量传递给一个init方法,然后将它分配给一个同名的实例变量.但是我没有找到一种方法来扩展变量的范围,以澄清哪个是来自message参数的值,哪个是实例变量.

说我有一些类,如下所示:

@interface MyObject
{
    NSString *value;
}
- (id)initWithValue:(NSString *)value;
@end
Run Code Online (Sandbox Code Playgroud)

在我的实现中,我希望我的init方法看起来像这样:

- (id)initWithValue:(NSString *)value
{
    self = [super init];
    if(self) {
        self.value = value;  // This will not work with instance variables
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道三种解决方案:

  1. 创建一个允许调用的属性 self.value
  2. 重命名我的实例变量,例如 _value
  3. 重命名我的init参数变量,例如initValueargValue

我对这些解决方案都不满意.添加属性要么使该属性在接口上公开可用,要么如果我使用扩展,则将其隐藏在继承者中.我也不喜欢为变量设置不同的名称或使用下划线,这可能来自其他语言(如Java和C#)的开发.

有没有办法消除消息参数中的实例变量的歧义?如果没有,Cocoa中是否有编码指南来解决这个问题?我喜欢在适当的时候遵循风格指南.

更新

在考虑如何在C中执行此操作后,我想出了解决方案self->value.这有效,但它会产生一个编译器警告,即'value'Local声明隐藏了实例变量.所以这不是一个令人满意的解决方案,因为我有一个零警告目标.

iphone cocoa objective-c ios

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

更新Maven多模块项目中的版本

我有Maven多模块项目,我想使用脚本将开发版本更新为给定值.聚合器POM只是一个聚合器,孩子们不会从中继承.这很重要,因为工件都继承自其他POM文件.这是我的结构

aggregator/
--projectA
--projectB
Run Code Online (Sandbox Code Playgroud)

此外,projectB还有Maven依赖projectA.

首先我试过:

mvn -DnewVersion=0.28-SNAPSHOT -DupdateMatchingVersions=true versions:set
Run Code Online (Sandbox Code Playgroud)

它只更新了aggregator项目的版本.

如果我运行Maven发布过程,它会正确更新 在发布版本之后使用新开发版本projectB的依赖性projectA.因为发布过程处理得很好,我认为使用发布插件可能会解决我的问题.

所以我尝试了以下方法:

mvn -DdevelopmentVersion=0.28-SNAPSHOT -DautoVersionSubmodules=true --batch-mode release:update-versions
Run Code Online (Sandbox Code Playgroud)

这正确地更新了我的所有子项目.但它没有更新projectB的依赖版本projectA.

什么是更新项目中所有开发版本的简单方法,包括projectB依赖于projectA

maven-3 maven

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

如何更正 Spring MVC RequestMapping 顺序?

我有一个使用以下 RequestMapping 运行的现有 Spring MVC 服务。

@RequestMapping(value = "{user}/**", method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)

我现在需要使用以下 RequestMapping 向同一个控制器添加一个新方法。

@RequestMapping(value = "api/{user}/**", method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)

当我针对新 URL 进行测试时,Spring 总是选择第一个函数,因此无法访问第二个函数。

无论如何,我可以让 Spring 使用我的新“api”方法吗?我能想到的唯一选择是在我的 web.xml 中创建一个新的 Java servlet,但我想做一些更简单的事情。我确实尝试使用@Controller和制作两个不同的控制器@Controller("api"),但这并没有解决问题。

java spring spring-mvc

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

如何在Spring Boot中指定回退请求映射

我们有一个端点,可以根据Accept标头返回不同的响应.特别是,它可以返回zip文件,视频文件或音频文件.

映射1:

@RequestMapping(value = "endpoint",
        method = RequestMethod.GET,
        produces = {"video/*", "audio/*"})
Run Code Online (Sandbox Code Playgroud)

Mappping 2:

@RequestMapping(value = "endpoint",
        method = RequestMethod.GET, produces = {"application/zip", "*/*"})
Run Code Online (Sandbox Code Playgroud)

此设置将采用Accept: video/*并转到映射1(这是我们想要的).但是,Accept: video/mp4导致java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path异常.

我本来期望video/mp4更接近地匹配映射1并加载它.确实,这正是我们想要的.

我们可以删除*/*,然后Accept: video/mp4继续映射1.但是,我们确实需要*/*转到映射2.

为什么不Accept: video/mp4匹配映射1,因为这是一个更接近的匹配?

如果没有其他接受标头更接近匹配,我们可以将此端点配置为具有默认方法吗?然后我们可以让映射1仅声明它产生application/zip.

我们正在使用Spring Boot 1.5.3.

java spring spring-mvc spring-boot

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

带有 OAuth2 丢失会话的 Spring Security

我们有一个使用 Spring Security、OAuth2 登录和 Zuul 路由的基于 Spring Boot 的网关。它还使用 Spring Session 在 Redis 中存储会话。此网关在会话中存储 OAuth2 令牌并将 OAuth2 承载令牌转发到后端服务。

我们有一个问题,即用户经常被注销。这似乎大约每小时发生一次。我们甚至不太确定是什么导致了所有不同的工具到位。

我们在浏览器中的会话 cookie 会在更长的时间内过期。所以我怀疑是 Spring 使会话无效,或者 OAuth2 令牌过期。

从代码的快速检查来看,似乎OAuth2TokenRelayFilter支持刷新令牌。这样对吗?

如何找出造成这种情况的原因并解决它?

作为参考,我们正在使用这些版本:

  • 春季启动 2.1.12
  • Spring Cloud Greenwich.SR4

以下是一些相关的片段。

我们的网页安全配置。

@Configuration
@EnableWebSecurity
@EnableOAuth2Sso
@Order(SecurityProperties.BASIC_AUTH_ORDER - 2)
@Profile("!security-disabled")
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
    @Override
    public void configure(HttpSecurity http) throws Exception {
        // @formatter:off
            http
                .authorizeRequests()
                    .antMatchers("/login", "/login/**", "/favicon.ico").permitAll()
                    .antMatchers("/signout").authenticated()
                    .anyRequest().hasAnyRole("ADMIN", "MEMBER")
                    .and()
                .csrf()
                    .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                    .and()
                .httpBasic()
                    .disable()
                .formLogin()
                    .disable()
                .logout()
                    .logoutUrl("/signout")
                    .deleteCookies("SESSION") …
Run Code Online (Sandbox Code Playgroud)

spring spring-security spring-boot spring-security-oauth2

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

生成大流进行测试

我们有一个 Web 服务,我们可以在其中上传文件,并希望编写一个集成测试来上传一个有点大的文件。测试过程需要生成文件(我不想在源代码管理中添加一些更大的文件)。

我希望生成一个大约 50 MB 的流来上传。数据本身并不重要。我用内存中的对象尝试了这个,这很容易,但我的内存不足。

集成测试是用 Groovy 编写的,因此我们可以使用 Groovy 或 Java API 来生成数据。我们如何生成用于上传的随机流,而无需一直将其保存在内存中?

java groovy

4
推荐指数
2
解决办法
2007
查看次数

我可以在更新处理程序的响应中返回新修订吗?

我有一个CouchDB更新处理程序,并希望它返回类似于常规文档PUT或POST的响应.在成功更新时,以下内容如下所示.

{"ok": true, "id": "some_doc_id", "rev": "1-cc44942419c99df052314874d120e316"}
Run Code Online (Sandbox Code Playgroud)

问题是在更新处理程序Javascript代码中我只能访问当前版本.我需要响应以在更新发生返回版本.在这种情况下,它将是修订版2.

我可以以某种方式访问​​我的更新处理程序中的新修订版本吗?

couchdb couchapp

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

验证 Maven 原型属性

有没有办法验证提供给 Maven 原型的属性?如果是这样怎么办?

我的 archetype-metadata.xml 文件中有一个自定义的 requiredProperty 。这些值必须匹配某个正则表达式,我想在 archetype:generate 期间验证这一点。

maven-2 maven maven-archetype

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

如何将PreAuthorize与异步Spring MVC控制器一起使用

我有一个Spring MVC服务,可以让我上传文件。它使用@PreAuthorizeSpring Security来处理对资源的访问控制。控制器通过使用Callable来使用Servlet 3异步servlet。

@PreAuthorize("...")
@RequestMapping(value = "upload", method = RequestMethod.PUT)
public Callable<ResponseEntity> upload(final InputStream inputStream)
{
    return new Callable<ResponseEntity>()
    {
        @Override
        public ResponseEntity call() throws Exception
        {
            ...
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

服务中的某个位置-我的代码之外-引发了异常。

An Authentication object was not found in the SecurityContext
Run Code Online (Sandbox Code Playgroud)

该异常似乎是由cglib为我的Spring控制器生成的代码引发的。这是大部分堆栈跟踪。

org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext
    at org.springframework.security.access.intercept.AbstractSecurityInterceptor.credentialsNotFound(AbstractSecurityInterceptor.java:339) ~[spring-security-core-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:198) ~[spring-security-core-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:60) ~[spring-security-core-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631) ~[spring-aop-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at com.testing.upload.controller.RESTService$$EnhancerByCGLIB$$66a0c4c9.upload(<generated>) ~[spring-core-3.2.4.RELEASE.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_65]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_65] …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-security servlet-3.0

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

如何减少Spring应用程序上下文中的重复

我有一些我创建的bean,它们都使用类似的模式进行bean实例化.顶级对象都非常相似,但它们包含的对象因字符串构造函数参数而异.除了两个实例THIS CHANGES A和一个实例之外,每个顶级bean中的所有内容都是相同的THIS CHANGES B.下面是我的一个豆子.除了THIS CHANGES值之外,其他的完全相同.

<bean id="mover1" class="CustomDataMover">
        <constructor-arg ref="session"/>
        <constructor-arg>
            <bean class="DataCache">
                <constructor-arg>
                    <bean class="AllValuesReader">
                        <constructor-arg ref="databaseConnector"/>
                        <constructor-arg value="THIS CHANGES A"/>
                        <constructor-arg value="v1"/>
                        <constructor-arg value="v2"/>
                    </bean>
                </constructor-arg>
            </bean>
        </constructor-arg>
        <constructor-arg ref="customUpdate"/>
        <constructor-arg value="THIS CHANGES B"/>
        <constructor-arg>
            <bean class="ValueGenerator">
                <constructor-arg>
                    <bean class="LatestValueRetriever">
                        <constructor-arg ref="databaseConnector"/>
                        <constructor-arg value="v3"/>
                        <constructor-arg value="v4"/>
                        <constructor-arg value="THIS CHANGES A"/>
                    </bean>
                </constructor-arg>
            </bean>
        </constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)

如何减少我的bean中的重复量?我正在寻找一些方法来制作某种模板.此外,请注意我确实有其他bean的参考.

java spring applicationcontext

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