users@tyrus.java.net

Re: same classes in multiple jars

From: Johan Vos <johan_at_lodgon.com>
Date: Mon, 25 Feb 2013 10:00:24 +0100

See attachment (hope it gets accepted by the mailinglist).

- Johan

2013/2/25 Pavel Bucek <pavel.bucek_at_oracle.com>:
> Can you please attach generated war file as well?
>
>
> On 2/25/13 9:45 AM, Johan Vos wrote:
>>
>> No, I have only one dependency (scope provided) and that is on the
>> websocket spec, not on tyrus:
>>
>> </dependency>
>> <dependency>
>> <groupId>javax.websocket</groupId>
>> <artifactId>javax.websocket-api</artifactId>
>> <version>1.0-b12</version>
>> <scope>provided</scope>
>> </dependency>
>>
>> The war file contains a single class only, here is the source (the
>> .war file is less than 5K):
>>
>> package com.lodgon.websocket.samples.chatserver;
>>
>> import java.io.IOException;
>> import javax.websocket.Session;
>> import javax.websocket.WebSocketMessage;
>> import javax.websocket.WebSocketOpen;
>> import javax.websocket.server.WebSocketEndpoint;
>>
>> /**
>> *
>> * @author johan
>> */
>>
>> @WebSocketEndpoint(value="/websocket")//,configuration=DefaultServerConfiguration.class)
>> public class ChatServer {
>>
>> @WebSocketOpen
>> public void onOpen (Session session) {
>> System.out.println("opening endpoint for session "+session);
>> }
>>
>> @WebSocketMessage
>> public String onMessage(String obj, Session session) throws
>> IOException {
>> System.out.println("On message: "+obj);
>> session.getRemote().sendString("A1");
>> System.out.println("Done sending A1 back to
>> "+session.getRemote());
>> return "B1";
>> }
>>
>>
>> 2013/2/25 Pavel Bucek <pavel.bucek_at_oracle.com>:
>>>
>>> Hi Johan,
>>>
>>> are you sure you don't include any of tyrus* jars in your war file?
>>>
>>> Pavel
>>>
>>>
>>> On 2/25/13 9:29 AM, johan_at_lodgon.com wrote:
>>>>
>>>> I had a weird java.lang.VerifyError on my laptop with glassfish4-b77
>>>> that prevented me from deploying @WebsocketEndpoints. However, same
>>>> application runs fine on exactly the same glassfish4-b77 on my desktop.
>>>> Here is the error on the laptop:
>>>>
>>>> [#|2013-02-25T09:19:22.282+0100|SEVERE|glassfish
>>>> 4.0|javax.enterprise.web|_ThreadID=1;_ThreadName=main;_TimeMillis=13617
>>>> 80362282;_LevelValue=1000;|WebModule[/chatserver]Exception starting
>>>> filter WebSocket filter
>>>> java.lang.VerifyError: (class:
>>>> org/glassfish/tyrus/server/TyrusServerContainer, method: deploy
>>>> signature: (Lorg/glassfish/tyrus/EndpointWrapper;)V) Incompatible
>>>> argument to function
>>>> at
>>>> org.glassfish.tyrus.server.ServerContainerFactory.create(ServerContaine
>>>> rFactory.java:119)
>>>> at
>>>> org.glassfish.tyrus.servlet.TyrusServletFilter.init(TyrusServletFilter.
>>>> java:97)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationF
>>>> ilterConfig.java:275)
>>>> at
>>>> org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilt
>>>> erConfig.java:131)
>>>> ...
>>>>
>>>> I then started glassfish with -verbose:class in order to see where all
>>>> the classes come from. This is a snippet of my laptop log:
>>>> [Loaded org.glassfish.tyrus.server.TyrusServerContainer from
>>>> file:/opt/glassfish4b77/glassfish/modules/tyrus-server.jar]
>>>> [Loaded org.glassfish.tyrus.spi.SPIEndpoint from
>>>> file:/opt/glassfish4b77/glassfish/modules/tyrus-spi.jar]
>>>> [Loaded org.glassfish.tyrus.spi.SPIEndpoint from
>>>> file:/opt/glassfish4b77/glassfish/modules/tyrus-core.jar]
>>>> [Loaded org.glassfish.tyrus.EndpointWrapper from
>>>> file:/opt/glassfish4b77/glassfish/modules/tyrus-core.jar]
>>>> [Loaded java.lang.VerifyError from /opt/jdk1.7.0_09/jre/lib/rt.jar]
>>>> [Loaded java.lang.Throwable$PrintStreamOrWriter from
>>>> /opt/jdk1.7.0_09/jre/lib/rt.jar]
>>>>
>>>> SPIEndpoint is loaded twice from 2 different jars (tyrus-core and
>>>> tyrus-spi). The desktop log shows that SPIEndpoint is loaded only once,
>>>> from tyrus-core.jar.
>>>> This seems like a packaging issue?
>>>>
>>>> - Johan
>>>>
>>>>
>>
>