log4j:ERROR A org.apache.log4j (FileAppender) object is not assignable to a org.apache.log4j (Appender) variable

When deploying an ear file including log4j.jar into Glassfish3.x, following Exception is thrown:

Add log4j.jar to Glassfish lib, e.g. /domains/mydomain/lib/ext or /glassfish/lib and remove it from ear.

Continue reading “log4j:ERROR A org.apache.log4j (FileAppender) object is not assignable to a org.apache.log4j (Appender) variable”

Hibernate Search and Glassfish

Using Hibernate Search in combination with Glassfish throws following Exception:

Add an additional

to your persitence.xml in order to use Hibernate JPA for Persistence Management.

Continue reading “Hibernate Search and Glassfish”

Change default URL for PostfixAdmin

PostfixAdmin per default is reachable via yourhost.address/postfixadmin. This is certainly not optimal in terms of security.

Edit /etc/postfixadmin/apache.conf

to something like
After that, reload apache configuration.

Message-Driven Beans, Message not send / received

When sending a message via JMS (transactions enabled) this message is not received by other MessageListener.

Add an additional session.commit(); before closing the session.

Continue reading “Message-Driven Beans, Message not send / received”

NoClassDefFoundError while deploying EAR

  • Problem:
    When deploying an EAR (enterprise archive file) to an application server like JBOSS,
    is thrown.
  • Solution:
    Fix your EAR package structure.

    In Eclipse, go to EAR-Project properties, select "Java EE Module Dependencies" and toggle "In Lib Dir" for your shared Java Project
  • Further information:

    • All projects/files have been created with Eclipse
    • application.ear: Exported “Enterprise Application Project”
    • app-ejb.jar: Exported “Enterprise Java Beans Project”
    • app-web.war: Exported “Dynamic Web Project”
    • app-shared.jar: Exported “Java Project”, that contains classes that are used by more than one of the sub-projects. Can also be a third party jar-File with library classes.
    • Exception occurs, since app-web.war or app-ejb.jar may be deployed just before app-shared.jar has been deployed. A workaround for that would be to first deploy app-shared.jar separately and remove it from your enterprise application compilation.

CSS styles ignored

  • Problem:
    JSF page layout defined in a CSS-file is ignored when using PrettyFaces.
  • Solution:
    Fix link to CSS file in non-working JSF’s either by using the relative path, or by providing an absolute path.
  • Further information:
    PrettyFaces page navigation breaks up link to CSS file when page navigation goes to deeper directory levels
    That is because URL’s generated by PrettyFaces do not represent real folder structure on server:
    A multi-level URL like “www.my-domain.net/home/page/entry/1” does not actually refer to the folder structure “/home/page/entry/1”.
  • Code snippets:
    “Normal” link to CSS in a JSF:

    <link href=”css/main.css” rel=”stylesheet” type=”text/css” />

    “Fixed” link to find CSS one level above current (e.g. if page URL is like www.my-domain.net/page/1):

    <link href=”../css/main.css” rel=”stylesheet” type=”text/css” />

EJB ClassCastException

  • Problem:
    [Ljava.lang.Object; cannot be cast to x.y.z.beanEJB: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to x.y.z.beanEJB
  • Solution:
    Add a “SELECT” statement to your (named) query.
    e.g. change :

    FROM beanEJB e
    INNER JOIN e.tags AS t
    WHERE t LIKE :ttt


    SELECT e FROM beanEJB e
    INNER JOIN e.tags AS t
    WHERE t.string LIKE :ttt

  • Further information:
    A (named) query may return more than one distinct Object. An additional SELECT clause will specify the return type.
  • Code snippets:
    • </named-query>
      <named-query name=”namedQuery”>
      <![CDATA[SELECT e FROM beanEJB e
      INNER JOIN e.tags AS t
      WHERE t LIKE :ttt]]>

    • Query q = em.createNamedQuery(“namedQuery”);
      q.setParameter(“ttt”, s);