2016-09-13 3 views
0

Ich versuche Anwendung mit Websocket. Als Server benutze ich Glassfish, funktioniert gut, aber ich habe ein Problem mit Websocket.Glassfish websocket funktioniert nicht

Wenn ich html mit Javascript in der Konsole laufen ist Fehler 404

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 

    <display-name>Simple web application </display-name> 

</web-app> 

build.gradle

repositories { 
    mavenCentral() 
    mavenLocal() 
    jcenter() 
} 
apply plugin: "java" 
apply plugin: 'application' 
apply plugin: 'war' 

mainClassName = "websockets.WebSocketServer" 
version = '1.0' 


dependencies { 
    compile 'javax.inject:javax.inject:1' 
    compile 'com.google.inject:guice:4.0' 
    compile 'javax.websocket:javax.websocket-api:1.0' 
    compile 'org.glassfish.tyrus:tyrus-server:1.1' 
    compile 'org.glassfish.tyrus:tyrus-client:1.0' 
    compile 'org.glassfish.tyrus:tyrus-container-grizzly:1.0' 
    compile 'javax:javaee-api:7.0' 

    testCompile 'info.cukes:cucumber-java:1.2.4' 
    testCompile 'info.cukes:cucumber-junit:1.2.4' 
    testCompile 'junit:junit:4.11' 
    testCompile "org.mockito:mockito-core:2.0.86-beta" 
} 

sourceSets { 
    main.java.srcDir "src/java" 
    test.java.srcDir "src/test" 
    main.resources.srcDir 'src/resources' 
    main.resources.include '**/*.xml' 
    main.resources.include 'META-INF/services/**' 
} 

processResources.doLast { 
    copy { 
     from 'build/resources/main/META-INF/beans.xml' 
     into 'build/classes/main/META-INF/' 
    } 
} 
task fatJar(type: Jar) { 
    manifest { 
     attributes 'Implementation-Title': 'Gradle Jar File Example', 
       'Implementation-Version': version, 
       'Main-Class': 'websockets.WebSocketServer' 
    } 
    baseName = project.name + '-all' 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } { 
     exclude "META-INF/*.SF" 
     exclude "META-INF/*.DSA" 
    } 
     with jar 
} 

war { 
manifest { 
    attributes 'Main-Class': 'websockets.WebSocketServer' 
    } 
} 

in src/main/java/WebSockets Ich habe WebSocketServer .java

package websockets; 


import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.io.IOException; 

import javax.websocket.OnClose; 
import javax.websocket.OnMessage; 
import javax.websocket.OnOpen; 
import javax.websocket.Session; 
import javax.websocket.OnOpen; 
import javax.websocket.OnError; 
import javax.websocket.server.ServerEndpoint; 

@ServerEndpoint("/websocket") 
public class WebSocketServer { 

    @OnMessage 
    public void onMessage(String message, Session session) 
    throws IOException, InterruptedException { 

     // Print the client message for testing purposes 
     System.out.println("Received: " + message); 

     // Send the first message to the client 
     session.getBasicRemote().sendText("This is the first server message"); 

     // Send 3 messages to the client every 5 seconds 
     int sentMessages = 0; 
     while(sentMessages < 3){ 
      Thread.sleep(5000); 
      session.getBasicRemote(). 
      sendText("This is an intermediate server message. Count: " 
        + sentMessages); 
      sentMessages++; 
     } 

     // Send a final message to the client 
     session.getBasicRemote().sendText("This is the last server message"); 
    } 

    @OnOpen 
    public void onOpen() { 
     System.out.println("Client connected"); 
    } 

    @OnClose 
    public void onClose() { 
     System.out.println("Connection closed"); 
    } 

    @OnError 
    public void onError(Session aclientSession, Throwable aThrowable) { 
     System.out.println("Error : " + aclientSession); System.out.println("Error :" + aThrowable); 
    } 
} 

Gradel ohne Fehler gebaut. Wenn ich Anwendung laufen in http://192.168.37.10:8080/web/page.html (vagrant Virtuelle Maschine)

Wurffehler:

WebSocket-Verbindung zu 'ws: // localhost: 8080/web/websocket' ist fehlgeschlagen: Fehler bei der WebSocket-Handshake: unerwartete Antwortcode : im Kontext der Start

in Glasfischen Add-Anwendung 404: web

Was ist falsch? Kannst du mir helfen? Bitte. Thanks :) Sie

Antwort

-1

Denn es arbeitet nach den folgenden Optionen hinzu:

atmosphere.addInitParameter(ApplicationConfig.PROPERTY_NATIVE_COMETSUPPORT, "true"); 
atmosphere.addInitParameter(ApplicationConfig.WEBSOCKET_SUPPRESS_JSR356, "true"); 

Oder in web.xml:

<init-param> 
    <param-name>org.atmosphere.useNative</param-name> 
    <param-value>true</param-value> 
</init-param> 
+0

Kann jemand bitte kommentieren, was mit dieser Lösung sein Unbehagen ist? – Tires

Verwandte Themen