小编min*_*das的帖子

Hibernate复制问题 - 会话真的需要复制吗?

我在尝试在对象更新时复制Hibernate二级缓存密钥时发现了一个奇怪的情况.

缓存键结构如下:

cacheKey = {org.hibernate.cache.CacheKey}
|- key = {my.own.serializable.class}
|- type = {org.hibernate.type.ComponentType}
| |- typeScope = {org.hibernate.type.TypeFactory$TypeScopeImpl}
| | |- factory = {org.hibernate.impl.SessionFactoryImpl}
| |- propertyNames = {...}
| |- propertyTypes = {...}
| |- propertyNullability = {...}
| |- propertySpan = 2
| |- cascade = {...}
| |- joinedFetch = {...}
| |- isKey = true
| |- tuplizerMapping = {...}
|- entityOrRoleName = {java.lang.String} "my.Entity"
|- entityMode = {org.hibernate.EntityMode}
|- hashCode = 588688
Run Code Online (Sandbox Code Playgroud)

我在这里可以看到的问题是cacheKey.type.typeScope有一个对 …

java persistence hibernate ehcache

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

在 Spring 上重新注册单例 bean

我有一个多模块项目,其中每个模块都有自己的单元测试,并为该模块的类提供模拟。

我正在尝试构建一个应用程序上下文,其中每个模块都可以定义自己的模拟,但以后的单元测试将能够覆盖这些模拟,例如:

public class Test {

    private static final class StupidMock {
    }

    @org.junit.Test
    public void test() {
        StaticApplicationContext applicationContext = new StaticApplicationContext();
        final ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
        StupidMock stupidMock = new StupidMock();  // original mock
        beanFactory.registerSingleton(StupidMock.class.getName(), stupidMock);

        StupidMock f1 = applicationContext.getBean(StupidMock.class);
        if (f1 == null || f1 != stupidMock) {  // ensuring mock is retrievable
            fail("Could not get bean");
        }

        for (String names2Remove : beanFactory.getBeanNamesForType(StupidMock.class)) {
            applicationContext.removeBeanDefinition(names2Remove);  // <-- fails here 
        }

        StupidMock stupidMock2 = new StupidMock();     // replacement …
Run Code Online (Sandbox Code Playgroud)

java spring unit-testing mocking

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

调试Hibernate/Ehcache死锁

我们正在使用Ehcache版本2.4.4和Hibernate 3.5.5-FINAL.我的调试环境发生了一个奇怪的情况 - 看起来Ehcache陷入了僵局.这是堆栈跟踪的相关位:

http-8080-2@7345 daemon, prio=5, in group 'main', status: 'WAIT'
      at sun.misc.Unsafe.park(Unsafe.java:-1)
      at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:842)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1178)
      at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:807)
      at net.sf.ehcache.store.compound.Segment.put(Segment.java:427)
      at net.sf.ehcache.store.compound.CompoundStore.put(CompoundStore.java:141)
      at net.sf.ehcache.Cache.putInternal(Cache.java:1434)
      at net.sf.ehcache.Cache.put(Cache.java:1367)
      at net.sf.ehcache.Cache.put(Cache.java:1339)
      at net.sf.ehcache.constructs.EhcacheDecoratorAdapter.put(EhcacheDecoratorAdapter.java:111)
      at net.sf.ehcache.hibernate.regions.EhcacheTransactionalDataRegion.put(EhcacheTransactionalDataRegion.java:127)
      at net.sf.ehcache.hibernate.strategy.NonStrictReadWriteEhcacheEntityRegionAccessStrategy.putFromLoad(NonStrictReadWriteEhcacheEntityRegionAccessStrategy.java:66)
      at net.sf.ehcache.hibernate.nonstop.NonstopAwareEntityRegionAccessStrategy.putFromLoad(NonstopAwareEntityRegionAccessStrategy.java:180)
      at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:180)
      at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:898)
      at org.hibernate.loader.Loader.doQuery(Loader.java:773)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
      at org.hibernate.loader.Loader.loadEntity(Loader.java:1953)
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
      at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
      at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3270)
      at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
      at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
      at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
      at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:147)
      at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1080)
      at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:1018)
      at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:176)
      at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
      at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:191)
      at vyre.content.items.ItemInfo_$$_javassist_87.equals(ItemInfo_$$_javassist_87.java:-1)
      at org.hibernate.util.EqualsHelper.equals(EqualsHelper.java:33) …
Run Code Online (Sandbox Code Playgroud)

java deadlock hibernate ehcache

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

如何确保Apache AJP与Tomcat连接的安全/加密?

我们希望使用Apache实例(在同一台机器上运行)前端我们的Tomcat实例,该实例将为HTTPS上的所有内容提供服务,并使用AJP将Apache连接到Tomcat.使用AJP时,我们是否需要做任何事情来确保Apache和Tomcat之间的连接是安全的?(我们不希望密码在Apache和Tomcat之间的网络上可以嗅探).O/S是Red Hat Enterprise Linux 6.3

apache ssl tomcat ajp

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

使用 netpipes/netcat 绑定端口

我正在尝试编写一个简单的 bash 脚本,该脚本正在侦听端口并以简单的 HTTP 响应进行响应。我的具体问题是,我不确定端口是否可用,如果绑定失败,我会回退到下一个端口,直到绑定成功。

到目前为止,对我来说,实现这一目标的最简单方法是:

for (( i=$PORT_BASE; i < $(($PORT_BASE+$PORT_RANGE)); i++ ))
do
  if [ $DEBUG -eq 1 ] ; then
    echo trying to bind on $i
  fi
  /usr/bin/faucet $i --out --daemon echo test 2>/dev/null
  if [ $? -eq 0 ] ; then                        #success?
    port=$i
    if [ $DEBUG -eq 1 ] ; then
      echo "bound on port $port"
    fi
    break
  fi
done
Run Code Online (Sandbox Code Playgroud)

这里我使用的faucet是Ubuntu 的netpipes包。

问题在于,如果我只是将“test”打印到输出,curl则会抱怨非标准 HTTP 响应(错误代码 18)。这很公平,因为我不打印 HTTP 兼容的响应。

如果我替换echo …

unix linux bash scripting

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

使用Java Guava库,如何使用Builder创建ImmutableSortedSet?

我确定这是一个非常简单的问题,但请看下面的代码示例:

final ImmutableSortedSet<String> notOk = ImmutableSortedSet.naturalOrder().build();         
final ImmutableSortedSet<String> ok = new ImmutableSortedSet.Builder<String>(Ordering.natural()).build();
final ImmutableList<String> typicalGuava = ImmutableList.of("one", "two");
Run Code Online (Sandbox Code Playgroud)

我只是想知道在第一个例子中使用naturalOrder()方法的正确方法是什么?在该示例中,Java无法推断类型,因此您会收到"类型不匹配"错误.

java generics types type-inference guava

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

什么是tomcat默认GC选项?

catalina.sh我这样设置JAVA_OPTS.

JAVA_OPTS="-server -Xms2048m -Xmx2048m"
Run Code Online (Sandbox Code Playgroud)

在这种情况下什么是默认GC选项?

我认为默认选项是串行GC.(-XX:+UseSerialGC)

谢谢.

java tomcat garbage-collection

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

如何@Autowire隐藏在ProxyFactoryBean后面的bean?

假设我们有两个bean,在Spring中定义

<bean class="foo.A"/>
<bean class="foo.B"/>
Run Code Online (Sandbox Code Playgroud)
public class A {
   @Autowired
   private B b;
}

public class B {
   public void foo() {
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的是截取所有调用B.foo().看一下文档,我写了拦截器C并改变了bean的定义B如下:

public class C implements org.springframework.aop.MethodBeforeAdvice {
    public void before(final Method method, final Object[] args, final Object target) {
        // interception logic goes here
    }
}
Run Code Online (Sandbox Code Playgroud)
<bean class="foo.C"/>

<bean class="org.springframework.aop.framework.ProxyFactoryBean" scope="prototype">
    <property name="proxyTargetClass" value="true"/>
    <property name="singleton" value="false"/>
    <property name="target">
        <bean class="foo.B" scope="prototype"/>
    </property>
    <property name="interceptorNames">
        <list>
            <value>foo.C</value>
        </list>
    </property> …
Run Code Online (Sandbox Code Playgroud)

java spring javabeans autowired interceptor

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

泛型:通配符类型的编译错误

我已经切换到Java 7 build 21并开始出现奇怪的编译错误.例如,下面的代码片段无法编译(尽管IntelliJ不显示任何错误):

    1 Iterable<?> parts = ImmutableList.<String>of("one", "two");
    2 Function<?, String> function = new Function<Object, String>() {
    3    @Override
    4    public String apply(final Object input) {
    5        return input.toString();
    6    }
    7 };
    8 Iterable<String> result = Iterables.transform(parts, function);
    9 System.out.println(result);
Run Code Online (Sandbox Code Playgroud)

但如果我?在第2行更换Object

    2 Function<Object, String> function = new Function<Object, String>() {
Run Code Online (Sandbox Code Playgroud)

然后编译成功.

我得到的错误有点神秘:

error: method transform in class Iterables cannot be applied to given types;
required: Iterable<F>,Function<? super F,? extends T> 
found: Iterable<CAP#1>,Function<CAP#2,String> 
reason: no …
Run Code Online (Sandbox Code Playgroud)

java generics guava java-7

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

使用jsoup来转义不允许的标记

我正在评估jsoup的功能,它将清理(但不删除!)非白名单标签.假设只<b>允许标记,所以输入如下

foo <b>bar</b> <script onLoad='stealYourCookies();'>baz</script>
Run Code Online (Sandbox Code Playgroud)

必须产生以下结果:

foo <b>bar</b> &lt;script onLoad='stealYourCookies();'&gt;baz&lt;/script&gt;
Run Code Online (Sandbox Code Playgroud)

我用jsoup看到以下问题/问题:

  • document.getAllElements()总是假设<html>,<head><body>.是的,我可以打电话,document.body().getAllElements()但关键是我不知道我的源文件是完整的HTML文档还是仅仅是正文 - 我希望结果的形状和形式与它相同;
  • 如何更换<script>...</script>使用&lt;script&gt;...&lt;/script&gt;?我只想用转义实体替换括号,并且不想改变任何属性,等等.Node.replaceWith听起来像是一种矫枉过正.
  • 是否可以完全关闭漂亮的打印(例如插入新线等)?

或者我应该使用另一个框架?到目前为止,我已经浏览了htmlcleaner,但是给出的示例并未建议我支持所需的功能.

html java xss jsoup htmlcleaner

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

ImmutableSortedSet的反转视图

番石榴ImmutableSortedSet很好地提供了订购和不变性.

我正在寻找的是一个简单的实用方法,这个方法可以让我以相反的顺序访问元素,类似于Lists.reverse(List).

我已经看了Sets,以及在Collections2,但无济于事.我自己可以很容易地写一个,但这听起来像是番石榴中存在的逻辑特征.或者也许存在这样的方法,但我只是盲目的?

java set immutability guava

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