package com.tobacco.ermsuite.interfaces.util;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;
public class ConnectionSource {
private static BasicDataSource dataSourceDrp;
/**
* 通过数据源获取数据库连接
*/
public synchronized static Connection getConnDsp() {
Connection ConnDsp = null;
// SimpleDateFormat df = new
// SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");// 格式化时间
// String beforeDate = df.format(new Date(System.currentTimeMillis()));
// System.out.println("获取连接之前时间是:"+beforeDate);
if (dataSourceDrp == null) {
String SourceName = "jdbc/dsp";
String driverClassName = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
String username = "lms";
String password = "lms";
dataSourceDrp = DBCPManager.getDataSource(SourceName,
driverClassName, url, username, password);
}
try {
ConnDsp = dataSourceDrp.getConnection();
// String afterDate = df.format(new
// Date(System.currentTimeMillis()));
// // System.out.println("获取连接之后时间是:"+afterDate);
// long time = (df.parse(afterDate)).getTime()
// - (df.parse(beforeDate)).getTime();
// System.out.println("时间差:" + time + "ms");
} catch (Exception e) {
e.printStackTrace();
}
return ConnDsp;
}
public static void releaseConn(Connection conn) {
try {
if (conn != null && !conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package com.tobacco.ermsuite.interfaces.util;
import java.util.Properties;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBCPManager {
private static String maxActive = "4";// 最大活动连接数,如果非正整数,则不做限制。
private static String maxIdle = "2";// 最大空闲连接数。
private static String maxWait = "5000";// (在没有连接可用时)连接池等待一个数据连接可用时的以毫秒计的最大等待时间,超时以后抛出异常,
/**
* 通过相关参数获取数据源
*/
public static BasicDataSource getDataSource(String SourceName,
String driverClassName, String url, String username, String password) {
BasicDataSource dataSource = null;
try {
Properties p = new Properties();
p.setProperty("name", SourceName);
p.setProperty("driverClassName", driverClassName);
p.setProperty("url", url);
p.setProperty("password", password);
p.setProperty("username", username);
p.setProperty("maxActive", maxActive);
p.setProperty("maxIdle", maxIdle);
p.setProperty("maxWait", maxWait);
p.setProperty("removeAbandoned", "true");
p.setProperty("removeAbandonedTimeout", "180");// 活动连接的最大空闲时间为3分钟,以秒为单位
p.setProperty("testOnBorrow", "true");
p.setProperty("logAbandoned", "true");
p.setProperty("type", "javax.sql.DataSource");
dataSource = (BasicDataSource) BasicDataSourceFactory
.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
}
return dataSource;
}
public void shutdownDataSource(BasicDataSource dataSource) {
try {
if (dataSource != null) {
dataSource.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.tobacco.ermsuite.interfaces.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SqlUtilTool {
/**
* 通过sql查询,返回list结果
*/
public static List<Map> getResultList(Connection conn, String sql) {
PreparedStatement stmt = null;
ResultSet rset = null;
List<Map> resList = null;
try {
stmt = conn.prepareStatement(sql);
rset = stmt.executeQuery();
if (rset != null) {
// 获取列名
ResultSetMetaData meta = rset.getMetaData();
List columnnameTable = new ArrayList();
int colCount = meta.getColumnCount();
for (int i = 1; i < colCount + 1; i++) {
columnnameTable.add(meta.getColumnName(i));
}
// 把结果封装到List通过Map形式
resList = new ArrayList();
while (rset.next()) {
Map mdata = new HashMap();
for (int i = 0; i < columnnameTable.size(); i++) {
String columnName = String.valueOf(columnnameTable
.get(i));
String columnVal = rset.getString(columnName);
mdata.put(columnName, columnVal);
}
resList.add(mdata);
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rset != null) {
rset.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return resList;
}
}
package com.tobacco.ermsuite.interfaces.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class StringUtilTool {
/**
* 处理通过传递的字符串进行转换空格处理
*/
public static String convertStr(String strParam) {
if (null == strParam) {
strParam = "";
} else {
strParam = strParam.trim();
}
return strParam;
}
/**
* /** 创建目录
*
* @param fileDir
* 目标目录名
* @return
*/
public static boolean createDir(String fileDir) {
boolean isDir = false;
try {
File folder = new File(fileDir);
if (!(folder.exists() && folder.isDirectory())) {
folder.mkdirs();
}
isDir = true;
} catch (Exception e) {
e.printStackTrace();
isDir = false;
}
return isDir;
}
/**
* 将Zip压缩字节数组解压
*
* @param zipBytes
* @return byte[]
* @throws IOException
*/
public static byte[] unzip(byte[] zipBytes) throws IOException {
ByteArrayInputStream bais = new ByteArrayInputStream(zipBytes);
ZipInputStream zis = new ZipInputStream(bais);
zis.getNextEntry();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
final int BUFSIZ = 4096;
byte inbuf[] = new byte[BUFSIZ];
int n;
while ((n = zis.read(inbuf, 0, BUFSIZ)) != -1) {
baos.write(inbuf, 0, n);
}
byte[] data = baos.toByteArray();
zis.close();
return data;
}
/**
* 将字节数组Zip压缩
*
* @param data
* @return byte[]
* @throws IOException
*/
public static byte[] zip(byte[] data) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipEntry ze = new ZipEntry("servletservice");
ZipOutputStream zos = new ZipOutputStream(baos);
zos.putNextEntry(ze);
zos.write(data, 0, data.length);
zos.close();
byte[] zipBytes = baos.toByteArray();
return zipBytes;
}
/**
* 对字符串先进行zip压缩,再进行base64编码
*
* @param qrStr
* @return String
* @throws IOException
*/
public static String encode(String qrStr) throws IOException {
BASE64Encoder encoder = new BASE64Encoder();
return new String(encoder.encode(zip(qrStr.getBytes())));
}
/**
* 对字符串先进行base64解码,再进行zip解压
*
* @param qrStr
* @return String
* @throws IOException
*/
public static String decode(String qrStr) throws IOException {
BASE64Decoder decoder = new BASE64Decoder();
byte[] bytes = decoder.decodeBuffer(qrStr);
return new String(unzip(bytes), "GBK");
}
/**
* 对DOC 文件输出xml字符串
*
* @param qrStr
* @return String
* @throws IOException
*/
public static String docToXml(Document doc) throws IOException {
Format format = Format.getPrettyFormat();
format.setEncoding("GBK");// 设置xml文件的字符为GBK,解决中文问题
XMLOutputter xmlout = new XMLOutputter(format);
ByteArrayOutputStream bo = new ByteArrayOutputStream();
xmlout.output(doc, bo);
String xmlStr = bo.toString();
return xmlStr;
}
/**
* 对List 中Map 转换成xml字符串
*
* @param List
* <Map>
* @return String
* @throws IOException
*/
public static String listToXmlString(List<Map> list) throws IOException {
Document result = new Document();
Element root = new Element("DATASETS");
root.setText("");
if (list != null) {
for (Map map : list) {
Set keys = map.keySet();
Iterator iterator = keys.iterator();
Element data = new Element("DATASET");
while (iterator.hasNext()) {
String key = String.valueOf(iterator.next());
String value = String.valueOf(map.get(key));
Element node = new Element(key);
node.setText(value);
data.addContent(node);
}
root.addContent(data);
}
}
ArrayList arrayList = new ArrayList();
arrayList.add(root);
result.setContent(arrayList);
String resultXML = docToXml(result);
return resultXML;
}
/**
* 对List 中Map 转换成json字符串
*
* @param List
* <Map>
* @return String
* @throws IOException
*/
public static String listToJsonString(List<Map> list) throws IOException {
String resStr;
StringBuffer jsons;
StringBuffer json;
if (list != null) {
jsons = new StringBuffer("");
jsons.append("{\"list\":[");
for (Map map : list) {
Set keys = map.keySet();
Iterator iterator = keys.iterator();
json = new StringBuffer("{");
while (iterator.hasNext()) {
String key = String.valueOf(iterator.next());
String value = String.valueOf(map.get(key));
json.append("\"").append(key).append("\",");
json.append("\"").append(value).append("\",");
}
jsons.append(json.substring(0, json.length() - 1)).append("},");
}
resStr = jsons.substring(0, jsons.length() - 1) + "]}";
} else {
resStr = "{}";
}
return resStr;
}
}
package com.tobacco.ermsuite.interfaces.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import com.tobacco.ermsuite.interfaces.mail.MailFactory;
public class TestWebService extends Thread {
public static void main(String[] args) {
// for (int i = 0; i < 1; i++) {
// TestWebService myThread = new TestWebService();
// myThread.start();
// System.out.println("----------" + i);
// }
}
public void run() {
try {
invokeService();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void invokeService() throws Exception {
Object result = null;
Service serv = new Service();
String url = "http://localhost:9080/lms/services/DrpDataService";
String method = "testSearchList";
try {
Call call = (Call) serv.createCall();
call.setTargetEndpointAddress(url);
call.setOperationName(method);
result = call.invoke(new Object[] {});
// System.out.println("调用web服务的方法:+" + method + " 成功!\n返回值为:" +
// result);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
相关推荐
2. **配置文件**:如Spring、MyBatis等框架的配置文件,用于设置数据源、事务管理、依赖注入等。 3. **数据库脚本**:创建数据库表结构和初始化数据的SQL文件,用于搭建项目所需的数据库环境。 4. **部署脚本**:如...
本文主要探讨了基于JAVA-COM Bridge与J2EE连接器的COM数据源信息获取技术,这是解决异构系统间互操作性和信息共享的有效手段。 首先,J2EE连接器体系结构(J2EE Connector Architecture, JCA)是Java 2 Platform, ...
而Hibernate作为持久层的代表,主要负责数据源和连接池的管理,以及对象关系映射(Object-Relational Mapping, ORM)。 在设计原则方面,面向对象编程的目标是高内聚、低耦合,遵循单一职责原则(SRP)、开放-封闭原则...
**J2EE代码生成器源代码详解** J2EE代码生成器是一种强大的开发工具,它能够自动生成符合J2EE规范的源代码,极大地提高了开发效率,减少了手动编写重复代码的工作量。通过理解和掌握这种工具的源代码,开发者可以更...
数据源是连接数据库的桥梁,负责管理数据库连接,提供线程安全的获取连接方式,以避免资源浪费和潜在的并发问题。在J2EE应用中,dataSource通常由应用服务器管理,例如Tomcat、WebLogic或JBoss等,它们能够配置多个...
数据源可以通过JNDI(Java Naming and Directory Interface)获取,因此正确答案是C.JNDI。 16. **用于接收浏览器请求的对象** `HttpServletRequest`对象用于接收来自浏览器的请求,因此正确答案是A....
配置完成后,我们可以通过编写Java代码来获取并使用这个数据源。 ```java package com.db; import java.sql.Connection; import java.sql.SQLException; import javax.naming.Context; import javax.naming....
3. **代码使用**:在Java代码中,你可以通过JNDI查找来获取数据源并建立数据库连接: ```java Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env...
数据库连接通常通过JDBC(Java Database Connectivity)实现,J2EE应用服务器会提供一个数据源(DataSource),使得应用能够方便地获取和管理数据库连接。在图书管理系统中,数据库可能存储了图书的元信息(如书名、...
J2EE是Java企业级应用开发的标准平台,提供了一套完整的框架和服务,包括Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JMS(Java Message Service)等组件,用于构建分布式、多层的企业级应用...
数据源(DataSource)是Java编程语言中用于管理与数据库连接的一种机制,它提供了获取数据库连接的能力,同时能够管理这些连接的生命周期,如连接池的大小、连接超时时间等。在J2EE环境中,数据源通常由容器(如...
在本系统中,Spring用于管理DAO、Service等组件,实现事务控制,以及提供数据源和邮件服务等功能。 Hibernate作为持久层框架,是ORM(对象关系映射)的代表,它简化了数据库操作,将Java对象与数据库表映射,实现了...
如果需要从数据库获取数据,那么需要使用JDBC(Java Database Connectivity)来建立数据库连接,执行SQL语句,并处理结果集。 Java并发编程是Java平台中的一个重要领域,它涉及到如何在多线程环境下有效地执行任务...
最后,通过编写一个简单的J2EE应用,尝试从数据源获取连接并执行SQL查询,以验证数据源配置是否成功。 在提供的文档“was数据库连接配置.doc”中,会详细展示每一步操作的界面截图和具体步骤,帮助初学者更直观地...
源代码可能包含使用JNDI查找和获取数据源的示例。 10. **MVC(Model-View-Controller)设计模式**:J2EE应用常常采用MVC模式,源代码可能展示了如何分离业务逻辑、视图和控制逻辑,提高代码可维护性和可扩展性。 ...
综上所述,"j2ee开发的网上书店源代码"是一个全面展示J2EE技术栈实际应用的实例,它不仅涵盖了Java Web开发的关键技术,还涉及到了数据库设计、安全性、用户体验等多个方面,对于学习和理解J2EE开发具有很高的参考...
- **数据源(DataSource)**:提供了一种统一的方式访问不同的数据库,使应用程序不必关心具体的数据库实现细节。 - **连接池**:预先创建一定数量的数据库连接对象,供应用程序使用,从而避免了频繁创建和销毁连接...
10. **JNDI(Java Naming and Directory Interface)**:JNDI用于查找和管理资源,如EJB、数据源或邮件服务器。在J2EE环境中,JNDI使得应用能够透明地获取和使用这些资源。 在《J2EE专业项目实例开发》源代码中,你...