Java中的PoolManager类
时间: 2023-04-03 20:01:45 浏览: 54
PoolManager类是Java中的一个连接池管理器,它可以管理数据库连接池、线程池等资源池,提高资源的利用率和系统的性能。它可以通过预先创建一定数量的连接或线程,避免了每次请求都需要创建新的连接或线程的开销,从而提高了系统的响应速度和吞吐量。
相关问题
impala java api 操作_Cloudera Manager API操作Yarn/Impala队列资源
可以使用 Cloudera Manager API 操作 Yarn/Impala 队列资源。
以下是一些可以使用的 API:
1. 获取 Impala 服务信息:
```
GET /api/v19/clusters/{clusterName}/services/impala
```
2. 获取 Impala 服务角色信息:
```
GET /api/v19/clusters/{clusterName}/services/impala/roles
```
3. 获取 Impala 服务角色配置信息:
```
GET /api/v19/clusters/{clusterName}/services/impala/roles/{roleName}/config
```
4. 获取 Impala 服务角色状态信息:
```
GET /api/v19/clusters/{clusterName}/services/impala/roles/{roleName}/status
```
5. 获取 Impala 服务角色状态信息:
```
GET /api/v19/clusters/{clusterName}/services/impala/roles/{roleName}/metrics
```
6. 获取 Impala 服务角色配置信息:
```
PUT /api/v19/clusters/{clusterName}/services/impala/roles/{roleName}/config
```
7. 获取 Impala 服务角色状态信息:
```
PUT /api/v19/clusters/{clusterName}/services/impala/roles/{roleName}/commands/refresh
```
8. 获取 Impala 资源池信息:
```
GET /api/v19/clusters/{clusterName}/impalaPools
```
9. 获取 Impala 资源池配置信息:
```
GET /api/v19/clusters/{clusterName}/impalaPools/{poolName}/config
```
10. 更新 Impala 资源池配置信息:
```
PUT /api/v19/clusters/{clusterName}/impalaPools/{poolName}/config
```
以上是一些可以使用的 Cloudera Manager API,可以根据需要进行使用。
java shiro整合memcache
Java Shiro可以很方便地与Memcached进行整合,以实现Session的存储和管理。
下面是整合步骤:
1. 首先需要添加Memcached的相关依赖,可以使用Maven来管理依赖,添加以下代码到pom.xml文件中:
```xml
<dependency>
<groupId>com.whalin</groupId>
<artifactId>Memcached-Java-Client</artifactId>
<version>3.0.2</version>
</dependency>
```
2. 在Shiro的配置文件(shiro.ini或shiro.yml)中配置Session的管理方式为Memcached,例如:
```ini
[main]
cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
[session]
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
sessionManager.globalSessionTimeout = 1800000
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
sessionDAO.activeSessionsCacheName = shiro-activeSessionCache
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
securityManager.cacheManager = $cacheManager
# Memcached session
# =======================================
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
sessionDAO.activeSessionsCacheName = shiro-activeSessionCache
sessionDAO.sessionIdGenerator = org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator
cacheManager = com.whalin.MemCached.MemCachedClientPoolCacheManager
cacheManager.poolName = shiroCache
cacheManager.servers = 127.0.0.1:11211
securityManager.cacheManager = $cacheManager
sessionManager.sessionDAO = $sessionDAO
sessionManager.cacheManager = $cacheManager
```
其中,cacheManager配置使用了MemoryConstrainedCacheManager和EhCacheManager,用于缓存Shiro的授权信息和其他缓存数据;sessionDAO配置使用了EnterpriseCacheSessionDAO,用于管理Session的存储和读取;cacheManager配置使用了MemCachedClientPoolCacheManager,用于与Memcached进行交互。
3. 在项目启动时,需要创建Memcached客户端并将其注入到cacheManager中,例如:
```java
import com.whalin.MemCached.MemCachedClient;
import com.whalin.MemCached.SockIOPool;
public class MemcachedCacheManager implements CacheManager {
private MemCachedClient cache;
@Override
public <K, V> Cache<K, V> getCache(String name) throws CacheException {
return new MemcachedCache<>(name, this.cache);
}
public void init() {
String[] servers = {"127.0.0.1:11211"};
SockIOPool pool = SockIOPool.getInstance("shiroCache");
pool.setServers(servers);
pool.initialize();
this.cache = new MemCachedClient("shiroCache");
}
public void destroy() {
SockIOPool.getInstance("shiroCache").shutDown();
}
}
```
4. 在Web应用中,可以使用DefaultWebSessionManager来管理Session,例如:
```java
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
public class MemcachedSessionManager extends DefaultWebSessionManager {
@Override
protected void onStart(Session session, SessionContext context) {
super.onStart(session, context);
// 将Session存储到Memcached中
this.getSessionDAO().create(session);
}
@Override
protected void onStop(Session session, SessionKey key) {
super.onStop(session, key);
// 从Memcached中删除Session
this.getSessionDAO().delete(session);
}
@Override
protected Session retrieveSession(SessionKey sessionKey) throws UnknownSessionException {
// 从Memcached中读取Session
Session session = this.getSessionDAO().readSession(sessionKey);
if (session == null) {
throw new UnknownSessionException("Session not found with key: " + sessionKey);
}
return session;
}
}
```
通过以上步骤,就可以将Java Shiro与Memcached整合起来,实现Session的存储和管理。