??xml version="1.0" encoding="utf-8" standalone="yes"?>
?例子Q这里介l的都是生成双击可执行的jar包)Q?br />
1.首先介绍如何在命令行下执行打包程序?br />
1.1.没有包结构的最单的工程?br />
(1)在cQ盘下新建文?#8220;HelloWorld.java”Q?br />
2 {
3 public static void main(String[] args){
4 System.out.println("Hello world!");
5 }
6 }
(3)在cQ盘下新建文?#8220;menefest”Q没有后~名)Q?br />
Main-Class: HelloWorld
(4)打包Q输?span style="color: #ff0000">c:\jar cvmf menifest HelloWorld.jar HelloWord.jar HelloWorld.class,在cQ盘下生?#8220;HelloWorld.jar”?br />
(5)执行Q输?span style="color: #0000ff">c:\java -jar HelloWord.jar。屏q回?#8220;HelloWorld”?br />
1.2.有包l构的java工程?br />
(1)在c:\com\gosyl\demo\下新建文?#8220;HelloWorld.java”Q?br />
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
(2)在命令行下输?span style="color: #0000ff">c:\javac com/gosyl/demo/HelloWorld.javaQ在c:\com\gosyl\demo\文g夹下~译生成“HelloWorld.class”?br />
(3)在cQ盘下新建文?#8220;menefest2”Q没有后~名)Q?br />
Main-Class: com.gosyl.demo.HelloWorld
(4)打包Q输?span style="color: #ff0000">c:\jar cvmf menifest2 HelloWorld.jar HelloWord.jar com/,在cQ盘下生?#8220;HelloWorld.jar”?br />
(5)执行Q输?span style="color: #0000ff">c:\java -jar HelloWord.jar。屏q回?#8220;HelloWorld”?br />
1.3.引用到外部jar包的java工程?br />
(1)在c:\com\gosyl\demo\下新建文?#8220;Car.java”Q?br />
public class Car
{
public static void main(String[] args){
Light.on();
}
}
(2)在c:\com\gosyl\demo\下新建文?#8220;Light.java”Q?br />
class Light
{
public static void on(){
System.out.println("Light is on!");
}
}
(3)打包1Q输?span style="color: #ff0000">c:\jar cvf Light.jar com/gosyl/demo/Light.class,在cQ盘下生?#8220;Light.jar”?/span>
(4)在cQ盘下新建文?#8220;menefest-car”Q没有后~名)Q?br />
Class-Path: Light.jar
(5)打包2Q输?span style="color: #ff0000">c:\jar cvmf menifest-car Car.jar com/gosyl/demo/Car.class,在cQ盘下生?#8220;Car.jar”?/span>
(6)执行Q输?span style="color: #0000ff">c:\java -jar Car.jar。屏q回?#8220;Light is on”?br />
?ȝ
1.清单文gmenifestQ对格式要求很高Q注意每个冒号后面要有一个空|文g最后要有一个空行?br />
2.对于引用到外部jar包的工程Q需要在manifest中定义好Class-Path属性?br />
3.对于双击.bat文g出现刷屏现象的情况,L接把.bat文g的内定w入命令行执行?br />
4.对于重复{的jar包,在META-INF里面会出现多个签名文Ӟ删除掉多余的Q保存其中一个才能保证jws正常启动?br />
]]>
{步骤Q?br />
1.程序打成jar包?br />
q个我就不多说了Q用eclipseQnetbeans{开发工具很方便p打包的?br />
2.用keytool命o生成.store文g?br />
在Q意文件夹下徏立一个keytool.bat文gQ输?br />
keytool -genkey -keystore xxx.keystore -alias xxx -validity 3650
保存,双击执行。将在当前目录下生成一个xxx.keystore文gQ?-alias后接的是别名Q?validity后面接的是该证书有效天数Q这?650表示10q。(用这个证书签名的E序10q内有效Q?br />
3.用jarsignerE序对jar包进行签名?br />
新徏jarsinger.bat文gQ输?br />
jarsigner -keystore xxx.keystore helloworld.jar xxx
保存Q双L行,helloworld.jarp{了?nbsp;
单吧Q有不懂的请联系我gosyl@yahoo.com.cn
准备
一、Java 2 SDK 1.4.2 (或更高版?
1?www.java.sun.com/downloads/ |站中下载,选择
2?Java 2 Platform, Standard Edition (J2SE)
3、?在下拉列表框中选择All platforms
4、?J2SE v 1.4.2_04 SDK includes the JVM technology 下选择
5、?Download J2SE SDK
6?选择accept后下载Windows Offline Installation, Multi-language (j2sdk-1_4_2_04-windows-i586-p.exe, 49.36 MB) 版本
二、Tomcat 5.0.24 (或更高版?
1?a >http://jakarta.apache.org/site/binindex.cgi下蝲
2、在Downloads中选择Binaries
3、在Tomcat 5.0.25 KEYS 中选择5.0.25 exe PGP MD5 下蝲
三、Tomcat Web Server q接?br />1?a >http://jakarta.apache.org/site/binindex.cgi下蝲
2、在Downloads中选择Binaries
3、在Tomcat Web Server Connectors KEYS 中选择
4、JK 2
JK 2 Binary Releases
5、出现Index of/dist/jakarta/tomcat-connectors/jk2/binaries
界面Q选择win32/然后选择下蝲
jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip
注意 q个目录列表昄的文件名U被截断Q所以需要观察浏览器状态栏中的提示Q确认你准备下蝲的文件应该是以\"...iis.zip\"为结
安装
一、Java 2 SDK
q行j2sdk-1_4_2_04-windows-i586-p.exe 按照提示安装Q可以更改安装\径到你习惯的地方Q。这里选择
d:\\jdk(jdk己新建的文g?
二、Tomcat 5
q行jakarta-tomcat-5.0.24.exe 按照提示安装Q可以更改至其它路径Q?br />q里选择d:\\tomcat5.0(tomcat5.0己新建的文g?
选择本地机器的jdk路径Q一般情况下Q安装文件会自动搜烦q显C,如果没有正确昄Q也可以手动更改
成功安装后,E序会提C启动tomcatq查看readme文档?br />注意: 启动Tomcat之前要确定系l没有其它服务已l占?080端口(Tomcat默认端口)?009端口( Tomcat\'s AJP13 q接器端?
Tomcat正常启动后会在系l栏加蝲图标
注意Q?tomcat5.0以下的版本必设初始密码Qtomcat5.0以上的可以不?/p>
三、Tomcat JK2 IIS q接?br />解压~jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip得到bin conf doc三个文g夹,q入\\bin\\后可见isapi_redirector2.dll?br />剪切/复制isapi_redirector2.dll 文g到Tomcat\'s bin\\目录?br />新徏目录win32\\i386\\ q粘贴isapi_redirector2.dll?br />Cq个路径Q稍后配|IIS的时候还会用到。这个\径不是系l要求的Q可改变Q?br />现在可以删除jakarta-tomcat-connectors-jk2.0.4-win32-IIS目录Q这里面的文件已l没用了。实际上在jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip中我们只用到了isapi_redirector2.dll一个文?/p>
讄
一、tomcat
q入 Tomcat\'s conf\\ 文g?
要支?JK2 q接? 你可能需要修改jk2.properties文g. 大多数情况下保留此文件的默认状态即可,本h的多ơ配|过E都没有修改q这个文件?/p>
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
# Set the desired handler list
# handler.list=apr,request,channelJni
# www.domain.com
# Override the default port for the socketChannel
# channelSocket.port=8019
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
# shm.file=${jkHome}/work/jk2.shm
# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:
# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
request.tomcatAuthentication=false
讄环境变量tomcat_home。指向tomcat的安装目录d:\\Tomcat 5.0下。注意要求系l有可用JAVA_HOME环境变量
创徏workers2.properties到d:\\Tomcat 5.0\\conf下。workers2.properties内容文g如下Q?br />[shm]
file=\"d:/Tomcat 5.0/logs/jk2.shm\"
size=1048576
# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:/*.jsp]
[uri:/servlet/*]
worker=ajp13:localhost:8009
三、Tomcat IIS q接?br />你已l放|isapi_redirector2.dll在你的\径下Q本例子中是
d:\\Tomcat 5.0\\bin\\win32\\i386
现在需要添加一些必要的注册信息到注册表Qredirector被IIS调用时会d。徏立一?reg文g
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Apache Software Foundation\\Jakarta Isapi Redirector\\2.0]
\"workersFile\"=\"d:\\\\Tomcat 5.0\\\\conf\\\\workers2.properties\"
\"extensionUri\"=\"/jakarta/isapi_redirector2.dll\"
\"logLevel\"=\"debug\"
\"serverRoot\"=\"d:\\\\Tomcat 5.0\\\\\"
在记事本中写入上面的文字Qƈ保存?reg.reg
双击.reg文g,在注册表中的内容会d成功
HKEY_LOCAL_MACHINE\\SOFTWARE\\Apache Software Foundation\\Jakarta Isapi Redirector\\2.0中可以看到?/p>
四、给Tomcat配制虚拟L多个站点?br />新徏两个文g夹d:\\tomcat1和d:\\tomcat2。在两个文g多w面再分别建立一个ROOT目录?/p>
C本打开d:\\Tomcat5.0\\conf\\server.xml文g。在文gserver.xml中找?br />标签Q在标签之后新徏如下信息Q?/p>
主要是新徏两个虚拟Lwww.tomcat1.com?a >www.tomcat2.com 五、打开tomcat?servlet/*的映?br />C本打开d:\\Tomcat 5.0\\conf\\web.xml文g?br />?br /> 六、在iis中徏立两个站点tomcat1和tomcat2。徏立时注意L头分别设?a >www.tomcat1.com
invoker
org.apache.catalina.servlets.InvokerServlet
debug
0
2
?br />
invoker
/servlet/*
q两个代码段的注释去掉,使其生效?/p>
两个站点分别新徏虚拟目录别名都填QjakartaQ目录选择指向Qd:\\Tomcat 5.0\\bin\\win32\\i386在\"执行Q例如ISAPI应用E序或CGIQ\"一Ҏ上勾Q完成?/p>
IIA{选器
再进行筛选器的选择Ӟ选用jakarta可执行文件ؓd:\\Tomcat 5.0\\bin\\win32\\i386
建筛选器所需要的虚拟目录
选择需要加载Tomcat服务站点Q右键选择新徏,再选择虚拟目录。创拟目录,别名为jakarta。注意这个名字是固定|不要拼写错误Q指定目录ؓisapi_redirector2.dll所在目? 本例子中?d:\\Tomcat 5.0\\bin\\win32\\i386
重启tomcat和iis?/p>
在tomcat1和tomcat2文g夹下最好放一个index.htm和一个index.jsp文g.方便试?br />
一些术?br />SOAPQSimple Object Access Protocal,单对象访问协议)
WSDL(Web Service Description Language,Web服务描述语言)
UDDIQUniversal Description,Discovery and Integration,通用描述Q发现和集成Q?/p>
参与者角?br />1.提供者:提供者是一个被他h视ؓ可以通过|络讉K的服务的软g资?br /> a具有xml形式的描q?br /> b具有一个封装了行ؓ的具体实?/p>
2.注册中心Q一个注册中心管理着关于提供者及其Y件资产的信息资料库?br />q个资料库包?
a业务数据,如名字,描述和联pM息?br /> b数据描q策略,业务处理以及软gl定?/p>
3.h者:从面向服务的体系l构中,h者是一个业务对象,它发现ƈ调用׃个或多个提供者提
供的软g资。从复合计算的观Ҏ_服务h者是一个应用程序,它查找提供者ƈ初始化与提供
者的交互。这个角色可以由下列事物承担Q?br /> a使用web览器的人?br /> b没有用户界面的计实体,例如另外一个web服务?/p>
参与者的交互
1.发布Q提供者将服务信息发布到注册中心。发布机制有多种Q?br /> a直接?br /> 服务提供者通过emailQFTP或者分发CD的方式,直接向服务提供者提供服务描q?br />在这U情况下没有注册中心Q请求者负责定位服务ƈ获取它们的描q?br /> bHTTP GETh
服务h者直接用HTTP GETh直接从服务提供者处获取服务描述?br />q个模型使用了注册中心(公共的web资料库)http://www.xmethods.com
c动态发?br />q种机制通过~程在本地和公共的注册中心中存储或者获取服务描q。在web服务世界中,
虽然有许多注册中心(例如ebXML{)Q然而最常用的却是UDDI。从字面上来_服务?br />供者是使用Ҏ的APIl来发布web服务描述的应用程序?br />2.服务定位Q发玎ͼ
在这U情况下Q服务请求者是一个用特DAPI集向公共或者私有注册中心查询服务描q的应用
E序。这些查询采用定义良好的XML格式?br />3.l定
l定交互设计服务提供者和服务h者,而注册中心是可选项?br /> l定是一个应用程序在使用服务描述生成消息q发送给服务提供者的q程中所做的事情?br /> Web服务描述文gQWSDL文gQ指定服务所支持的网l协议,用来讉K服务的APIQ以?br /> 与请求者用服务相关的其它内容?/p>