users@tyrus.java.net

Re: same classes in multiple jars

From: Pavel Bucek <pavel.bucek_at_oracle.com>
Date: Mon, 25 Feb 2013 09:55:02 +0100

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
>>>
>>>
>