记录些今天倒腾的东西
1、 搜索maven库,搜索出自己想要的库的groupid等信息
2、 spring下面整合memcache
memcache的java客户端选用的是xmemcache,可以在maven中心库中直接搜索到并使用
[codesyntax lang=”xml”]
<bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean"> <property name="servers"> <value>127.0.0.1:11211</value> </property> </bean>
[/codesyntax]
这样就可以在程序中使用MemcachedClient连接类了
[codesyntax lang=”java”]
public class Index { @Autowired private MemcachedClient memcachedClient; public void execute(Context context) { try { WebSiteDO web = new WebSiteDO(); memcachedClient.set("test111", 30, web); WebSiteDO webCache = memcachedClient.get("test111"); System.out.println(webCache.getImagesPath()); } catch (TimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MemcachedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
[/codesyntax]
3、webx中使用memcache来存储session
修改webx.xml中的session部分
[codesyntax lang=”xml”]
<session> <id> <cookie path="/" maxAge="2048" httpOnly="true" /> </id> <stores> <session-stores:store id="simple" class="cn.yundev.xzy.common.MemCacheSession"/> </stores> <store-mappings> <match name="*" store="simple" /> </store-mappings> </session>
[/codesyntax]
扩展session只需要继承接口SessionStore接口
[codesyntax lang=”java”]
public class MemCacheSession implements SessionStore { private MemcachedClient memcachedClient; public void init(String storeName, SessionConfig sessionConfig) throws Exception { ApplicationContext atx = new ClassPathXmlApplicationContext("xmemcache.xml"); memcachedClient = (MemcachedClient) atx.getBean("memcachedClient"); } public Iterable<String> getAttributeNames(String sessionID, StoreContext storeContext) { try { SessionDO session = memcachedClient.get(sessionID); if (session == null) { return emptyList(); } else { return session.getSessionData().keySet(); } } catch (TimeoutException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (MemcachedException e) { e.printStackTrace(); } return null; } public Object loadAttribute(String attrName, String sessionID, StoreContext storeContext) { try { SessionDO session = memcachedClient.get(sessionID); if (session != null) { Map<String, Object> sessionData = session.getSessionData(); return sessionData.get(attrName); } } catch (TimeoutException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (MemcachedException e) { e.printStackTrace(); } return null; } public void invaldiate(String sessionID, StoreContext storeContext) { try { memcachedClient.delete(sessionID); } catch (TimeoutException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (MemcachedException e) { e.printStackTrace(); } } public void commit(Map<String, Object> attrs, String sessionID, StoreContext storeContext) { Map<String, Object> sessionData = new HashMap<String, Object>(); try { SessionDO session = memcachedClient.get(sessionID); if (session != null) { sessionData = session.getSessionData(); } for (Map.Entry<String, Object> entry : attrs.entrySet()) { String attrName = entry.getKey(); Object attrValue = entry.getValue(); if (attrValue == null) { sessionData.remove(attrName); } else { sessionData.put(attrName, attrValue); } } SessionDO sessionDO = new SessionDO(); sessionDO.setSessionData(sessionData); boolean r = memcachedClient.set(sessionID, 1200, sessionDO); System.out.println(r); } catch (TimeoutException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (MemcachedException e) { e.printStackTrace(); } } }
[/codesyntax]