小编Pie*_*nry的帖子

Spring:@Transactional @Scheduled方法抛出TransactionException

(还是有点新的春天)

我需要的是在同一时间,服务方法@Scheduled@Transactional,让我得到调用DAO在里面.

声明式事务已启用,事务管理器org.springframework.orm.hibernate3.HibernateTransactionManager基于hibernate会话工厂.

服务类不实现任何接口,因此使用CGLIB代理.

这个设置一般工作正常(从Web堆栈调用的方法,即Struts),但是这个方法在调度程序调用时引发异常.

以下是相关的代码:

服务方法(调用类ClientWakeAndTerminateManager):

@Scheduled(initialDelay = 5000, fixedRateString = "${rmi.server.threads.clientsScheduleManagement.rate}")
    @Transactional(readOnly = true)
    public void runCheck(){

        //Call a read-only DAO method (the DAO is @Autowired as a class field)

        //do some stuff with the data loaded from DB

    }
Run Code Online (Sandbox Code Playgroud)

我的应用程序上下文的相关部分:

<!-- switch on the transactional infrastructure -->
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

    <!-- Utility class to execute transactional code where use of annotation is not possible -->
    <bean class="org.springframework.transaction.support.TransactionTemplate" id="txTemplate">
        <constructor-arg …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-annotations

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

如何在maven构建期间覆盖WAR文件中的文件?

我有一个Java webapp项目,我在Eclipse(更准确地说是MyEclipse 10)中开发并使用Maven 3构建.

我有以下布局(仅包括与我的问题相关的文件:

project root
|-- src
|   |-- main
|   |   |-- java
|   |   |-- resources
|   |   |   |-- log4j.xml
|   |   |   +-- struts.properties
|   |   |-- webapp
|   |   |   |-- META-INF
|   |   |   |   +--context.xml
|   |   |-- config
|   |   |   |-- test
|   |   |   |   |--log4j.xml
|   |   |   |   |--struts.properties
|   |   |   |   +--context.xml
|   |   |   +-- prod
|   |   |   |   |--log4j.xml
|   | …
Run Code Online (Sandbox Code Playgroud)

eclipse myeclipse maven maven-war-plugin maven-profiles

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

在一个多模块项目中,maven模块可以访问它所依赖的另一个模块的传递测试范围的依赖关系吗?

我有一个多模块Maven + Spring项目.一些模块依赖于其他模块.

假设我们有一个名为services依赖于命名模块的模块persistence.

服务模块:

  • 在Spring级别,导入persistence上下文
  • 在Maven级别,取决于persistence模块

persistence模块定义了一些与...持久性相关的配置:数据源,JPA,事务......

它有一些依赖性来测试限于测试范围的DB(JDBC驱动程序,DBCP,H2),因为在部署应用程序时,DataSource将在容器(Tomcat)中定义并通过JNDI访问.

现在,我想在services模块的Maven测试阶段访问模块的测试范围(传递)依赖关系persistence.

所述的Maven手册(表3.1)说,通常,测试范围依赖是不可传递地.

是否有可能在多模块项目的背景下以某种方式获取它们?

如果没有什么是好的选择?(在父pom中定义测试依赖项?...)

dependencies unit-testing maven multi-module

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

在java hashmap实现键中首先分配给对象然后进行比较

看java的hashmap实现,无法理解一些行背后的原因.在下面从这里复制的代码中,在365-367行中,我无法理解他们为什么先将e.key赋值给k然后将==与key [(k = e.key)== key进行比较].为什么不直接做(e.key == key).此模式在代码中出现多次.

359 
360     final Entry<K,V> getEntry(Object key) {
361         int hash = (key == null) ? 0 : hash(key.hashCode());
362         for (Entry<K,V> e = table[indexFor(hash, table.length)];
363              e != null;
364              e = e.next) {
365             Object k;
366             if (e.hash == hash &&
367                 ((k = e.key) == key || (key != null && key.equals(k))))
368                 return e;
369         }
370         return null;
371     }
Run Code Online (Sandbox Code Playgroud)

java hashmap

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

哪个简单的文件管理系统?

对于资金不多的中小型NGO,我正在寻找一个简单的文档管理系统(不是Web CMS).要求相对简单:

  • 基于网络
  • 免费(如免费啤酒)或非常便宜,如果它也是开源的话更好
  • 能够存储电子文档(Word,PDF,...)和扫描的纸质文档(PDF/jpeg /任何图像格式)
  • 除了一些元数据:文档的名称,它所属的项目/部门,作者,日期,地点,一些识别代码,简短描述,......

可选但很好:

  • 版本
  • 索引/搜索单词/ pdf/text/...文档

根据我对SO的网络和其他线程的研究,我归结为这三种产品:

  • KnowledgeTree(在本地安装,而不是SAAS)
  • 露天
  • Nuxeo DM

对于KT的偏爱,另外两个人对我们的简单要求感觉有点过分.我也在关注MS Sharepoint Foundation(ex-Sharepoint Services),但这意味着购买我认为他们不想要的Windows Server许可证.

有人可以给我一些关于这些产品的反馈,特别是KT吗?你会选择(或避免)哪一个?我错过了还有其他合适的解决方案吗?欢迎任何信息!

document ecm content-management-system

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

Angular2:HTTP错误处理

我试图重现以下基于Angular2的Ionic2应用程序中使用Angular 1.x拦截器和承诺成功实现的行为:

  1. 拦截HTTP请求错误
  2. 如果状态代码是401,那么

    一个.再提出注册客户的请求.这将提供一些我随后可以附加到每个请求的令牌.

    湾 重试orignal请求并通过promise/observable将结果提供给调用者

  3. 如果错误状态是401之外的其他任何内容,则只需将流程正常地传递给调用者

注意:注册过程不需要用户的任何干预(没有登录),所以我希望它对用户完全透明.我首次加载应用时注册一次,但会话最终会过期,我需要自动重新注册.

这是原始的Angular 1实现(我只包括responseError拦截器的一部分):

responseError : function(rejection){
    if(rejection.status == 401){
        $log.info('Intercepting unauthorized 401 response. Will try to re-register the session and retry the request.');

        var security = $injector.get('SecurityService');
        var $http = $injector.get('$http');

        return security.registerSession().then(function(){
            return $http(rejection.config);
        });

    }else{
        return rejection;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我已经包装了Angular2的HTTP服务,我可以做一些简单的事情,比如为每个请求添加一个标头.但是,我正在努力使用Angular2和Observables重现相同的行为.

到目前为止我的尝试,这是我的服务将调用的HTTP包装器的请求方法:

request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {

    let req: Request = this.buildRequest(url, options);

    this.beforeCall(req);

    var observable = this.http
        .request(req)
        .retry(3)
        .catch(res => {
            debugger;
            console.log("ERROR! " …
Run Code Online (Sandbox Code Playgroud)

rxjs typescript angular

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

Java代理身份验证

我有一个在Tomcat 6中运行的Java webapp,它从远程URL加载RSS提要.

我使用罗马为我处理RSS提要和不同的格式.连接部分看起来像这样:

try{
  feedSource = new URL(rssObject.getAsset());
}catch(MalformedURLException mue){
  logger.error(...);
  throw mue;
}

try{
    URLConnection connection = feedSource.openConnection();
    feed = new SyndFeedInput().build(new XmlReader(connection));
}catch(Exception){handle...}
Run Code Online (Sandbox Code Playgroud)

代码工作正常,除了在这个新客户端,他们使用代理.

为了使用代理,我设置了http.proxyHost和proxyPort系统属性:

System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", proxyPort);
Run Code Online (Sandbox Code Playgroud)

HTTP GET是代理好的,但现在我收到HTTP 502错误(坏网关或类似的东西).

分析与Wireshark的HTTP交换,我注意到代理需要身份验证.它发送HTTP 507. Java以某种方式尝试进行身份验证,但它使用了错误的用户名和密码.似乎使用主机名作为用户名,对于我不知道的密码.

所以我尝试实现Authenticator方法来指定用户名+密码:

Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                logger.info(MessageFormat.format("Generating PasswordAuthentitcation for proxy authentication, using username={0} and password={1}.", username, password));
                return new PasswordAuthentication(username, password.toCharArray());
            }
        });
Run Code Online (Sandbox Code Playgroud)

现在我的问题是它被忽略了.永远不会调用getPasswordAuthentication方法.我没有在日志文件中看到日志记录语句并使用Wireshark我可以看到它仍然使用主机名作为用户名.

为什么?似乎java不知何故试图在没有咨询Authenticator的情况下自己进行身份验证.

代理似乎是使用NTLM进行身份验证的MS设备.java中是否有一些内置机制来处理这个问题?应用程序运行的机器是Win Server 2008 R2.

java authentication proxy networking

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

如何配置Swagger UI,Jersey和文件上传?

我有一个带有文件上传方法的Jersey服务,看起来像这样(简化):

@POST
@Path("/{observationId : [a-zA-Z0-9_]+}/files")
@Produces({ MediaType.APPLICATION_JSON})
@Consumes(MediaType.MULTIPART_FORM_DATA)
@ApiOperation(
    value = "Add a file to an observation",
    notes = "Adds a file to an observation and returns a JSON representation of the uploaded file.",
    response = ObservationMediaFile.class
)
@ApiResponses({
    @ApiResponse(code = 404, message = "Observation not found. Invalid observation ID."),
    @ApiResponse(code = 406, message= "The media type of the uploaded file is not supported. Currently supported types are 'images/*' where '*' can be 'jpeg', 'gif', 'png' or 'tiff',")
})
public …
Run Code Online (Sandbox Code Playgroud)

java rest jersey swagger swagger-ui

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

如何在未显示货架标签时恢复Intellij中的搁置更改?

我今天第一次尝试在IntelliJ IDEA中使用"架子"功能.我搁置了所有当前的更改,以便我可以快速修复错误,提交它,然后再回到我当前的工作中.

当我提交"架子"动作时,IntelliJ创建了架子,我可以在工具窗口中看到它.然后它恢复,并重新加载项目.

现在,"更改"工具窗口中的" 货架"选项卡不再出现.

但是在文件系统中我可以看到下面的补丁文件.idea/shelf.

为什么?我怀疑问题是该.idea目录本身受版本控制.因此,当我搁置更改时,它的文件被包含在搁置的更改中,然后它被还原,并且IntelliJ不再知道搁置的更改.

我正在使用Git.

如何在更改工具窗口中使IntelliJ识别补丁文件?或者如果不可能,我如何才能仅根据补丁文件恢复这些更改?

以及如何在未遇到此问题的情况下使用此功能?

.idea目录保存在te VCS中是不好的做法?

java git version-control dvcs intellij-idea

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

如何在three.js中按深度顺序渲染粒子?

免责声明:一般来说,我对three.js、WegGL 和3D 图形比较陌生。

我正在使用 Three.js 以 3D 形式显示 GPS 轨迹中的点。我们必须能够可视化的数据集可能非常大(数十万个点),因此性能非常重要。

我使用一个Points对象,我用一个BufferGeometry包含所有点的对象填充该对象。这些点是按照曲目的顺序添加的,所以按时间顺序。

然后,我们使用PointsMaterial带有 2D 纹理(精灵)的 a 将点表示为一个圆,圆外的区域是透明的。因为颜色是动态的,所以 2D 纹理是动态绘制到画布上的。

问题是,如果我们看轨迹方向上的点,即离相机较远的点是在较近的点之后渲染的点,在点重叠的地方会出现伪影,较近点的透明部分被绘制在更远的点上:

3d 中的点

当我们从另一个方向看轨道时,即从后向前渲染的点,问题就消失了:

在此处输入图片说明

我尝试了以下两个选项来解决该问题:

  • alphaTest0和1之间的一个数值,它样的作品
    • 但是我们的点也可以是部分透明的(这是客户的要求)所以风险是 alphaTest 会剪掉实际应该渲染的点的部分
    • 它会在点重叠的地方创建一个锯齿状边缘,这看起来不太好

3d 中的点

  • 使用depthWrite: false的材料的点,它呈现漂亮,但随后近点总是绘制在旧的无论相机的方向,它看起来奇怪,是错误的

3d 中的点

实际渲染深度 顺序中的点从最远的开始到最近的结束的解决方案是什么

以下是代码的相关部分。

几何的构建。该timeline3d对象包含所有点并来自 XHR 请求:

  const particlesGeometry = new BufferGeometry();
  const vertices = [];

  for (let i = 0; i < timeline3d.points.length; i++) {
    const coordinates = timeline3d.points[i].sceneCoordinates;
    vertices.push(coordinates[0], coordinates[1], coordinates[2]);
  }

  particlesGeometry.addAttribute('position', …
Run Code Online (Sandbox Code Playgroud)

javascript 3d three.js depth-testing

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