XMPP를 통해 메시지를 전송하라는 요청을받는 웹 서비스를 작성하고 있습니다. 그러나 모든 메시지가 하나의 계정에서 전송됩니다 (서버가 로그인하여 사용자에게 알림을 보냅니다).하나의 XMPPConnection 만 생성되도록하는 방법은 무엇입니까? 싱글 톤을 사용 하시겠습니까?
여기에 문제가 있습니다 - 어떻게 구현합니까? 내가 here, 을 읽은 것처럼 나는 싱글로 XMPPConnection를 구현하려고했지만, 나는 호스트 이름, 포트를 포함하는 생성자에 인수 전달에 붙어있어, JID는 매개 변수 싱글은 싱글
없는 등 ... 따라서 다음과 같이 해결할 생각입니다. (어떤 종류의 공장입니까?) :
public class XMPPConnectionSingleton
{
private volatile static XMPPConnectionSingleton anInstance;
private volatile static XMPPConnection connection;
public static XMPPConnectionSingleton getInstance() {
if(anInstance == null) {
synchronized (XMPPConnectionSingleton.class) {
if(anInstance == null)
anInstance = new XMPPConnectionSingleton();
}
}
return anInstance;
}
public void init(String server, int port, String jid, String password, String resource)
{
ConnectionConfiguration conf = new ConnectionConfiguration(server, port);
connection = new XMPPConnection(conf);
// logging in, etc.
}
}
좋은 방법입니까? 아니면 매개 변수없이 생성자를 수락하여 XMPPConnection의 래핑 클래스를 만드는 것이 더 낫습니다.
중요한 문제는 웹 서비스가 작동하는 방식입니다. 여러 통화가 동시에 이루어지기를 기대합니까? 그렇다면 XMPP 서버가 동시에 여러 연결된 클라이언트를 허용합니까? – ThomasRS
크기가 다른 환경에서 웹 서비스가 사용되므로 동시 호출이 발생할 수 있습니다. 동시에 여러 고객이 연결된다는 것은 무엇을 의미합니까? XMPP 서버는 WS 서버에서 단 하나의 연결 만 받아 들여야합니다. –
그래, 다른 질문 [여기] (http://stackoverflow.com/search?q=XMPP+multiple+clients+)에 따르면, 동시에 여러 클라이언트처럼 보일 수도 있습니다. 너무 많은 오버 헤드가 없다면, 그렇게 생각할 수 있습니다. – ThomasRS