1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.219 sec <<< FAILURE!
shouldBeAbleToSendMessage(se.extenda.core.messaging.channel.jms.test.InjectionTestCase)  Time elapsed: 0.094 sec  <<< ERROR!
java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.jms.QueueSession.createSender(Ljavax/jms/Queue;)Ljavax/jms/QueueSender;" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the current class, se/extenda/core/messaging/channel/jms/test/InjectionTestCase, and the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) for resolved class, javax/jms/QueueSession, have different Class objects for the type javax/jms/QueueSender used in the signature
  at se.extenda.core.messaging.channel.jms.test.InjectionTestCase.shouldBeAbleToSendMessage(InjectionTestCase.java:45)

@RunWith(Arquillian.class)
public class InjectionTestCase {

  @Deployment
  public static JavaArchive createTestArchive() {

    return ShrinkWrap.create(JavaArchive.class, "test.jar")

    .addClasses(QueueSender.class, JMSReceiver.class);

  }

  @Resource(mappedName = "/queue/DLQ")
  private Queue dlq;

  @Resource(mappedName = "/ConnectionFactory")
  private ConnectionFactory factory;

  @Test
  public void shouldBeAbleToSendMessage() throws Exception {

    Connection connection = factory.createConnection();

    QueueSession session = (QueueSession) connection.createSession(false,
        Session.DUPS_OK_ACKNOWLEDGE);

    QueueSender sender = session.createSender(dlq);

    BytesMessage msg = session.createBytesMessage();
    msg.writeUTF("Hejsan");
    sender.send(msg);

  }

}