用这些ejb+jboss7.1+jndi 访问mysql数据库怎么弄呢
解决方案 »
- 关于bean不能实例化的问题
- ERROR: Access denied for user 'root'@'localhost' (using password: YES)
- org.apache.commons.dbcp.SQLNestedException
- ANT的使用(现在用ant还多吗)
- 我该学写什么
- 对linux感兴趣的请进
- 文件合并器,帮忙看下那错
- 用myeclipse做表映射时这个是什么意思Generate support for ListedTable(fk)->UnlistedTable and UnlistedTable(fk)->ListedTable
- 求助大神帮看看这问题应该怎样解决??
- WEBLOGIC加载JAR问题..
- 请问:当使用非gmail域名的gmail邮箱作为smtp发送电子邮件时报异常
- java.util.ArrayList cannot be cast to txgl.entity.P_Person
1 编辑jboss-6.1.0.Final/docs/examples/jca/mssql-ds.xml或者mssql-xa-ds.xml(xa resource)
connection-url, user-name, password
2 copy 以上文件到jboss-6.1.0.Final/server/default/deploy下
3 以上是完成数据源的配置工作4 stateless session bean
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class Service implements ServiceLocal {
@Resource(mappedName = "java:/MysqlDS")
private DataSource dataSource;
}
5 以上完成session bean的配置,注意MysqlDS与你配置的resource xml中一致。
6 jndi look 代码 private static Object lookUpJndiObject(String jndiName) {
InitialContext ctx = null;
try {
ctx = new InitialContext();
Object object = ctx.lookup(jndiName);
return object;
} catch (NamingException e) {
String errorMessage = "NamingException: jndiName:" + jndiName;
throw new TMRuntimeException(errorMessage, e);
} finally {
SafeCloseUtil.close(ctx);
}
}jndi名称格式 DeployProjectName + "/" + beanname + "/" + local(or remote)
区别只是 前者 是可以 做分布式的。map.put(key,value);
value是一个对象。
用jndi 是一样的jndi 你首先得有一个jndi.properties文件然后你把你的数据源 绑定在 jndi 上。
InitialContext ctx = new InitialContext();
ctx.bind(jndiName, obj);
如此而已。
在你用的时候在把他取出来
InitialContext ctx = new InitialContext();
obj=ctx.look(jndiName);按照你的需求 obj就是一个 dataSource ..这个dataSource 你可以自己构造
如果你用了 hibernate 那就简单了。(Jboss 自带的 JPA 是用的hibernate的)