分页: 2/3 第一页 上页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]
最近要处理类似的事情,特记录本篇内容,挺好的介绍,虽然版本比较旧,但估计可以参考一下



由于公司业务的需要,最近要在linux下的php支持java类,故把我的调试笔记贴出来,希望对大家有用。

系统环境:
Redhat 9.0
Apache-1.3.27
Mysql3.23-54a-11
Php-4.32
j2sdk1.4.1_03

安装配置:
1.mysql使用的是redhat9自带的rpm包,不介绍安装了,jdk的安装也很简单,我们把jdk安装到/usr/java/j2sdk1.4.1_03 并在/etc/profile设置jdk环境参数。

2.编译安装apache
tar zvxf apache_1.3.27.tar.gz
cd apache_1.3.27
./configure –prefix=/usr/local/apache –enable-module=so –enable-shared=max
make
make install

3.编译安装php
tar zvxf php-4.3.2.tar.gz
cd php-4.3.2
./configure –prefix=/usr/local/php –with-mysql \
--with-apxs=/usr/local/apache/bin/apxs \
--with-java=/usr/java/j2sdk1.4.1_03
make
make install

修改/usr/local/apache/conf/httpd.conf
查找<IfModule mod_mime.c>

在此范围添加

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

4.配置php.ini
cp php.ini.dist /usr/local/php/lib/php.ini

vim php.ini


修改如下内容:
[Java]
java.class.path = /usr/local/php/lib/php/php_java.jar
java.home = /usr/java/j2sdk1.4.1_03
java.library = /usr/java/j2sdk1.4.1_03/jre/lib/i386/libjava.so
java.library.path =/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension_dir = /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension=java.so
保存退出。
cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
ln –s java.so libphp_java.so 这一步很重要哦!

设置环境变量:
export LD_LIBRARY_PATH=/usr/java/j2sdk1.4.1_03/jre/lib/i386:/usr/java/j2sdk1.4.1_03/jre/lib/i386/server

ok!重启一下apache
/usr/local/apache/bin/apachectl start

测试一下,写个测试页test.php
<?
$system=new Java("java.lang.System");

//demonstrate property access
print 'Java version='.$system->getProperty('java.version').' <br>';
?>

正常的话页面应该能显示:Java version=1.4.1_03




作者:张微波

2003-07-05 于北京

出处:http://www.5ilinux.com/apache02.html
Tags: , ,
今天解决了一个问题让我觉得惊喜,虽然我对JSP还算陌生,可是正因为这样,工作时需要解决问题时,得到解决是让人兴奋的。

做的项目其实是互联星空的收费项目,其实是有样例给参考的,代码倒不是主要的问题,主要是处理一下特殊情况。发觉JAVA给项目合作是很合适的,class打包jar后,功能给出接口就行了,一个黑盒子,客户开发是在自己的控制之下的。

先说一下服务器配置,安装java环境和tomcat就不多说了,见《Linux下搭建JSP环境小记

看到比较跩的淘气猫的时候,jsp环境就已经搭建好了,开始配置应用环境。

set CLASSPATH=%CLASSPATH%;%TOMCAT_HOME%\lib\ispsoapservice.jar;....


以上设置是加上classpath参数,程序可以找到相应的jar文件,并需要把jar文件放到刚才定义的路径里面。
但我不相信每次使用jar文件都得修改系统配置,重启服务器,看了一下文章,可以这样处理:

在jsp应用程序下建立 WEB-INF/lib 文件夹,把相应的jar文件放置在该目录下,这样就不需要添加系统变量,但仅限于jsp文件不是到处存放的情况吧,否则就得到处复制了

set CATALINA_OPTS=%CATALINA_OPTS%
-Dcom.onewaveinc.webpro=D:\webpro2\webpro.xml


一直要解决的就是这个问题,xml文件在系统启动的时候指定了,我希望可以引用独立的xml文件。
自己不太懂,问一些有经验的人,该怎么做,好像这个是机密一样,总不肯透漏,或者就是不知道了。阿权比较倔强,希望自己解决掉。问多了也不给答案也没啥意思的。

于是重新安装过tomcat,一步一步配置,让它出错,尝试解决出错,前面的jar文件解决过了,剩下这个了。
首先得明白这个代码的作用,查了一下含义:

引用

Options的可选取项:

(1) -debug:以deug的模式运行interpreter,它允许也jdb(Java调试器)一起使用;

(2) -checksource:打开interpreter时会检查源文件即.java文件和.class文件的日期,如果.java比.class还要新,那么.class文件会被重新编译;

(3) -classpath:该参数覆盖环境变量CLASSPATH;

(4) -mx x:修改所分配内存的最大值,如-mx –10m;x>1000byte

(5) -ms x:修改初始化内存;x>1000byte

(6) -noasyncgc:关闭垃圾回收线程,即不自动回垃圾,这时可以使用System.gc这个方法来手动回收垃圾;

(7) -noverify:关闭代码的验证功能;

(8) -prof:打开报表功能,该功能对程序的执行进行跟踪,最终形成报表文件,记录所有方法的执行时间,有利于找出程序的瓶颈所在;

(9) -ss x:在java的运行环境中为每个线程配置两个别stack,一个用于Java代码,另一个用于c/c++代码,这里可以-ss用于改变用于c/c++代码的stack大小,如-ss 100k,最小值为1000bytes,默认值为128k;

(10) -oss x:用于修改java代码的stack,默认值为400k

(11) -t:显示程序执行过程

(12) -verbose:每次.class运行时显示相关信息;

(13) -verbosegc:每次垃圾回收时显示相关信息;

(14) -D:允许修改System的属性值


这个就好办了,也就是说赋予了System一个变量com.onewaveinc.webpro,指定其值是一个路径
那是否可以在程序开始的时候设定这个值呢,大振人心~~

找到设置系统变量的方法是:

System.setProperty("com.onewaveinc.webpro","D:\webpro2\webpro.xml");


测试成功~
那问题又来了,是否可以读取当前目录下的配置文件呢?
取得现在的系统路径就OK啦~

阿权实践过程就完成了,参考代码如下,加在文件开始处:

<%
String strAbsPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
System.setProperty("com.onewaveinc.webpro",strAbsPath+"/webpro.xml");
%>


解释一下:
request.getRequestURI() 取得现在请求的URI
application.getRealPath 把URI转换为物理路径
getParent()是取得上级路径,也就是现在目录啦!
Tags:
今天又忙了些简单的JSP,找一个MD5的加密都没找到,突然发现用的程序样例里面有例子,于是乎依葫芦画瓢,就做好了,可怜的家伙....

搜了一下jsp做跳转的方法:

引用
使用JSP大约有下列三种跳转方式:
1. response.sendRedirect();
2. response.setHeader("Location","");
3. <jsp:forward page="" />

语句前不允许有out.flush(),如果有,会有异常


赶紧搜一下资料补点血,发现有一个《jsp入门笔记》总结的不错,不知道出处:

一 jsp基本语法

1,<%! %> 声明全局变量
    <%    %> 一般java代码都在此标记中编写,里面声明的变量为局部变量
    <%=表达式%> 用于输出表达式的值 类似于out.println()的作用 但在开发中一般不宜用out.println()来输出
    在程序开发中html与java代码不宜联系太过紧密。
2.表单交互接收传值用 request.getParameter("参数名称") 返回的值为String类型,如果需要转为int类型可用 Integer.parseInt("饱含数字的String");
3.<form>中method的值由post和get两种
    post 传递的值不会显示
    get 传递的值会在地址栏中显示
4。网页中处理乱码
<%@ page contentType="text/html;charset=gb2312"%>
Tags:
   要说Bean,就得提到Introspection和Reflection,还有“动态”。

一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。

尽管在这样的定义与分类下Java不是动态语言,它却有着一个非常突出的动态相关机制(其实C++也是这样的动态机制):Reflection。这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。这种“看透class”的能力(the ability of the program to examine itself)被称为introspection(内省、内观、反省)。Reflection和introspection是常被并提的两个术语。Java中的类都有这样的特点(有时间的话,可以看看Java的Class这个类)。
Tags: ,
  JSP(IAVA SERVER PAGES)是由Sun 公司在Java语言上开发出来的一种动态网页制作技术,其可使您可以将网页中的动态部分和静态的HTML相分离。您可以使用平常得心应手的工具并按照平常的方式来书写HTML语句。然后,将动态部分用特殊的标记嵌入即可,这些标记常常以“<%”开始并以“%>”结束。例如,这儿有一个JSP页面:

<html>
<head><title>JSP教程</title></head>
<body>
<I><%out.println(“hello world”);%></I>
</body></html>


它将输出“hello world”。
  通常,您要将文件以“.jsp”为扩展名,并将它放置到任何您可以放置普通WEB页面的路径下。尽管JSP文件看起来更象是HTML文件而不是Servlet文件,但,事实上,它恰恰将转换为Servlet文件,其中的静态HTML仅仅用来输出Servlet服务方法返回的信息。如果JSP pages 已经被转换为Servlet且Servlet 被编译进而被装载(在第一次被Request时),当您再次Request 此JSP页面时,将察觉不到一瞬的延迟。也请留意这个现象,一些Web Servers允许您为它定义别名,从而,好象一个URL是指向一个HTML,但事实上它指向的是一个Servlet 或JSP pages.
  构造一个JSP page,除了可内嵌的规则的HTML,还有三类主要的JSP元素:s cripting elements,Directives,和 Actions.使用s cripting elements您可以定义最终转换为Servlet的部分,Directives 使您可以控制这个Servlet的整体结构,而Actions使您可以指定可重用的已有组件,另外,还可控制JSP引擎的运行。为了简化s cripting elements,您可以在某一段上利用一些预定义的变量,如request。

JSP 元素
语法
解释

JSP Expression
<%= 表达式 %>

Expression 用于计算并用于输出。
表达式,可使用的预定义的变量有request, response, out, session, application, config, and pageContext(在Sriptlets中也可使用)。

JSP scriptlet
<% 代码 %>

插入用于服务的代码。
代码

JSP Declaration


属于Servlet部分的代码但并不是服务方法。
代码

JSP page Directive
<%@ page att=”val” %>

Tags:
一、 什么是JSP

JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址http://www.javasoft.com/products/jsp。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(s criptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。
本文将介绍利用JSP技术开发动态网页的方法,还将简要分析JSP技术和 Microsoft 公司的 ASP 技术的不同之处。

二、 如何安装和启动

为了实验JSP技术,首先需要建立运行环境,这个过程相当简单:
1、在http://java.sun.com/jdk/处下载JDK(Java 2 SDK、Standard Edition、v 1.2.2)。
2、http://java.sun.com/products/jsp/处下载JSWDK(JavaServer Web Development Kit 1.0.1)。Linux用户可以http://jakarta.apache.org/处下载Tomcat 3.0。

3、安装

以Windows NT环境为例,JDK的安装是首先运行下载得到的jdk1_2_2-win.exe,然后修改系统环境参数,在PATH参数中加入[x:]jdk1.2.2in以及增加新的环境参数 CLASSPATH=[x:]jdk1.2.2lib ools.jar,其中[x:]是安装JDK的硬盘符(c:、d: 等)。 JSWDK的安装仅需将jswdk1_0_1-win.zip带目录释放到硬盘根目录下(c:、d: 等),然后就可以在硬盘上找到jswdk-1.0.1目录。将来如果不想保留JSWDK,删除这个目录就可以了,没有任何系统文件和注册表遗留问题。更详细的安装过程以及Solaris/Unix和Linux下JDK、Tomcat的安装可以参考下载得到的文件包中的安装说明。

4、启动

以Windows NT环境为例,在jswdk-1.0.1目录下执行startserver.bat,就可启动JSWDK中一个支持JSP网页技术的Web服务器。为了不与现有的Web服务器(例如IIS、PWS等)冲突,JSWDK的Web服务器使用了8080端口。在浏览器的地址栏中键http://localhost:8080或http://127.0.0.1:8080后,如果能看到 JSWDK 的欢迎页就说明JSP实验环境已经建成,可进入下一步实验。要关闭Web服务器则运行stopserver.bat。
Tags:
点击在新窗口中浏览此图片

Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的运行环境(servlet容器)。Tomcat的源代码被提供给Jakarta项目,在Open Source的模型下进行进一步的开发。Tomcat是一个Server容器,同样的,EJB运行在EJB的容器中。

对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上tomcat部分是apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与apache独立的进程单独运行的。

这里的诀窍是,当配置正确时,Apache为.html页面服务,而tomcat实际上运行.jsp页面和servlet。

如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求。我们需要一个交互式的Web,于是便诞生了各种Web语言。如Asp,Jsp,Php等。当然,这些语言与传统的语言有着密切的联系,如Php基于C和C++语言,Jsp基于Java语言。本文所要介绍的Tomcat即是一个Jsp和Servlet的运行平台。

一、什么是Jsp和Servlet

Jsp(JavaServer Page)是在普通Html中嵌入了Java代码的一个脚本,在这一点上,它与其它的脚本语言(如Php)一样,但它与其它语言不同的是:其它脚本语言由服务器直接解释这个脚本,而Jsp则由Jsp容器(如Tomcat)首先将其转化为Servlet,然后再调用Javac将Servlet编译为Class文件。最终,服务器解释的是Class文件。那么什么是Servlet呢?Servlet其实是一个特殊的Java类,Servlet类一般从HttpServlet类继承而来,在这个类中至少要实现doGet或者doPost函数,在这两个函数中处理来自客户的请求,然后将结果返回。Servlet和Jsp是Sun公司J2EE架构中重要的部分。由于基于Java语言,因此其可以方便的调用功能强大的Java API(如JDBC)。

二、Tomcat概述

Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的java产品,可见其在业界的地位。

Tomcat 最新版本是4.0x。4.0x与3.x的架构不同,而是重新设计的。Tomcat4.0x中采用了新的Servlet容器:Catalina,完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从http://jakarta.apache.org上下载其源代码版或者二进制版。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性。

与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。

在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。

Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。

另外,Tomcat提供Realm支持。Realm类似于Unix里面的group。在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的资源。Tomcat用Realm来对不同的应用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。Tomcat提供三种Realm,1:JDBCRealm,这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证。2:JNDIRealm,用户信息存在基于LDAP的服务器里,通过JNDI获取用户信息。3:MemoryRealm,用户信息存在一个xml文件里面,上面讲的manager应用验证用户时即使用此种Realm。通过Realm我们可以方便地对访问某个应用的客户进行验证。

在Tomcat4中,你还可以利用Servlet2.3提供的事件监听器功能,来对你的应用或者Session实行监听。Tomcat也提供其它的一些特征,如与SSL集成到一块,实现安全传输。还有Tomcat也提供JNDI支持,这与那些J2EE应用服务器提供的是一致的。说到这里我们要介绍一下通常所说的应用服务器(如WebLogic)与Tomcat有何区别。应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,同时也支持Jsp和Servlet。而Tomcat则功能没有那么强大,它不提供EJB等支持。但如果与JBoss(一个开源的应用服务器)集成到一块,则可以实现J2EE的全部功能。既然应用服务器具有Tomcat的功能,那么Tomcat有没有存在的必要呢?事实上,我们的很多中小应用不需要采用EJB等技术,Jsp和Servlet已经足够,这时如果用应用服务器就有些浪费了。而Tomcat短小精悍,配置方便,能满足我们的需求,这种情况下我们自然会选择Tomcat。

基于Tomcat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,你可以用普通的文本编辑器或者IDE,然后将其打包成WAR即可。我们这里要提到另外一个工具Ant,Ant也是Jakarta中的一个子项目,它所实现的功能类似于Unix中的make。你需要写一个build.xml文件,然后运行Ant就可以完成xml文件中定义的工作,这个工具对于一个大的应用来说非常好,我们只需在xml中写很少的东西就可以将其编译并打包成WAR。事实上,在很多应用服务器的发布中都包含了Ant。另外,在Jsp1.2中,可以利用标签库实现Java代码与Html文件的分离,使Jsp的维护更方便。

Tomcat也可以与其它一些软件集成起来实现更多的功能。如与上面提到的JBoss集成起来开发EJB,与Cocoon(Apache的另外一个项目)集成起来开发基于Xml的应用,与OpenJMS 集成起来开发JMS应用,除了我们提到的这几种,可以与Tomcat集成的软件还有很多。

三、展望

Tomcat确实是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性。如今,开源软件越来越收到人们的重视,Linux就是一个成功的典型。人们不再限于只使用软件,而且已经关心起软件的具体实现。我们有理由相信Tomcat会走得更远。
Tags:
分页: 2/3 第一页 上页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐