2016-10-31 26 views
0

私はWildfly 10 FinalとJSF 2.2.9の動的Webプロジェクトを持っています。メッセージ駆動型Bean経由でメッセージを送信しようとしました。Wildfly 10最終的なJMS必須サービスがインストールされていません

しかし、私はWildfly上のWebアプリケーションを起動しようとする場合、私は次のエラーを取得:WebSocketDrivenBean

23:57:53,971 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "MyApplication.war")]) - failure description: { 
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.module.MyApplication.MyApplication.env.jms.queue.WebSocketDrivenQueue"], 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.MyApplication.MyApplication.env.\"com.example.QueueSenderSessionBean\".myQueue is missing [jboss.naming.context.java.module.MyApplication.MyApplication.env.jms.queue.WebSocketDrivenQueue]"] 
} 
23:57:54,270 INFO [org.jboss.as.server] (ServerService Thread Pool -- 37) WFLYSRV0010: Deployed "MyApplication.war" (runtime-name : "MyApplication.war") 
23:57:54,273 INFO [org.jboss.as.controller] (Controller Boot Thread) WFLYCTL0183: Service status report 
WFLYCTL0184: New missing/unsatisfied dependencies: 
     service jboss.naming.context.java.module.MyApplication.MyApplication.env.jms.queue.WebSocketDrivenQueue (missing) dependents: [service jboss.naming.context.java.module.MyApplication.MyApplication.env."com.example.QueueSenderSessionBean".myQueue] 

@MessageDriven(
    activationConfig = { @ActivationConfigProperty(
      propertyName = "destination", propertyValue = "java:/jms/queue/WebSocketDrivenQueue"), @ActivationConfigProperty(
      propertyName = "destinationType", propertyValue = "javax.jms.Queue") 
    }, 
    mappedName = "java:/jms/queue/WebSocketDrivenQueue") 
    @Named 
    public class WebSocketDriven implements MessageListener { 
    @Inject 
    @WSJMSMessage 
    Event<Message> jmsEvent; 

    public WebSocketDriven() { 
    } 

    public void onMessage(Message message) { 
     jmsEvent.fire(message); 
    } 
} 

QueueSenderSessionBean

@Stateless 
public class QueueSenderSessionBean { 

    @Resource(mappedName = "java:/jms/queue/WebSocketDrivenQueue") 
    private Queue myQueue; 
    @Inject 
    private JMSContext jmsContext; 

    public void sendMyText(String message){ 
     jmsContext.createProducer().send(myQueue, message); 
    } 
} 

、メッセージを送信しようとするクラス:

@Named 
@ClientEndpoint(encoders={JsonEncoder.class}, decoders={JsonDecoder.class}) 
public class MyTestApplication implements Serializable{ 
    private static final long serialVersionUID = 1L; 
    Session userSession = null; 

    @Inject 
    private QueueSenderSessionBean senderBean; 

    .... 

    @OnMessage 
    public void onMessage(WebSocketMessage message) { 
     this.senderBean.sendMyText("Hello");  
    } 
    .... 
} 

私はJMS-サポート用のスタンドアロン・full.xmlでWildFlyサーバを起動し、次の行を挿入:

<jms-queue name="WebSocketDrivenQueue" entries="java:/jms/queue/WebSocketDrivenQueue /> 

は誰も助けることができます私?設定エラーなどがありますか?

ありがとうございました。 よろしくお願いいたします。

+0

これはちょうど命名の問題かもしれません。 'QueueSenderSessionBean'の代わりにキューインジェクションのために' lookup'パラメータを使用しようとします。 '@Resource(lookup =" java:/ jms/queue/WebSocketDrivenQueue ")と似ています。私は、jmsのキュー名が 'java:comp/env'空間にマッピングされていないと思います(確かではありません。http://docs.oracle.com/javaee/7/api/javax/annotation/Resource.htmlを参照してください)。 #mappedName--) – chalda

+0

はい、ありがとうございます。それでおしまい。 präfixjava:/が必要です。私は最初の投稿を編集しました。 しかし、私はWebSocketクラスで** NullpointerExceptionを取得しました** MyTestApplication ** this.senderBean.sendMyText( "Hello"); **任意のアイデアなぜですか? – DJTrust

+0

'server.log'に何らかのエラーはありませんか? WebSocketエンドポイントに 'SLSB' beanの注入に問題があるようです。私はこの分野で多くの経験を持っていないので、私はネット上で簡単に検索し、この答えを見つけました:http://stackoverflow.com/questions/20872300/java-ee-7-how-to-inject-an-ejb -into-a-websocket-serverendpoint私はそれが役に立ちそうです。 – chalda

答えて

関連する問題