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