0

Bir müşterinin tarayıcısına bağlanmak için WebSocket kullanarak bir AWS EC2 örneğinde bir Java sunucusu (belirli bir şekilde Jetty) çalıştırıyorum. Bunu yerel olarak yaptığımda (sunucumu bilgisayarımda değil, AWS'de barındırıyor), iyi çalışıyor. Ben EC2 örneği portu 8080WebSocket Handshake Hatası AWS ile

trafiği kabul kullanılabileceğinden emin

WebSocket connection to 'ws://Elastic_IP:8080/?username=name_of_user' failed: Error during WebSocket handshake: Unexpected response code: 500

: Ben bir EC2 örneğine kodu taşımak Ancak, ben istemci tarafında aşağıdaki hata iletisi alıyorum

sunucu tarafında sunucu tarafında, bağlantı denendiğinde birçok java.lang.NoClassDefFoundError alıyorum. Yerel olarak çalıştırdığımda bu hatayı alamıyorum. Belki de EC2 örneğini derlerken bir sorun var, ancak hatasız derler. Eclipse'i yerel olarak kullanarak derledim ve çalıştırıyorum ancak EC2'deki kodu elle derleyip çalıştırıyorum (birçok sınıf yoluna sahip javac). El ile derlerken hata yaptım, ancak hatanın ne olabileceğinden emin değilim.

Herhangi bir yardım büyük memnuniyetle karşılanacaktır.

DÜZENLEME
başıma biraz sorunsuz Çekimden sonra, ben JSON.ParseException konunun kaynağı olduğunu fark etti. Sunucu kodundan bu sınıfa tüm çağrıları kaldırdıktan sonra, el sıkışma tamamlandı ve sunucu ile istemci arasında bir bağlantı kurabildim. Ben org.eclipse.jetty.websocket.api.Session olmak argüman tanımlı görünüyor, ancak çalışma zamanı sırasında argüman aslında org.eclipse.jetty.websocket.common.WebSocketSession olduğunu

WARN:MyWebSocketHandler:qtp990368553-16: Unhandled Error (closing connection) 
java.lang.RuntimeException: Cannot call method public void 
MyWebSocketHandler#onMessage(org.eclipse.jetty.websocket.api.Session, java.lang.String) with args: 
[org.eclipse.jetty.websocket.common.WebSocketSession, java.lang.String] 

: Ben istemciden bir ileti aldığınızda Ancak, ben şimdi şu hata çalıştırıyorum. Bunun nasıl gerçekleştiğine dair bir fikir veya hangisini kullanmalıyım (Session vs WebSocketSession)? İhtiyacım olan tek şey sunucu ve istemci arasında dizeleri göndermek.

+0

Tam stacktrace'i verebilir misiniz, böylece hangi sınıfın, özellikle JVM'nin şikayet ettiğini görebilir miyiz? Ayrıca, sunucu kodunuzu yerel olarak çalıştırmak için Eclipse'i kullanmak yerine, EC2 örneğinde olduğu gibi yerel olarak çalıştırmayı deneyebilir misiniz, böylece yerel ortamınız EC2 örneğindeki gibi daha yakın/daha yakın mı? – Castaglia

+0

@Castaglia El sıkışmasının ana sorununu çözdüm (sunucu kodundaki bir ithalatı kaldırmak zorunda kaldım, ancak ithalatla birlikte yerel tarafta çalışıyor), ama başka bir yol bloğuna çarpıyorum. Soruları talihsizliğimi yansıtacak şekilde güncelledim. – skamazin

cevap

0

Sorunum için olası bir çözüm buldum. Eclipse ile çalışabilir bir kavanoza Java projesini Export yapabilirim (kütüphaneleri kavanoza "yerleştirir"). Daha sonra java -jar <jar_filename> ile çalıştırmak sunucu üzerinde çalışacak ve yerel makinede olduğu gibi çalışacaktır. Ancak, bazı performans sorunları (yavaş başlangıç) fark ettim, bu yüzden bu en iyi çözüm olduğunu düşünmüyorum, ancak bir çözümdür.