- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有用于获取的 HBase 代码(虽然我没有启用 Kerberos,但我计划稍后使用它,所以我想确保在连接和执行 Put 或 Get 时正确处理用户凭据)。
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
MyHBaseService.getUserHBase().runAs(new PrivilegedExceptionAction<Object>() {
@Override
public Object run() throws Exception {
Connection connection = null;
Table StorageTable = null;
List<hFile> HbaseDownload = new ArrayList<>();
try {
// Open an HBase Connection
connection = ConnectionFactory.createConnection(MyHBaseService.getHBaseConfiguration());
Get get = new Get(Bytes.toBytes("filenameCell"));
Result result = table.get(get);
byte[] data = result.getValue(Bytes.toBytes(MyHBaseService.getDataStoreFamily()), Bytes.toBytes(MyHBaseService.getDataStoreQualifier()));
bos.write(data, 0, data.length);
bos.flush();
...
}
});
// now get the outputstream.
// I am assuming byteArrayStream is synchronized and thread-safe.
return bos.toByteArray();
但是,我不确定这是在运行异步线程还是同步线程。
问题:
我使用:
Get get = new Get(Bytes.toBytes("filenameCell"));
Result result = table.get(get);
在这个 run()
函数中。但是为了从 run()
线程中获取信息,我在 run()
之外使用了一个 new ByteOutputArrayStream
。 ByteOutputArrayStream.write
& ByteOutputArrayStream.flush
在 run()
中。然后 toByteArray()
从函数中获取 HBase
内容的二进制字节。这会导致返回空字节,所以我可能没有做对。
但是,我很难找到很好的 HBase
Java API 示例来执行这些操作,而且似乎没有人像我一样使用 runAs。太奇怪了。
我在 Web 应用程序中运行 HBase 1.2.5 客户端(基于请求的函数调用)。
最佳答案
在此代码中,线程在“MyHBaseService.getUserHBase().runAs”中运行。但如果它异步运行,那么在正确执行之前,程序将返回 "bos.toByteArray();",因为它在 runAs() 之外。所以在执行完整的函数之前,它会返回输出。
我认为这就是空值的原因。
关于java - HBase PrivilegedExceptionAction runAs 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945333/
当尝试使用 runas 命令在不同用户帐户下在 Windows Server 2008 上运行 IE 时,我收到消息“不支持 RUNAS 命令”。此命令适用于其他应用程序,但不适用于 IE。还有其他人
我有一个需要使用其他用户名运行的应用程序。 我试图调用“ runas.exe”来调用调用我的应用程序的批处理文件。 当我在命令提示符下尝试此方法时,它工作正常。缺点之一是我必须提供密码 我想知道这是否
Glassfish-3.1.2.2。 我的项目中有 1 个 Servlet 和 2 个 EJB。 Servlet--------->初始化---------------->打印 //EJB 初始化代码
我有一个应用程序,我试图在 Windows 7 和 Windows XP 瘦客户端上运行,但我似乎无法正确获取 runas.exe 命令行。我知道我需要其中的反斜杠转义字符,以便 runas 正确解释
我试图让一个批处理文件自动将密码输入“runas”程序,但我无法让它工作。到目前为止,这是我的批处理文件: echo password | runas /user:testuser c:/path/t
我想通过启动文件夹中的批处理文件从启动时运行一个程序,该文件是这样的: runas.exe/savecred/"user:pedro burgos""%cd%\test.bat" 但是,问题是当我运行
我的应用程序由ShellExecuteEx使用“runas”动词启动了新过程,以获取管理员特权。新过程在用户文件夹中创建了一些文件,但是内置用户无法读取文件。只有管理员可以访问这些文件。在XP和V
我尝试从java docs了解@RunAs注释的使用但我不明白它的用途。谁能解释一下吗? 我的理解是,在某些情况下,如果具有不同角色的经过身份验证的用户想要访问仅允许具有特定角色的用户访问的ejb方法
我正在尝试编写一个批处理脚本,该脚本将为任何给定的 Windows 服务(使用 explorer.exe 进行测试)执行 RunAs,可以在运行时输入任何给定的用户。我目前拥有的是这个。 set /p
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
这个 var psi = new ProcessStartInfo("cmd") { Verb = "runas",
@RunAs 注释允许仅通过指定角色名称来访问 bean。这意味着任何外部客户端只需指向角色名称就可以轻松访问我的 bean,不是吗? 我认为调用者和bean位于不同的服务器上。 如果伪造客户端这么容
是否可以使用 runas 参数在 Windows 注册表中添加启动条目?那么当它启动时,它会以指定的用户身份运行? 最佳答案 看这个食谱: Reading from and writing to th
背景: 在我的组织中,有一个应用程序用于某些关键功能,但它只有在以特定用户身份运行时才能发挥最佳作用。 原因是应用程序将其大量配置存储为本地用户 session ,因此它成为多用户噩梦,这意味着我们不
我必须自动化测试用例。 任务:- 步骤:- 从 powershell 打开管理命令提示符。 步骤:- 在管理命令提示符下执行批处理文件。 步骤:- 批处理文件包括一些命令集,包括 exe 的执行。 例
我正在尝试编写一个 C# 程序,它应该从 Windows 调用 runas 工具并自动输入密码。 我尝试了什么: Process runas = new Process(); runas.StartI
复制代码 代码如下: Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd /c @runas /use
我想运行一个带有 runas 命令的批处理文件。 是否可以在批处理文件中链接密码? 例如: runas/profile/user\domain 密码 提前感谢您的回答 最佳答案 替代解决方案 看起来好
我正在寻找一种方法来将当前 session 的网络凭据捕获到一个我可以稍后传递的变量中...... 关键是在我有帐户访问/特权的外部域上执行命令,但源域和目标域之间没有信任。 首先,我们在使用 run
我正在用 qt 开发一个应用程序,我需要使用 ShellExecuteEx 来启动一个应用程序。我正在运行一个批处理文件,我需要向它传递 2 个参数。第一个参数只是一个字母,但第二个参数是一个路径,可
我是一名优秀的程序员,十分优秀!