小编Tha*_*ish的帖子

log4j.properties vs log4j.xml

我被要求从属性样式配置转移到xml样式.这个过程本身很简单,并没有给我带来任何麻烦,我只是好奇为什么我被问到这个问题,我找到了原因.我找到了这篇不错的帖子为什么选择XML over Log4J配置的属性文件?(超过3年,但仍然是我能找到的最丰富的信息),这指向了这个更老的教程.他们说

属性可以由属性文件或XML文件定义.

Log4j查找名为log4j.xml的文件,然后查找名为log4j.properties的文件.两者都必须放在src文件夹中.

我检查了一下,与声明相反,发现Log4j首先查找属性文件,第二次查找xml.实际上,如果我将两者保存在同一文件夹中,则输出将根据属性文件进行格式化.那么,我是否误解了这一说法?这完全错了吗?这个语句是针对log4j 1.2.14进行的,而我在log4j 1.2.17上,是否有可能log4j团队改变了优先级?我找不到任何相关文档,但由于xml看起来是配置log4j的首选方式,因此它将是一个奇怪的趋势反转

log4j

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

使用Spring Data JPA,Hibernate和多个事务管理器:没有定义名为'transactionManager'的bean

编辑:对于可能对此问题感兴趣的任何人,我在问题的最后提供了相关解决方案的问题分析.

我正在为Web应用程序配置模块,其中我使用的是Spring 3.2,Hibernate 4.1,Spring Data JPA 1.3和Apache CXF 2.5(特别是JAX-RS模块).我有以下配置(工作完全正常,为简明起见,省略了详细信息):

  @Bean(name = "entityManagerFactory")
  public LocalContainerEntityManagerFactoryBean getEntityManagerFactory() throws SQLException{
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    //...    
    return factory;
  }

  @Bean(name = "transactionManager")
  public JpaTransactionManager getTransactionManager() throws SQLException{
    JpaTransactionManager manager = new JpaTransactionManager();
    //...    
    return manager;
  }

  @Bean(name = "persistenceExceptionTranslator")
  public PersistenceExceptionTranslator getPersistenceExceptionTranslator(){
    return new HibernateExceptionTranslator();
  }
Run Code Online (Sandbox Code Playgroud)

我的问题是我必须依赖一些定义自己的外部模块PlatformTransactionManager,所以我发现自己同时使用更多的事务管理器.Transactional.html #value()可以很容易地解决这个问题,所以无论我需要在哪里使用@Transactional,我都要使用我必须用于该事务的事务管理器的名称来限定注释.
我想将我在模块中定义的事务管理器的名称更改为更有意义的名称,以满足外部模块的标准.因此,例如,externalModule1将其经理定义为externalModule1TransactionManager我想要的

  @Bean(name = "myModuleransactionManager")
  public JpaTransactionManager getTransactionManager() throws SQLException{
    JpaTransactionManager manager = new JpaTransactionManager(); …
Run Code Online (Sandbox Code Playgroud)

spring hibernate cxf transactionmanager spring-data-jpa

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

Spring @DirtiesContext是否重新加载Spring上下文?

我有一个看起来像的测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/test-context.xml"})
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public abstract class TestClass {
  @Rule @Resource public JUnitRuleMockery jMockContext;

  public void test1() {
    //Expectations and test
  }
  public void test2() {
    //Expectations and test
  }
}
Run Code Online (Sandbox Code Playgroud)

test-context.xmlJUnitRuleMockery通过a 定义加上几个模拟对象factory-method,就像

<bean id="mockContextFactory" class="MockContextFactory" />

<bean id="jMockContext" factory-bean="mockContextFactory" factory-method="getContext" scope="prototype" />

<bean id="firstMock" factory-bean="mockContextFactory" factory-method="getFirstMock" />

<bean id="secondMock" factory-bean="mockContextFactory" factory-method="getSecondMock" />
Run Code Online (Sandbox Code Playgroud)

MockContextFactory

public class MockContextFactory
{
  private JUnitRuleMockery jUnitRuleMockery;

  public MockContextFactory() {
    jUnitRuleMockery = new JUnitRuleMockery();
    jUnitRuleMockery.setThreadingPolicy(new …
Run Code Online (Sandbox Code Playgroud)

spring jmock junit4

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

Spring Cloud Gateway 匹配多个路径元素

Spring Cloud Greenwich 进入spring-cloud-netflix-zuul维护模式,因此我尝试从 Zuul 迁移到 Spring Cloud Gateway。

使用 Zuul 我有一条类似的路线

zuul:
  routes:
    masterplan_match:
      path: /**/masterplans/**
      serviceId: api-masterplan
Run Code Online (Sandbox Code Playgroud)

我在那里所做的基本上是忽略masterplan接收路径中之前或之后的所有内容并重定向到api-masterplan. 例如, 和/some/path/to/masterplans/masterplans使用相同的 api(原因是masterplans它们是一个更大实体的子资源,负责创建新的masterplans,但随后masterplans可以被视为完整的资源,用于设置GET详细信息、更新、删除等目的)。

我可以将此配置映射到 Spring Cloud Gateway 吗?查看predicates,可行的似乎是path predicate,但看起来所有匹配器都适用于单个路径元素(除了WildcardTheRestPathElement,但它只能用作最后一个元素 - 我认为),即:我需要写就像是

spring
    cloud:
      gateway:
        routes:
        - id: masterplan_match
          uri: lb://api-masterplan # Coming from discovery client
          predicates:
          - Path=/some/path/to/masterplans/**, /masterplans/**
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了一些东西,两条路径可以浓缩为一条吗?

spring-cloud-gateway

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

Subgit:避免将git分支同步到svn上

我正在尝试使用SubGit但是我遇到了分支的问题:我希望在Git下创建的分支只能在Git中生存和死亡.我发现了这个:SubGit:如何排除分支?,但它说

麻烦来自合并提交:如果提交A是将分支foo合并到主服务器的结果,则SubGit在Subversion端为commit A的相应父服务创建分支/ foo.如果您不希望SubGit生成的分支包含在branches/*namespace中,请考虑在Subversion端使用一些特殊的分支

我不想搞乱SVN,因为我正在评估Subgit,我不想在SVN上做任何改变.我想我可以在推送到Git存储库之前通过重新定位来实现我的目标(意思是,仅提交SVN合并历史而不是git分支),但我担心这会在返回SVN时导致冲突.关于我如何解决这个问题的任何想法,而不是等待SubGit 2.1版(声称做我想要的但不是在不久的将来 - 来自链接的答案:)it's going to take some time before we implement it

svn git subgit

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

使用 Thunderbird-lighting 从 URL 获取日历

总结一下即将发生的事情:

  • 如何通过链接发送日历?
  • 为什么日历首次保存在我的本地电脑上时可以完全正常工作,而直接从网络获取时却无法修改,尽管它是在没有消息的情况下导入的?
  • 如何查找修改失败的原因?

完整解释:

我正在开发一个生成 ICS 日历的应用程序。该日历通过 URL 分派给用户。到目前为止,我发现用户可以通过Calendar tab-> New Calendar->导入日历On the Network。然后提供生成日历的 URL 并按照向导操作会创建一个新日历。即使我想找到一种方法来允许用户只需单击我的链接即可导入日历(如果是这种情况,则自动触发向导),这工作得很好。我尝试将链接嵌入到邮件中,但是当单击它时,它会触发浏览器(如果以 HTTP 协议提供,或者以 WebDAV 协议提供时出现错误)。您知道有什么方法可以生成可以实现我的目标的链接吗?

然而,真正的问题是另一个。当我按照描述导入日历 ( Calendar tab-> New Calendar-> On the Network),然后尝试修改任何事件数据时,我收到一条MODIFICATION_FAILED消息,并且错误控制台仅显示

Timestamp: 03/14/2013 12:20:08 PM
Error: An error occurred when writing to the calendar Test! Error code: MODIFICATION_FAILED. Description: 
Source File: resource://calendar/modules/calUtils.jsm -> file:///home/mdavi/.thunderbird/sdq097yy.default/extensions/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/calendar-js/calCalendarManager.js
Line: 976
Run Code Online (Sandbox Code Playgroud)

我怎样才能找到这个错误的原因?此外,我尝试将生成的日历(或从我的链接下载)导出到 ICS 文件,然后通过File-> Open->打开此类文件Calendar File ...,而不修改导出文件中的任何内容,这样我什至可以修改事件数据。所以为什么?我生成的 ICS 文件非常简单,如下所示:

BEGIN:VCALENDAR
PRODID:-//Events …
Run Code Online (Sandbox Code Playgroud)

icalendar thunderbird thunderbird-lightning

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