Oracle中可以调用Java的代码,一般通过两种方式进行调用,一个是直接将Java代码写在Oracle内部,另外一种是将编译好的class文件载入到Oracle中。
-A-
1、在SQLPlus中创建Oracle中的Java类与方法(方法必须是静态公有方法)
create or replace and compile java source named hello as
public class Hello {
public static String Message(String name) {
return "Hello, " + name;
}
}
2、创建函数调用载入Oracle中的Java方法。
create or replace function hello (name varchar2)
return varchar2
as
language java name 'Hello.Message(java.lang.String) return java.lang.String';
3、执行函数即可看到结果......
select hello('world!') from dual
-B-
1、创建要调用的Java代码,并编译成Class文件。被调用的方法依旧必须为静态公有方法
public class Number {
public static int getNumber() {
return 99;
}
}
2、用loadjava命令在控制台上将class文件加载到Oracle环境中
loadjava -u sys/sys@orcl -oci8 -verbose -grant scott -synonym -resolve -schema scott D:\Nu ......
Oracle中可以调用Java的代码,一般通过两种方式进行调用,一个是直接将Java代码写在Oracle内部,另外一种是将编译好的class文件载入到Oracle中。
-A-
1、在SQLPlus中创建Oracle中的Java类与方法(方法必须是静态公有方法)
create or replace and compile java source named hello as
public class Hello {
public static String Message(String name) {
return "Hello, " + name;
}
}
2、创建函数调用载入Oracle中的Java方法。
create or replace function hello (name varchar2)
return varchar2
as
language java name 'Hello.Message(java.lang.String) return java.lang.String';
3、执行函数即可看到结果......
select hello('world!') from dual
-B-
1、创建要调用的Java代码,并编译成Class文件。被调用的方法依旧必须为静态公有方法
public class Number {
public static int getNumber() {
return 99;
}
}
2、用loadjava命令在控制台上将class文件加载到Oracle环境中
loadjava -u sys/sys@orcl -oci8 -verbose -grant scott -synonym -resolve -schema scott D:\Nu ......
class TestTryFinallyC {
public static void main(String[] args) {
System.out.println(testt());
}
public static int testt() {
int x = 99;
try {
return x;
}finally {
x = 8;
}
}
}
某年某月的某一天,群里一位仁兄发了上边的代码。
结果是出人意料的。
下面我发一下这段代码的JVM完整指令
Compiled from "TestTryFinallyC.java"
class TestTryFinallyC extends java.lang.Object
SourceFile: "TestTryFinallyC.java"
minor version: 0
major version: 50
Constant pool:
const #1 = class #2; // TestTryFinallyC
const #2 = Asciz TestTryFinallyC;
const #3 = class #4; // java/lang/Object
const #4 = Asciz java/lang/Object;
const #5 = Asciz <init>;
const #6 = Asciz ()V;
const #7 = Asciz Code;
const #8 = Method #3.#9; // java/lang/Object."<init>":()V
const #9 = NameAndType #5:#6;// "<init>":()V
const #10 = Asciz LineNumberTable;
......
tomcat为一个jsp和servlet的容器,但它除了这个外还自带了web服务器。也就是说,它既是servlet容器,也是一个web服务器。
它是用java编写的,用来执行servlet和jsp的,但处理静态资源上apache等专业服务器功能那么强。所以很多人愿意将两者结合起来使用。tomcat处理动态页面,而appache处理静态资源,这样两者各取所长。另外,随着tomcat的升级和ava的升级,tomcat的性能越来越好,直接使用tomcat就能满足大多数需求,也就没必要集成了。
jboss是一个ejb容器,没有错。它同时也内嵌了一个tomcat,这样的话部署方便而已。给tomcat增加了部分j2ee的功能而已。
总之,tomcat是jboss的一个子集。tomcat里的jboss都包含,jboss有的tomcat就不一写有。当然,也可单独使用tomcat去调用jboss里的ejb
至于mvc,很多初学者对这个概念不是很清楚。现在,大多数个人或小的公司将整个网站放在一台机子上,使用框架做mvc或自已写mvc。
但对于一些大的公司来说一般是将后台使用ejb集群,做为模型。前台使用tomcat等轻量级容器集群,做控制层和显示层,静态资源则使用apache等web服务器去处理。 ......
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ReadSetting {
private Element eroot = null;
public void setRootElementByPath (String path) {
File f = new File(path);
Element root = null;
if(f.exists())
{
SAXReader reader = new SAXReader();
Document doc;
try {
doc = reader.read(f);
root = doc.getRootElement();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
eroot = root;
}
public Map getSetting(String ename) {
Map objmap = null;
if(eroot!=null&&ename!=null&&!ename.equals(""))
objmap = getElements(eroot,ename);
return objmap;
}
private Map getElements(Element root,String ename)
{
Element foo;
Map o ......
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class ReadSetting {
private Element eroot = null;
public void setRootElementByPath (String path) {
File f = new File(path);
Element root = null;
if(f.exists())
{
SAXReader reader = new SAXReader();
Document doc;
try {
doc = reader.read(f);
root = doc.getRootElement();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
eroot = root;
}
public Map getSetting(String ename) {
Map objmap = null;
if(eroot!=null&&ename!=null&&!ename.equals(""))
objmap = getElements(eroot,ename);
return objmap;
}
private Map getElements(Element root,String ename)
{
Element foo;
Map o ......
import java.awt.Image;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
public class createXml
{
public static boolean writeXml(String path,String dir,String wpath,String wname)
{
File[] files = ReaderListFiles(path);
boolean flag = false;
if(files!=null)
{
StringBuffer xml = ReaderFilesContent(files,dir);
if(xml!=null)
flag = writeXmlFile(wname,wpath,xml);
}
return flag;
}
private static File[] ReaderListFiles(String path)
{
File file = new File(path);
if(file.exists()&&file.isDirectory())
return file.listFiles();
else if(file.exists()&&file.isFile())
{
File[] files = new File[1];
files[0] = file;
return files;
}
else
return null;
}
private static StringBuffer ReaderFilesContent(File[] files,String dir)
{
StringBuffer txml = new StringBuffer();
for(int i=0;i<files.length;i++)
{
String filena ......
import java.awt.Image;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
public class createXml
{
public static boolean writeXml(String path,String dir,String wpath,String wname)
{
File[] files = ReaderListFiles(path);
boolean flag = false;
if(files!=null)
{
StringBuffer xml = ReaderFilesContent(files,dir);
if(xml!=null)
flag = writeXmlFile(wname,wpath,xml);
}
return flag;
}
private static File[] ReaderListFiles(String path)
{
File file = new File(path);
if(file.exists()&&file.isDirectory())
return file.listFiles();
else if(file.exists()&&file.isFile())
{
File[] files = new File[1];
files[0] = file;
return files;
}
else
return null;
}
private static StringBuffer ReaderFilesContent(File[] files,String dir)
{
StringBuffer txml = new StringBuffer();
for(int i=0;i<files.length;i++)
{
String filena ......
/*
ArrayList是最常用的List实现类,内不是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能含有“空隙”,当数组大小不满足时需要增加存储能力,就要将已有数组数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动,代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。
Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问AarryList慢
LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,它还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当做堆栈、队列和双向队列使用。
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Stack;
import java.util.Vector;
/**
* 演示各种List的使用
* List是能维护元素的次序,它允许元素重 ......