Yesterday we were trying to deploy an EJB application to Weblogic 10.3, but the deployment stopped with an IOException in the JDT compiler. No additional information was in any log file. After searching for some time, we found out that you can configure Weblogic to use Javac instead of JDT (somewhere in the EJB settings in the management console), which gave us much more details with the compiler error.

We reproduced the problem with a simple test EJB:

A base interface for all our EJBs

public interface BaseInterface<T, U> {
    void doSomething(T t, U u);
}

A common abstract base class:

public abstract class AbstractBase<T, U> implements BaseInterface {
}

The local interface for the bean:

public interface Test extends Base<String, Integer> {
}

The bean itself:

@Session
public class TestBean extends AbstractBase<String, Integer> implements Test {
    @Override
    public void doSomething(String t, Integer u) {
    }
}

The weblogic code generator generates a class with extends TestBean and has the following methods:

    public void doSomething(String t, Integer u)
    public void doSomething(Object t, Object u)

The EJB above runs in OpenEJB, and IMHO it is a valid session bean.. This seems to be a bug in the code generator, which is really holding us back since the abstract base class for some of our EJBs would make our life easier.