<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
------------------------------------------------------------------------------------------------------------------------------------------------------------
When I start the server everything is working ok and I can see on the log the WebService "endpoints" up. Now I would like to do the same with web sockets, so I added now as a library of my war all the web socket jars of jetty, then I created this 2 classes:
One that register the endpoints.
One as a test endpoint.
------------------------------------------------------------------------------------------------------------------------------------------------------------
import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
public class JettyWebSocketServlet extends WebSocketServlet {
@Override
public void configure(WebSocketServletFactory factory) {
factory.register(WebSocketEchoTest.class);
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@WebSocket
public class WebSocketEchoTest {
private RemoteEndpoint remote;
@OnWebSocketConnect
public void onConnect(Session session) {
System.out.println("WebSocket Opened");
this.remote = session.getRemote();
}
@OnWebSocketMessage
public void onMessage(String message) {
System.out.println("Message from Client: " + message);
try {
remote.sendString("Hi Client");
} catch (IOException e) {
e.printStackTrace();
}
}
@OnWebSocketClose
public void onClose(int statusCode, String reason) {
System.out.println("WebSocket Closed. Code:" + statusCode);
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
So now I would like to do as in JAX RS… so I changed the web.xml to this:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>ServletAdaptor</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletAdaptor</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>integra.websocket.JettyWebSocketServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/websockets/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
I think this should be ok and initialise all registered WebSocket endpoints… but this is never executed (JettyWebSocketServlet) ….
If this would work, I think I should have access to ws:// and wss:// on the same ports that the http and https server in the /websockets/ context, am I right?
any help on this??? is this the correct approach??
thanks!!