1 package hero.jabber; 2 3 24 25 import javax.management.MBeanServer ; 26 import javax.management.ObjectName ; 27 import javax.management.InstanceAlreadyExistsException ; 28 import javax.management.MBeanRegistrationException ; 29 import javax.management.NotCompliantMBeanException ; 30 import javax.management.MalformedObjectNameException ; 31 import com.echomine.jabber.*; 33 import com.echomine.net.*; 34 import java.util.*; 35 import javax.naming.Context ; 36 import javax.naming.NamingException ; 37 import org.objectweb.jonas.service.ServiceException; 38 39 import org.objectweb.jonas.jmx.JmxService; 41 import org.objectweb.jonas.service.AbsServiceImpl; 42 import org.objectweb.jonas.service.ServiceManager; 43 44 45 public class JabberService extends AbsServiceImpl implements JabberServiceMBean { 46 47 48 JabberSession jabberSession; 49 JabberContext jabberContext; 50 52 53 54 56 private String j_user; 57 private String j_password; 58 private String j_server; 59 private int j_port; 60 61 64 private MBeanServer mbeanServer = null; 65 66 public final static String SERVICE_NAME = "jonas:type=service,name=Jabber"; 67 68 70 71 72 public void doInit(Context ctx) throws ServiceException { 73 try { 75 76 ServiceManager sm = ServiceManager.getInstance(); 77 JmxService jmx = (JmxService)sm.getJmxService(); 78 mbeanServer = jmx.getJmxServer(); 79 } catch (Exception e) { 80 throw new ServiceException("JMX Server is not started..."); 82 } 83 84 try { 85 this.j_server = (String ) ctx.lookup("jonas.service.jabberService.host"); 86 System.out.println("HOST: "+this.j_server); 87 this.j_port = new Integer ((String ) ctx.lookup("jonas.service.jabberService.port")).intValue(); 88 this.j_user = (String ) ctx.lookup("jonas.service.jabberService.user"); 89 this.j_password = (String ) ctx.lookup("jonas.service.jabberService.password"); 90 } catch (NamingException e) {} 91 } 92 93 public void setUser(String user) {j_user = user;} 94 protected String getUser() {return j_user;} 95 public void setPassword(String password) {j_password = password;} 96 protected String getPassword() {return j_password;} 97 public void setServer(String server) {j_server = server;} 98 protected String getServer() {return j_server;} 99 public void setPort(int port) {j_port = port;} 100 protected int getPort() {return j_port;} 101 102 public void doStart() throws ServiceException { 103 104 try { 105 mbeanServer.registerMBean(this,new ObjectName (SERVICE_NAME)); 107 System.out.println("JabberService :: Start Service"); 108 } catch (InstanceAlreadyExistsException iae) { 109 throw new ServiceException("Cannot start the Jabber Service (Already Exists)" , iae); 110 } catch (MBeanRegistrationException mbre) { 111 throw new ServiceException("Cannot start the Jabber Service (MBean registration error)" , mbre); 112 } catch (NotCompliantMBeanException ncmbe) { 113 throw new ServiceException("Cannot start the Jabber Service (MBean Not compliant error)" , ncmbe); 114 } catch (MalformedObjectNameException mone) { 115 throw new ServiceException("Cannot start the Jabber Service (ObjectName Malformed)" , mone); 116 } 117 118 this.setName("Jabber Service"); 119 jabberContext = new JabberContext(j_user,j_password,j_server); 121 122 Jabber jabber = new Jabber(); 124 jabberSession = jabber.createSession(jabberContext); 126 try{ 128 jabberSession.connect(j_server,j_port); 129 }catch(ConnectionFailedException cf){ 130 System.err.println(" Jabber service -> Connection Failed:"+cf.getMessage()); 131 }catch(Exception e){ 132 System.err.println(" Jabber service -> Connection Failed:"+e.getMessage()); 133 } 134 try{ 135 jabberSession.getUserService().login(); 136 }catch(JabberMessageException jm){ 137 System.err.println(" Jabber service -> Login Failed:"+jm.getMessage()); 138 }catch(Exception e){ 139 System.err.println(" Jabber service -> Login Failed:"+e.getMessage()); 140 } 141 142 } 143 144 148 public synchronized boolean sendMessage(String JID, String resource, String subject, String messageBody){ 149 try{ 150 JabberChatMessage msg = new JabberChatMessage(JabberChatMessage.TYPE_NORMAL); 151 msg.setSubject(subject); 152 msg.setBody(messageBody); 153 msg.setTo(JID); 154 jabberSession.sendMessage(msg); 155 return true; 156 }catch(Exception e){System.err.println("Jabber service -> Send Message Failed:"+e.getMessage());} 157 return false; 158 } 159 160 161 165 public synchronized boolean registerUser(String login, String password, String email, String name){ 166 boolean status=true; 167 jabberSession.disconnect(); 168 Jabber jabber = new Jabber(); 169 JabberSession session = jabber.createSession(jabberContext); 170 try { 171 session.connect(j_server, j_port); 172 HashMap fields = new HashMap(); 173 fields.put("username", login); 174 fields.put("password", password); 175 fields.put("email", email); 176 fields.put("name", name); 177 try{ 178 session.getUserService().register(jabberContext.getServerName(), fields); 179 }catch(JabberMessageException ex){ 180 status=false; 181 System.err.println("Jabber service ->"+ex); 182 } 183 session.disconnect(); 184 start(); 185 return status; 186 }catch(Exception e){System.err.println("Jabber service ->"+e);} 187 start(); 188 return false; 189 190 } 191 192 196 public synchronized boolean addToRoster(String login, String password, String contactJID,String contactName, String contactGroup ){ 197 boolean status=true; 198 jabberSession.disconnect(); 199 Jabber jabber = new Jabber(); 200 JabberContext context = new JabberContext(login,password,j_server); 201 JabberSession session = jabber.createSession(context); 202 try { 203 session.connect(j_server, j_port); 204 session.getUserService().login(); 205 try{ 206 session.getRosterService().addToRoster(contactJID,contactName,contactGroup,true); 207 session.getPresenceService().subscribe(contactJID); 208 }catch(Exception ex){ 209 status=false; 210 System.err.println("Jabber service ->"+ex); 211 } 212 session.disconnect(); 213 start(); 214 return status; 215 }catch(Exception e){System.err.println("Jabber service ->"+e);} 216 start(); 217 return false; 218 219 } 220 221 public void doStop() throws ServiceException { 222 if (mbeanServer != null) { 223 try { 224 mbeanServer.unregisterMBean(new ObjectName (SERVICE_NAME)); 225 } catch (Exception e) { 226 throw new ServiceException("Cannot stop the Jabber Service (JMX).", e); 227 } 228 } 229 System.out.println("Jabber :: Stop Service"); 230 jabberSession.disconnect(); 231 } 232 } 233 | Popular Tags |