2024-04-28 06:38:45 | 我爱编程网
package org.jivesoftware.spark.ui;
import java.util.ArrayList;
import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.spark.util.ModelUtil;
import org.jivesoftware.resource.Res;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.RosterGroup;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.RosterPacket;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.UserManager;
/**
* 处理所有订阅请求
* @author jian
*
*/
public class MySubscription {
private String jid;
//构造函数
public MySubscription(){
}
/**
* 调用
* @param jid 主键ID我爱编程网
*/
public void invoke(final String jid){
this.jid=jid;
final Roster roster=SparkManager.getConnection().getRoster();//返回好友册
//如果用户已经在好友当中,则不显示
RosterEntry entry=roster.getEntry(jid);//返回对应的用户
if(entry!=null&&entry.getType()==RosterPacket.ItemType.to){
Presence response=new Presence(Presence.Type.subscribed);
response.setTo(jid);
SparkManager.getConnection().sendPacket(response);
return;
}
UserManager userManager=SparkManager.getUserManager();
String username=userManager.getNickname(userManager.getFullJID(jid));
username=username==null?StringUtils.parseName(UserManager.unescapeJID(jid)):username;//给usernam赋值
boolean addEntry=addEntry(username);
GetGroupName();
if(addEntry){
Presence response=new Presence(Presence.Type.subscribed);
response.setTo(jid);
SparkManager.getConnection().sendPacket(response);
}
}
/**
* 同意添加好友
*/
private boolean addEntry(String username){
String errorMessage=Res.getString("title.error");
String groupName="Friends";
//获取该用户组是否存在
ContactGroup contactGroup=SparkManager.getWorkspace().getContactList().getContactGroup(groupName);
boolean isSharedGroup = contactGroup!=null&&contactGroup.isSharedGroup();
System.out.println("用户组存在?"+isSharedGroup);
if(isSharedGroup){
errorMessage=Res.getString("message.cannot.add.contact.to.shared.group");
}else if(!ModelUtil.hasLength(username)){
errorMessage=Res.getString("message.specify.contact.jid");
}else if(!ModelUtil.hasLength(groupName)){
errorMessage=Res.getString("message.specify.group");
}else if(ModelUtil.hasLength(username)&&ModelUtil.hasLength(groupName)&&!isSharedGroup){
System.out.println("添加好友");
System.out.println("直接输出Group组:"+groupName);
addEntity(jid, username, groupName);
return true;
}
return false;
}
/**
* 把新用户添加到好友名单
* @param jid 账号
* @param username 昵称
* @param groupName 组名
*/
private RosterEntry addEntity(String jid,String username,String groupName){
String[] groups={groupName};
System.out.println("开始添加了哦");
for(int i=0;i
System.out.println(groups[i]);
}
Roster roster=SparkManager.getConnection().getRoster();
RosterEntry userEntry=roster.getEntry(jid);
boolean isSubscribed=true;
if(userEntry!=null){
isSubscribed=userEntry.getGroups().size()==0;
}
if(isSubscribed){
try {
roster.createEntry(jid, username, new String[]{groupName});
} catch (XMPPException e) {
Log.error("不能添加新的好友"+jid,e);
}
return roster.getEntry(jid);
}
try {
RosterGroup rosterGroup=roster.getGroup(groupName);
if(rosterGroup==null){
rosterGroup=roster.createGroup(groupName);
}
if(userEntry==null){
roster.createEntry(jid, username, groups);
userEntry=roster.getEntry(jid);
}else {
userEntry.setName(username);
rosterGroup.addEntry(userEntry);
}
userEntry=roster.getEntry(jid);
} catch (XMPPException ex) {
Log.error(ex);
}
return userEntry;
}
private void GetGroupName(){
ArrayList
for(ContactGroup group:SparkManager.getWorkspace().getContactList().getContactGroups()){
if(!group.isOfflineGroup()&&!"Unfiled".equalsIgnoreCase(group.getGroupName())&&!group.isSharedGroup()){
list.add(group.getGroupName());
System.out.println(group.getGroupName());
}
}
}
}
首先确保SQLSERVER服务正在运行,并可以允许远程访问连接 然后按如下步骤进行连接 1.安装JDBC驱动 1)下载JDBC驱动 2)执行sqljdbc_4.0.2206.100_chs.exe解压驱动文件 3)拷贝以下目录中的sqljdbc_auth.dll到Windows的System32目录。
我爱编程网(https://www.52biancheng.com)小编还为大家带来如何配置Eclipse来使用Java编写Spark App的相关内容。
1. 环境准备
Eclipse 请不要使用最新的 Neon(4.6) ,太多Bug了。 还是使用最新的 Mars(4.5) 系列吧
JDK 版本8.x (Linux推荐Oracle, 没有测试过OpenJDK)
因为只是用Java,因此无需安装Scala及其相应的插件
2. 创建一个新的maven项目
3. pom.xml
这里只列出了必要的几个依赖。 其他的请根据你自己的项目需求添加
4. 使用maven打包
之后在Goal 之中填写clean package 即可
如果在修改了与Spark相关的代码之后,需要重新编译打包才行。 否则会有异常提示。
5. 代码编写注意事项:
在创建JavaSparkContext的时候,需要把自己加进去。
public static JavaSparkContextgetContext(String taskName) {
JavaSparkContextsc = new JavaSparkContext(SparkConnUtils.getSparkConf(taskName));
sc.addJar("target/sparkstat-0.0.1-SNAPSHOT.jar");
return sc;
}
其中target/sparkstat-0.0.1-SNAPSHOT.jar是maven 运行之后生成的完整的jar包
如何在php后端及时推送消息给客户端后端代码push.php<?phpuseWorkerman\Worker;require_once'./Workerman/Autoloader.php';//初始化一个worker容器,监听1234端口$worker=newWorker('websocket://0.0.0.0:1234');//这里进程数必须设置为1
零基础如何学Python新手学Python可以按照以下步骤进行:1.按部就班敲代码在Python的学习教程中,在讲到相应的语法规则的时候,必定有相应的案例,Python新手应按部就班的敲一遍代码,切记不可直接抄写,而是默写,然后进行对比,及时发现错误,并订正。2.阶段案例实操对于正规的Python学习教程中,会安排阶段性的作业考核,也称为案例,一个阶段的案例就比较具
基于python开发linuxGUI应用,哪个IDE比较好eclipse很强大。不过最近我在用sublimetext2,这个很喜欢。另外geany我也经常用。vi经常用。再就是python自带的idleeclipse有些大。用起有些有不方便。sublimetext2很体贴,小巧,适合专业程序员使用。也适合高度较小的屏幕。geany是相对比较完善的,免费,又普及的,各个平台都有的
零基础如何学习Python?第一:找到一个好的教程可以买本书,跟着书学习,书上的例子可以跟着写,课后的习题尽量做。没有买书的朋友,可以从网上找教程,在浩瀚如烟的互联网上,没有你找不到的,只有你想不到的。彻底0基础的朋友,建议先确定自己是否对Python感兴趣,兴趣是好的老师,只有在兴趣的驱动下你才能坚定不移克服学习上遇到的困难。课课家Python从入门到精通视频教程第二,循序渐
零基础学习Java需要掌握哪些基础技能?很多零基础学习Java的小伙伴,只清楚Java薪资高,就准备去学习,但是学习的过程中困难重重,不知道怎么学习,也不知道从何学习,Java入门学习基础是什么也不知道,今天小编介绍一下:零基础学习Java需要掌握哪些基础技能?希望对于Java入门基础学习的小伙伴有所帮助一、零基础学习Java需要掌握哪些基础技能?先了解什么是Java的四个方面
php是写后端还是前端的语言?php是前端还是后端php属于后端。php(全称php:HypertextPreprocessor,即“php:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。后端。这里的前端是指的为访问者服务为目的的应用,后端是管理、运营、数据挖掘等非面向访问者的东西。PHP是属于后端开发,不过PHP除了开发后台功能
零基础如何学习Python进步快?学习Python对于零基础的人来说可能会有些困难,但是只要你有恒心和毅力,就一定能够取得进步。以下是一些建议:1.选择合适的教材或课程:对于初学者来说,选择一本适合自己的教材或者在线课程非常重要。你可以根据自己的需求和兴趣来选择,比如《Python编程快速上手——让繁琐工作自动化》、《Python编程从入门到实践》等。2.制定学习计划:制定
PHP如何做好最基础的安全防范PHP如何做好最基础的安全防范php给了开发者极大的灵活性,但是这也为安全问题带来了潜在的隐患,PHP如何做好最基础的安全防范呢?下面我为大家解答一下,希望能帮到您!当开发一个互联网服务的时候,必须时刻牢记安全观念,并在开发的代码中体现。PHP脚本语言对安全问题并不关心,特别是对大多数没有经验的开发者来说。每当你讲任何涉及到钱财事务等交易问题时,需
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-09-10 08:50:00