среда, 24 июля 2013 г.

Error in Tomcat:

Caused by: java.util.zip.ZipException: invalid entry size (expected 106 but got 216 bytes)
      at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:386)
      at java.util.zip.ZipInputStream.read(ZipInputStream.java:156)
      at java.util.jar.JarInputStream.read(JarInputStream.java:195)

Cause of the error in 'pom.xml' - there are ** (two stars) in "include" section.

God damn this blog engine! XML can't be inserted! :-(
         
      
   

среда, 15 августа 2012 г.

There is bug in jetty-session-redis, version 2.3.ga
Class com.ovea.jetty.session.redis.RedisSessionIdManager
method

  1. @Override  
  2. protected List scavenge(final List clusterIds) {  
  3.     List expired = new LinkedList<String>();  
  4.     List status = jedisExecutor.execute(new JedisCallback>() {  
  5.         @Override  
  6.         public List execute(Jedis jedis) {  
  7.             return jedis.multi(new TransactionBlock() {  
  8.                 @Override  
  9.                 public void execute() throws JedisException {  
  10.                     for (String clusterId : clusterIds) {  
  11.                         exists(REDIS_SESSION_KEY + clusterId);  
  12.                     }  
  13.                 }  
  14.             });  
  15.         }  
  16.     });  
  17.     for (int i = 0; i < status.size(); i++)  
  18.         if (Boolean.FALSE.equals(status.get(i)))   // HERE WAS:  " ZERO.equals
  19.             expired.add(clusterIds.get(i));  
  20.     if (LOG.isDebugEnabled() && !expired.isEmpty())  
  21.         LOG.debug("[RedisSessionIdManager] Scavenger found {} sessions to expire: {}", expired.size(), expired);  
  22.     return expired;  
  23. }  

Sessions were not deleting due to this invalid comparison. 

среда, 6 июня 2012 г.

Jetty remote debug:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar target/your-server.jar

вторник, 13 декабря 2011 г.

Как заюзать AOP

Лучше использовать AOP вместе с аннотациями. Тогда не будет неожиданностей. Вы всегда будете видеть, что метод аннотирован, значит подвергается препроцессингу со стороны AOP.
Наличие аннотации - маркер для AOP: "данный метод должен быть обработан".

Делаем аннотацию:

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ActionMethod {
}




В applicationContext.xml добавляем (если ещё нет) список пакетов, к-е будут обрабатываться AOP

 <context:component-scan base-package="a.b.c.d,a.bc.a">
  <context:exclude-filter type="regex" expression=".*Test"/>
  <context:exclude-filter type="regex" expression=".Test*"/>
 </context:component-scan>
 


Подключаем в YourApplication-servlet.xml, указываем в каком пакете находятся классы, к-е будут обрабатываться AOP:

<context:component-scan base-package="a.b.c.server"/>


Создаём класс, реагирующий на вызовы целевых методов:

@Aspect
@Component
public class PerfLoggingAdvice {
 
    private static final Logger perfLog = Logger.getLogger(ServerConst.PERF_LOG);
 
    @Pointcut("execution(a.b.c.d.PageData<a.b.c.d.e.Entity> a.b.c.db.hibernate.SomeDataDB.get*(..)) || " +
              "execution(* a.b.c.d.impl.Some.getList(..)) " )
    public void somePoint() {}
 
    @Around("somePoint()")
    public Object someAction(ProceedingJoinPoint joinPoint) throws Throwable {
        Object result = null;
        if (isMethodAnnotated(joinPoint)) {
            // code here will be executed before every method in package a.b.c.d with annotation @ActionMethod
        } else {
            result = joinPoint.proceed();
        }
        return result;
    }
 
   /**
      *  Returns true if the specified method (joinPoint) is annotated with
      *  {@link ActionMethod } annotation.
      *
     */
   private boolean isMethodAnnotated(ProceedingJoinPoint joinPoint) {
       MethodSignature ms = (MethodSignature) joinPoint.getSignature();
       Method mInterf = ms.getMethod();
       try {
           Method m = joinPoint.getTarget().getClass().getMethod(mInterf.getName(), mInterf.getParameterTypes());
           return  m.getAnnotation(ActionMethod.class) != null;
       } catch (NoSuchMethodException e) {
           return false;
       }
   }
}
 

воскресенье, 21 июня 2009 г.

О медитации

"Сосредоточение возможно только если человек полностью расслаблен, как умственно, так и физически. "

"Сосредоточение – это нечто происходящее само собой при полном расслаблении ума и тела. Пока не достигнуто расслабление, сосредоточение – то есть, настоящее сосредоточение – остается невозможным. Необходима система, которая последовательно ведет человека ко все более глубоким уровням расслабления, пока сосредоточение не становится спонтанной деятельностью сознания. Именно такова система крийя‑йоги."