导航:首页 > 编程语言 > javaphprpc

javaphprpc

发布时间:2023-05-21 21:27:32

① golang 多人开发怎么保证源码安全

随着php有着越来越深入的了解,以及遇到越来越多的不同业务时,使用PHP总会让我有一种莫名的无力感。当然,并不是我一个人在使用PHP的时候遇到了问题。事实上,每个略微有一些经验,接触过一些需求的人都会有同样的困惑。各种配合LAMP(或者LNMP?)架构的后端技术也因此被发明或被发现,进而整合到PHP的开发的技术体系中。从简单的Memcached作为数据中转,cron后端定时处理;到Gearman、RabbitMQ这些队列神器;最近Laruence甚至封装了利用libcurl的异步特性实现并发RPC调用的yar扩展。几乎整个社区都在寻找PHP的摩西之路。好吧,说了一大堆,回归主题。之前我写了一篇英文练笔《》,获得不少国际友人的关注。排除拼写和语法被他们诟病外,主要是有许多朋友觉得我没把事情说清楚。所以这里我用母语重新聊聊这个事情,只是这些国际友人什么时候能学会阅读中文呢?;)Go或者Golang,是由Google支持的快速、一致、稳定的,有活跃的社区支持的开源编程语言。越来越多的应用选择使用Golang进行构建。虽然RobPike说“…我们希望C++程序员来了解Go并作为一个可选的语言…”,不过我真得认为:PHPer应当学习Golang!接下来我们就来谈谈原因。容易学习PHP相当容易学习。Golang也是!在这点上,一群大老外对我的观点进行了猛烈的抨击。他们认为我羞辱了PHPer,说得好像只有简单的东西PHPer才能学会一样。但是,这难道不是事实吗?或者换个说法:像我一样的喜欢PHP的人,或多或少都会更喜欢简单的东西。PHP的语法接近C族编程语言(C/C++/java等等)。如果有这些语言的经验,在第一次遇到PHP的时候立刻就能开始上手编写代码。在我看来,编写PHP代码或许更加考验程序员的记忆力,而不是智力(当你面对各种不同风格的函数定义、各种扩展的特殊约定时,你一定会相当认同我的观点)。Golang同样是一个C族编程语言。呃,或者有一些不同吧。例如关键字“for”,功能上和PHP的接近,但是没有括号。条件语句“if”同样无需括号。可以阅读EffectiveGo了解内容。Golang只有3025个关键字和47个操作符号、分隔符号或其他特殊标记。记住这些标记确实不需要什么特别的努力。精巧的类型系统相当容易使用。实用的,具有方法的结构体类型代替了笨重的对象系统。接口的设计是Golang中我最喜欢的部分。当完成了《Go指南》的学习之后,利用PHP积累的经验,立刻就可以开始使用Golang处理一些简单的任务。容易使用PHP脚本是由SAPI组件进行解析执行的,如Web服务器模块、PHP-FPM或者CLI。部署PHP所需要的全部东西就是一个SAPI环境。配置这个环境对于新手来说可能是学习PHP过程中最为困难的部分。所有的Golang代码会编译和链接为本地码。所以除了编译环境,执行时无需再为其进行任何特别的部署。对比PHP环境的配置,这要简单很多。你真得认为配置PHP环境很复杂吗?我不觉得,真的!而配置Golang编译环境比那还要简单点。我确信已经有大量的Golang相关的书籍、文章介绍过如何进行编译环境的配置了。为了更加清晰,我这里梳理一下思路。有三个步骤需要处理:下载Golang的源代码;根据《[翻译]Go环境设置》的提示设置环境变量;运行源代码src目录中的all.bash。或者一步到位:使用二进制包进行安装。然后就会得到一个叫做“go”的工具集合。使用“go”工具和使用PHP的CLI工具一样简单。《[翻译]go工具》对此进行了详细的解释。PHP的迷思如果一个编程语言容易学习和使用,我们是不是就应当学习它呢?有许多容易学习和使用的编程语言。难道要把它们都学一遍?答案是显然的:NO!但是呢?只是因为它很酷!是的,我在开玩笑,但是这是真的。无论如何先从PHP自身谈起吧。PHP“原本是为了开发动态的Web页面而设计的服务器端通用语言(Wikipedia)”。PHP一个重要的特性就是可以嵌入到HMTL中。代码编写在“”标签内;HTML写在标签外。它有一个强大的扩展系统。扩展使用C调用ZendAPI编写。数据的处理实际上要利用这些扩展完成。在我看来,PHP是世界上最好的模板语言。但是当积累了一些PHP的经验,并且开始面对一些更加复杂的Web应用时,你一定会对PHP产生一种无力的感觉。它没有内建的并行机制,没有线程、进程(你真得认为那个简陋的进程控制可以不加改造的用在高并发的生产环境?),或者其他某“程”。一个慢数据源可以阻塞整个页面的处理。消息队列、缓存、代理……系统开始不仅仅是PHP这么单纯,还包括了许多服务和系统组件。这时,PHP只处理很少的业务逻辑,成为真正的模板语言了。PHPer们总是在寻找解决这一问题的法,如“PHPmultithread”或者PHPRPC并发框架。我很难说哪种会更好一些。不过我肯定你会需要选择一些编程语言用于后端工作的开发。就我自己的经验,我尝试过C(一直在和malloc/free进行搏斗)/Java(陷入到了jar地狱中)/python(从来没能做到Pythonic不说,还总是在错误的类型中打转)……如果想要获得性能,就得同内存管理进行搏斗;如果用GC,就得部署和调优VM;当获得便利性的时候,同时也是走在刀尖上,一个小错误就引起巨大的灾难……每个都有优势,同样每个都有问题。好吧!现在回到Golang!Golang有GC,无需关心内存管理(或者可以用较少的精力去关注它)。代码被编译为本地码,因此“cp”和“mv”就是部署Golang编写的应用所需要的全部工具。噢,我刚才已经说过了,Golang是一个具有静态类型系统的编译语言。所以你没有机会弄乱变量的类型。当然,PHPer应该学习Golang的一个重要原因是“转到Go是因为他们并未放弃太多的表达能力,但是获得了性能,并且与并发共舞(RobPike)”。《WhyNotGo?(英文)》对此进行了深入的分析。我可以分享一些我的经验:有一个Gearman的worker用于处理后端数据。PHP通过其API连接到Gearman的JobServer向worker发起请求。最初worker是使用python编写的(还有更加原始的版本,PHP的,但是你能想象它工作起来……唉,不说了……)。这个版本有许多的问题(是我们自己的问题,不关Python的事),但是至少它能工作。后来用Golang重写了这个worker。为此我开发了Golang的GearmanAPI,并使用ZendAPI编写了一个在Golang中执行PHP脚本的包。然后将它们放在一起:一个可以执行PHP的Gearmanworker。它已经工作了一段时间了,看起来还不错!哦,受到Yar的启发,这里还有一个Golang编写的RPC合并器,用来合并PHP脚本中的RPC调用。现在还是个玩具,不过或许日后能用得着。这其实是将Golang的channel当作消息队列来用。我在《Golang:有趣的channel应用》中对此有一些说明。世界真美好啊。谢谢Golang!无论如何,大多数PHPer在进行后端开发的时候都会需要学习一些其他语言。如果你正在寻找,或者已经尝试了一些其他语言。为什么不来试试Golang?它真得可以让你的生活更加轻松和快乐。让你可以有的时间陪伴你的家人和朋友,吃你爱吃的东西,去你想去的地方。貌似我还是没说清楚啊?好吧,没关系,在下个月的中国软件开发者大会上再跟大家就这个话题做一个探讨吧。

② web server 开源 哪些

Axis

Apache Axis 是Apache WebService项目中的子项目,其最初起源于IBM的"SOAP4J",应该属于最早的一批用于构造基于SOAP应用的Framework。 目前Apache Axis已经发展到了第三代,其核心是一个SOAP处理器,用于开发包括客户端,服务器端,SOAP Gateway等各种应指冲伏用。事实上Apache Axis在了1.0版后,其发行版本还包括了完整的J2EE服务器插件, WSDL支持和生成,TCP/IP监视器等组件,从这个意义上来说Apahce Axis已不仅仅是个SOAP框架了,它包含了除了UDDI外对整个Web Service协议栈(Protocol Stack)的支持。
更多Axis信息

UDDI4J

uddi4j是一个JAVA类库,提供了一个API来与web服务UDDI注册中心相结合。UDDI4J得到了HP, IBM和SAP的支持。UDDI是统一描述、发现和集成(Universal Description, Discovery, and Integration的缩写。
更多UDDI4J信息

WSIL4J

WSIL4J是Java类库,简化了对Web服务注册中心、描述和检查文档的处理。
更多WSIL4J信息

WSIF

WSIF是apache的web服务项目的一个子项目,目前版本是2.0,实际上是WSIF被提交给ASF后的第一次发布版本,命名为2.0是和以前非Apache发布的1.x版本相区别。 WSIF提供了一组简单的API来调用web服务而不需要了解该web服务的实现方式,更深入的说,WSIF是一组基于WSDL文件的API,他调用可以用WSDL文件描述的任何服务。 WSIF中提供的API允许编程者通过WSDL描述内容和web服务调用的抽象层打交道,而不是直接使用SOAP来调用web服务。编程者使用WSIF后就可以使用统一的编程模型来调用web服务而不需要了解该web服务是如何实现和被访问的。 WSIF 2.0中里面提供了下列内容的支持: SOAP(可以使用apache SOAP或者axis实现)、本地java类、EJBs、JMS services和其它可以通过java connector访问的应用。WSIF规定了特别的WSDL扩展使这些资源可以被当成WSDL描述的服务访问。 WSIF允许通过运行时分析web服务描述的元数据来实现无stub或者动态的调用一个web服务。他允许在运行时将更新的绑定实现插入到WSIF中,他允许调用的服务在运行时之前选择自己的绑定实现。 WSIF具有以下几个主要特征: 1,以WSDL为中心和服务的抽象定义(portType)打交道,隐藏实现细节(协议绑定和服务位置) 2,可插入式允许增加心得提供者使应用可以通过修改WSDL就可以应用新的web服务而不需要修改应用的代码 3,可扩展很容易使用新的WSDL扩展进行试验唯携 4,灵活性很容易定制很容易和JNDI结合使用是服务被提供的位置更加透明
更多WSIF信息

Caucho Burlap

Burlap是一个轻量级的XML RPC协议.利用Burlap Web服务协议使用Web服务不需判凳要大型的框架也不用学习其它协议。
更多Caucho Burlap信息

Xfire

XFire是与Axis 2并列的新一代WebService框架。具有如下:
支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等 ;

使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现;

Easily Create Services from POJOs;

易于与Spring框架结合;

灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor
更多Xfire信息

SOAP UDDI

SOAP UDDI是一个符合UDDI 2.0的Web服务UDDI注册中心(registry).利用这个UDDI注册中心,Web服务开发者可以发布和测试他们的程序在一个安全的,不公开的环境中.
更多SOAP UDDI信息

Caucho Hessian

Hessian也是一个轻量级的,自定义描述的二进制RPC协议.因为它是一个二进制协议,所以它很适合于发送二进制数据而需要使用其它附件来扩展这个协议.
更多Caucho Hessian信息

Ivory

Ivory为Java classes,Avalon服务,和Axis这三者之间相互结合提供了一种简单的方式.它允许开发soap服务不需要进行Axis通常所要求的WSDD配置,同样也可以让Avalon服务使用标准WSDD配置变得简单.
更多Ivory信息

Crispy

利用Crispy提供的一个统一接口,你可以调用RMI,WebService,REST,XML-RPC,EJB,Burlap,Hessian等其它服务.你不需要知道这些服务是怎样工作的,要调用的服务类型可在properties文件中定义.远程调用就像简单Java对象调用一样,你可以把Crispy集成到一个SOA(Service Oriented Architecture)或RCP(Rich Client Platform)中.
更多Crispy信息

XINS

XINS是一项规范技术用于定义,创建和调用远程APIs。当API规范在XML文档中定义好之后,XINS将会把它们转换成包括客户端与服务端的HTML文档与Java代码.XINS将与复杂的SOAP技术竞争,因为它被设计得具有简单性,可扩缩性与可测试性。简要地说就是:SOA+Java+XML+ 代码生成-复杂性 => XINS。

更多XINS信息

Restlet

Restlet这个开源项目为那些要采用REST结构体系(Web Service标准:基于直接在HTTP上交换原始XML文档的思想)来构建应用程序的Java开发者提供了一个具体的解决方案。它由两部分组成:
1.Restlet API:
支持所有REST概念(资源,表示法,数据,连接器,组件等)。
适合于client与server REST应用程序。
用先进模式匹配的特性来支持URIs as UI的思想。
用Chainlets filter来实现像日记,认证与压缩等功能。
支持阻塞与非阻塞NIO模式。
2.Noelios Restlet Engine (NRE):
用Noelios Consulting提供的核心包来实现Restlet API。
利用HTTP (通过Jetty连接器)来提供服务器连接器。
利用HTTP, JDBC,SMTP (通过JavaMail)来提供客户端连接器。
支持logging (LogChainlet), authentication (GuardChainlet)与cool URIs重写(RedirectRestlet)。
采用FreeMarker模板来展示JSP页面等其它功能。
更多Restlet信息

Gomba

Gomba是一组Java servlets集合,它能够帮助开发者快速构建RESTful Web services。Gomba在内部使用JDBC API同时是关系型数据库与Web之间的一个接口。Gomba可作为一个动态Web站点的中间层甚至可以作为一个数据库的报表工具。它的特点:使用http与XML来读取与写入数据到一个RDBMS。把SQL结果集表示成XML。使用XSLT来定制XML输出。使用JSTL+EL来构建动态SQL。支持BLOB与CLOB SQL数据类型。支持Multipart form请求处理。使用XML responses进RESTful错误处理。
更多Gomba信息

jSoapServer

jSoapServer这个Java类包可以集成到Java应用程序中为外部程序提供一个SOAP接口。jSoapServer是一个独立的SOAP服务器,因此不需要让Java程序运行在像Tomcat这样的容器中。它具有的特性包括:
*多线程SOAP服务器,
*使用线程池,
*支持对gzip内容进行编码,
*支持对压缩内容进行编码,
*支持持久连接(persistent connections:http keep-alive),
*支持SOAP1.1/1.2,
*支持生成WSDL,
*支持生成servlice列表,
*支持SOAP附件(DIME,MIME)。
更多jSoapServer信息

JBossWS

JBossWS实现了一个新的符合JAX-RPC1.1标准的SOAP stack,可用于替代先前的WS4EE和JBoss.NET。它能够更好的与整个JBoss架构体系相集成。
更多JBossWS信息

soapui

soapui提供一个工具通过soap/http来检查,调用,实现web service和web service的功能/负载/符合性测试。该工具既可作为一个桌面应用软件使用,也可利用插件集成到Eclipse,maven2.X,netbeans和intellij中使用。

更多soapui信息

kSOAP2

kSOAP2是一个SOAP web service客户端包。主要用于资源受限制的Java环境如Applets或J2ME应用程序(CLDC/ CDC/MIDP)。
更多kSOAP2信息

Apache CXF

Apache CXF一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面 向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息 格式(或binding)和网络协议(transports)包括SOAP、XML(通过HTTP或JMS)进行访问。CXF同样支持多种model 如:JAX-WS,JBI,SCA和CORBA service。CXF设计成可灵活部署到各种容器中包括Spring-based,JBI,SCA, Servlet和J2EE容器。
更多Apache CXF信息

Jersey

Jersey是JAX-RS(JSR311)开源参考实现用于构建RESTful Web service。此外Jersey还提供一些额外的API和扩展机制,所以开发人员能够按照自己的需要对Jersey进行扩展。
更多Jersey信息

RESTClient

RESTClient是一个用于测试RESTful Web services的Java客户端。

更多RESTClient信息

OpenUDDI

OpenUDDI提供一个高性能,易于使用,遵循UDDI v3规范的服务器与客户端类库。服务器使用Hibernate作为存储引擎,因此支持大部分SQL数据库,同时支持还LDAP作为数据存储。
更多OpenUDDI信息

jrest4guice

一个轻量级的基于Google Guice的Restful服务框架,支持JPA、JAAS、分布式资源对象,对OSGI的支持也在计划中。
基于Google guice
零配置,服务的自动扫描注册
非侵入式,用户不需要实现特定的接口来实现Restful服务
支持Post. Get. Put. Delete操作
灵活的注入(支持上下文环境request/response/session以及参数的自动注入)
根据客户端要求返回不同类型的数据(xml/json/html)
支持Velocity、Freemarker和Spry模板引擎(当返回类型是text/html时才有效,参见@ViewTemplate)
支持JPA,通过增强的BaseEntityManager实现实体的CRUD
支持事务,通过@Transactional注解声明事务的类型
支持JAAS,通过@RolesAllowed注解声明操作所需要的角色
支持分布式资源对象,实现业务逻辑的分布式部署
更多jrest4guice信息

kSOAP

kSOAP是一个SOAP web service客户端类库,适用于那些资源受限制的Java环境比如:Applets,J2ME应用程序(CLDC/CDC/MIDP)。
更多kSOAP信息

Metro

Metro是一个高性能,可扩展,易于使用的web service stack/framework。它提供一个一站式解决方案来满足你所有web service需求。从最简单的hello world web service到可靠,安全和涉及与.NET服务交互的事务处理web service。
更多Metro信息

sqlREST

sqlREST能够将关系型数据库发布为REST风格的Web Service。为任何能够通过JDBC访问的数据库提供Web Service访问接口,使用HTTP方法GET、POST、PUT和DELETE就能够查询,创建,修改和删除数据库中的数据记录。
更多sqlREST信息

GWT-REST

GWT-REST是一个用于GWT应用程序的异步RESTful客户端实现。GWT-REST可以与GWT-RPC一起使用或者代替它。

更多GWT-REST信息

Redstone XML-RPC Library

Redstone是XML-RPC规范的一个Java实现,支持任意Java对象的动态代理与序化(Serialization)。 Redstone提供一个XML-RPC客户端用于访问XML-RPC服务,和一个XML-RPC servlet用于在web服务器中将普通的Java对象发布作为XML-RPC服务。Redstone还提供一组序化器(serializer)用于生成可以代替XML-RPC信息的JSON信息,以便从JavaScript也可以访问XML-RPC服务。
更多Redstone XML-RPC Library信息

PHPRPC

PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。目前已有以下几种语言的实现:ASP、ActionScript、Delphi/Kylix、Java、JavaScript、.NET:(支持 .NET 框架下所有的语言(如 C#、VB.NET、VC.NET、Delphi.NET 等)、PHP、Python、Ruby等。

更多PHPRPC信息

JetS3t

JetS3t是一个用于与Amazon S3和CloudFront交互的Java开源工具箱。它为开发人员提供强大、易于使用的API和工具来与S3交互,管理数据存储。JetS3t主要由5个应用程序组成:
Cockpit:一个GUI工具用于传输文件,查看和管理 Amazon S3账号中的内容。
Synchronize:用于同步用户计算机上的目录和Amazon S3帐户的命令行工具,最适合于在不同的计算机之间同步文件与备份。
Gatekeeper:一个Servlet可以作为访问Amazon S3帐户的中介,其它没有S3帐户的客户端可以利用这个Servlet实现上传,下传,删除等操作。
CockpitLite:Cockpit的简约版本,它通过中介Gatekeeper服务实现所有操作。
Uploader:一个GUI应用程序提一个通过Gatekeeper服务实现上传文件至S3帐户中的简单向导。
更多JetS3t信息

jUDDI

jUDDI是Web Services UDDI(Universal Description、Discovery、Integration)规范的一个Java实现。可以部署在支持Servlet2.3的任何Java应用服务器上包括:Jakarta Tomcat、JOnAS、WebSphere、WebLogic、Borland Enterprise Server、JRun等。可以与支持ANSI标准SQL的关系型数据库(MySQL、DB2、Sybase、JDataStore、HSQLDB等)相结合使用。 易于与现有的验证系统相集成。

③ 基于ICE的PHP与java间的通信

PHP与JAVA融合的开发环境

一.系统环境

1.初始安装

防火墙开放接口:21,22,80,2401,8009,10000,eth0
Redhat linux 9.0
Development Tools

Network Servers
VSFtp
CVS-1.11.2-10
MySQL 3.23.54

2.包安装

JDK 1.5
下载地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm

Tomcat 5.0.19
下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz

3.脚本安装

Webmin 1.110
下载地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz

ZendOptimizer 2.5.1
下载地址:http://www.netshine.com.cn/linux/ZendOptimizer-2.5.1-Linux_glibc21-i386.tar.gz

4.手工编译

Apache 2.0.49
下载地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz

PHP 4.3.5
下载地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz
JK 2-2.0.4
下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-connectors-jk2-src-current.tar.gz

5.客户机环境

Windows XP Professional
Absolute Telnet 3.0
Zend Encoder
Macromedia Dreamweaver MX 2004
Borland JBuilder 9 Enterprise
WinCVS 1.3
下载地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip

二.系统安装

启动Linux安装光盘,安装基本系统:FTP、开发工具和MySQL3.23.54。如果你是手工编译安装MySQL,要记得以后在编译PHP等程序时要指明MySQL的具体路径,否则会因找不到路径而导致编译出错。

三.安装webmin1.110

用Webmin来配置系统,傻瓜化,可以节省不少力气,所以一般我都先安装它。安装过程很简单,执行setup.sh脚本后照提示一步一步来就可以了。

# cd webmin*
# ./setup.sh

四.安装JDK1.5

1.编辑如下三个文件,没有指明全路径的放在你自己的home目录就可以。

/etc/profile
JAVA_HOME=/usr/java/j2sdk1.4.2_04
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CVSROOT=/usr/local/cvsroot
PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH CVSROOT PATH

/etc/ld.so.conf
/usr/java/j2sdk1.4.2_04/jre/lib/i386
/usr/java/j2sdk1.4.2_04/jre/lib/i386/server

HelloWorld.java
class HelloWorld
{
public static void main(String[] args)
{
//本文件测试Java环境是否安装成功。
System.out.println("Hello World!");
}
}

2.执行以下命令:

# rpm -ivh j2sdk*.rpm //安装JDK包。
# source /etc/profile //重载profile环境。
# ldconfig //创建动态链接库缓存文件。
# javac -d . HelloWorld.java //编译测试文件。
# java HelloWorld //运行程序测试安装是否成功。

五.安装Apache

# tar xvzf httpd* //解压源码包。
# cd httpd* //进入安装目录。
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite
# make;make install //编译并安装。

说明:

--enable-so选项:让Apache可以支持DSO模式,注意,我们在这里采用的是Apache2.0的语法。如果你的Apache是1.3版本,应改为--enable-mole=so。

--enable-mods-shared=most选项:告诉编译器将所有标准模块都编译为DSO模块。你要是用的是Apache1.3,改为--enable-shared=max就可以。

--enable-rewrite选项:支持地址重写功能,使用1.3版本的朋友请将它改为--enable-mole=rewrite。

六.编译安装PHP

1.执行命令

#tar xvzf php* //解压源码包
#cd php* //进入PHP安装命令
#./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local
/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04
#make;make install //编译并安装
#cp php.ini-dist /usr/local/php/lib/php.ini //复制php配置文件
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目录
#ln -s java.so libphp_java.so //建立连接,忘记了会出错哦
#cd Zend* //进入ZendOptimizer目录
#./install //安装PHP加速器

说明:

--with-apxs2=/usr/local/apache/bin/apxs是Apache2的语法,1.3版本的用户请使用--with-apxs=/usr/local/apache/bin/apxs。

2.编辑下面三个文件

/usr/local/apache/conf/httpd.conf
LoadMole php4_mole moles/libphp4.so

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

AddDefaultCharset gb2312

/usr/local/apache/htdocs/test.php
<?php
//本程序测试PHP的JAVA环境是否可用,
代码是从http://www.php.net/manual/en/ref.java.php摘录下来的。

// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');

// demonstrate property access
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . ' <br />';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter->format(new Java('java.util.Date'));
?>

/usr/local/php/lib/php.ini
register_globals=On
[Java]
java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass
java.home=/usr/java/j2sdk1.4.2_04
java.library=/usr/java/j2sdk1.4.2_04/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=libphp_java.so

注意:

(1).如果你刚刚从以前老版本的PHP转换到新版本,可能会发现你的PHP程序很多都不能用了。别紧张!把register_globals打开就一切正常啦!这是因为老版本的PHP,它的register_globals默认是开着的,而新版本,却把它关了的缘故。

(2)./home/jim/myclass是我存放JAVA组件的路径,你可以根据实际情况修改,但是为了安全起见,可不要放在web目录下哦。

④ 请教一下java和php协同开发的方法

引用
因为在做垂直搜索工作中,使用的是java编写的一个搜索类库。做垂直搜索,很多实用要使用到配置。当搜索的信息量大时,网站的更新。搜索程序的配置维护是一个不可忽视的问题。所以用了php做网页,提供配置界面,这样就可以不用直接修改配置文件或是配置数据库表。当把配置信息配置好了,我们需要检测配置是否正确,因为使用的是java程序,所以检测配置的正确与否使用的也是java程序来检测。这里就存在一个问题,就是需要把php页面上的信息传入到java程序中去检测。这个时候就需要php和java通信了。下面我就来介绍下怎么使php跟java通信(当然,你也可以使用类似webservice等技术)也就是php中调用java程序。 php要调用java程序:需要以下准备,php程序,java程序,还有就是shell程序或是bat程序。下面分别介绍下在linux服务器下php调用java程序和在windows服务器下调用java程序。前提是php,apache,jdk的环境都已经配置好。
一 在linux下php调用java程序是通过shell文件。分别是以下三个文件: test_shell.php test_shell.java test_shell.sh 他们的源代码如下:

1.test_shell.java程序代码

public class test_shell {

public static void main(String[] args) {

System.out.println("你输入的参数是:"+args[0]+"t"+args[1]);

}

}

2.test_shell.php程序代码

<?php

/*

* 该函数是用来执行shell命令的,其实还可以使用:exec(),system(),
* popen()和pclose(),passthru() 函数。最长用的是前面两个和例中使
* 用的shell_exec()。

*/

$args1="我喜欢你";

$args2="我很爱你";

// 注意空格

$r=shell_exec("./test_shell.sh $args1 $args2");

echo $r;

?>

3.test_shell.sh程序代码是

#!/bin/sh

JAVA_HOME=/usr/local/jdk

CLASSPATH=.:/usr/local/jdk/jre/lib/rt.jar:/usr/local/apache/htdocs/test_shell/test_shell.class

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME CLASSPATH PATH

cd /usr/local/apache/htdocs/test_shell

java test_shell

#shell代码结束

以下是三个程序的存放路径和运行次序。
1.三个文件都必须在同一目录下,比如在/usr/local/apache/htdocs/test_shell/下,不然php很难调到java程序。

2.把test_shell.java程序编译成test_shell.class,然后把test_shell.class文件存放到CLASSPATH中。如果系统配置了那些环境变量,这里在配置一次是没有坏处的,也不会影响配置好的系统环境变量。这里设置的好处是当没有配置jdk环境配置,只有jre时,则需把jre放到/usr/local/jdk下就以。

二、下面先介绍在windows服务器下,php调用java程序是通过bat文件来的。分别是以下三个文件: test_bat.php test_bat.java test_bat.sh 他们的源代码如下:

1.java程序

public class test_bat {

public static void main(String[] args) {

System.out.println("你输入的参数是:"+args[0]+"t"+args[1]);

}

}

2.test_bat.php程序代码

<?php

/*

* 该函数是用来执行shell命令的,其实还可以使用:exec(),system(),
* popen()和pclose(),passthru() 函数。最长用的是前面两个和例中使
* 用的shell_exec()。

*/

$args1="我喜欢你";

$args2="我很爱你";

// 注意空格

$r=shell_exec("./test_shell.sh $args1 $args2");

echo $r;

?>

3.test_bat.sh程序代码是

@echo off
set path=%path%;%cd%jrebin
set CLASSPATH=.;%cd%jrelibrt.jar;%cd%test_bat.class
java test_bat %1 %2

#bat代码结束

1.三个文件都必须放在同一目录下,比如在/usr/local/apache/htdocs/test_bat/下,不然php很难调到java程序。

2.把test_bat.java程序编译成test_bat.class,然后把test_bat.class文件存放到CLASSPATH中。如果系统配置了那些环境变量,这里在配置是没有坏处的,也不会影响配置好的系统环境变量。这里设置的好处是当没有配置jdk环境配置,只有jre时,则需把jre放到跟跟test_bat.java同一目录下就行了。

三、上面两个例子中,test_shell.sh用的绝对路径,test_bat.bat是用的相对路径。不管是绝对还是相对,只要路径对了就行了。

⑤ 求教json的有关问题,google库gson的bug有关问题

求教json的有关问题,google库gson的bug有关问题
复杂 json 数据类型还是用 Hprose 传递比较好,gson 有 bug

Hprose 是在PHPRPC的烂或基础上重新设计的全新的跨平台、跨语言的高性能远程对象服务扩展,具有更快、更强、更节省带宽、更安全、更易学易用等特
性。Hprose与PHPRPC相比,通讯效率信历正更高,带宽占用更低,开发效率更快、更灵活。目前支持的编程语言包括Java、C#(以及其它.net语
言,例如VB.net)、Delphi、Javascript、ActionScript、ASP、PHP、滑悔Ruby、Python等。

⑥ 为什么大型网站前端使用 PHP 后台逻辑用 Java

最近纠结了一下,如果开发一个大型的网站,我到底应该使用php还是jsp,后台到底使用php还是用java,我的选择要么是php要么是java,因为我喜欢linux、unix,当然window平台也必须支持,以便哦的妹纸可以查看。这就要求用一些跨平台相当好的软件+工具+语言,所以选择只能是这么几个。最后我的决定是php+java,一个前台一个后台,理由如下: php和java在开源社区的活跃度严重超过了其他的语言,使用人数也都是相当之多;活跃的开发工程师们能够给我帮助,且这俩都能很好的跨平台,不用花费大量的人力物力去维护 我也做过一个物联网的网关网站,比较复杂,当时采用的是jsp+java,复杂程度可想而知,单单说开发过程,网站部分繁琐,每次想查看结果运行网站的时候还需要重新打包部署一下,严重影响了哦的开发效率,每天的时间都是在等待(因为网站比较复杂,打包部署需要浪费一些时间)。相对来说呢,php就没有了,php灵活,好学,上手快,容易闷态慎修改,容易发布,关键是热部署,这个真让哦眼睛大亮。当然看待任何事物都需要两种眼光,php也会有缺点,比如没有太好的开发IDE,所以拼写错误很正常,且php的sql注入危蚂敬险较大点,执行效率不高,安全性不如java。还有一些理由,来自知乎的米米们给的建议: Java的优点则是稳定可靠、运行效率高(尤其是JIT的出现之后差距更大了)、不容易犯错(强类型、预编译、必须拦截异常等等),缺点是开发和发布的效率相对较低。尽管优秀的工程师能在一定程度上改变以上的问题,但通常而言,哪能到处都是高手多如狗的梦之队? 从MVC的层次结构上说,在一般网站项目的开发周期中,需求变更最频繁、调整最多的是View,其次是Controller,最后是Model。这非常好理解,没事干谁天天改数据结构?每次版本升级控制结构都要改的啦,或多或少而已。再次是两者之间的通信,目前RPC技术已经足够成熟,无论是Web Service/Hessian/RESTful API都能够让开发人员专注在功能开发上,而不需要过多的考虑异构平台的差异和通讯的细节。这也就意味着在大公司里同时应用两种语言的方案并不会引入过多的复杂度和工作量。当然,文档量的下限倒是因此被拔高了不少,但事实上大部分团队对此其实都是喜闻乐见的:别每天说文档重要但没空了,你不写其他同事怎么配合? 靠近用户的前端,使用PHP能够更快的完成前端频繁而琐碎的更新,自如的应对各种需求的变化。页面的结构调整、用户输入内容的基本验证、仅只和用户交互有关的简单逻辑等都很适合使用PHP来开发,甚至可以通过类似Smarty等模板技术将其页面的变动迁移到前端团队。而基本的业务逻辑和数据的更新采用Java开发,可以有效的提高复用度、提升性能和吞吐能力、规避安全问题等。而开发效率稍有降低换来的是可维护性的提升,发布速度慢就更不是问题了,因为通常对于基础业务逻辑的调整往往都是整体修改,并层层测试确认才能发布的。 所以,大型网站前端采用PHP后端采用Java,既好招人又好维护、系统稳定还性能高、连安全性都大大增加。代码复用、文档完备度居然也都改善了。让你在以上这些好处触手可及时,对架构师知识谱系在广度上要求更高一些这事根本就不是个问题。
单一方案其实一样可以做良好的隔离,PHP同样可以提供Service,而性能问题其实很多时候是算法和架构的问题而不是语言差异的问题。如Velocity或JSTL等也是很优秀的隔离方案。
但这些方案在高压力下会暴露出很多问题而体现双语言的优势,这些在上面其实都提到,详细说明一些很难得到改变的点:
1. PHP由于其动态脚本语言的特性,包括类、函数、常量在内都需要在每次请求周期中重复执行后才能建立运行环境;为了保证解析速度而牺牲编译质量;应用了FastCGI但仅仅只是复用进程处理请求减少fork成本而不是像其他语言,初始化完毕后通过FastCGI的接口获得数据并以对应接口返回数据等几个原因,基本上已经不可能在性能上追回当初更烂现在开着JIT牌跑车的Java了。
2. 在PHP里是如此的容易犯错而难以发现,即使你用实质上出自官方的闭逗Zend Studio,也无法改变一个事实:要保证你的程序高质量无大错,得要有充足的经验、足够的严谨、以及——负责任的QA。淘宝的黄裳就曾经拿IDE这事开过玩笑。而玩笑背后的那个原因“缺乏中间件”最近几年有不少的改善,主要是不少中间件的支持变得更广泛了从而让PHP得益,但发展的根源其实还是在C和Java社区。性能和易犯错则是语言特性造成的技术难点,也是用来换取灵活、快捷的必要代价,很难去指望有根本的改善。
3. Java的世界里也有JSTL、Velocity和Freemaker等,但和PHP灵活而强大的动态能力、丰富的函数和类库、轻松的学习成本、多到令人发指的文档相比,简直就是渣,就是渣啊!JSTL改完了要重启Context啊有木有?Velocity不关缓存也要重启啊有木有?Velocity开缓存性能低下啊有木有?即使这些都不管,调整下某个数据校验规则要改Action也要重启有木有?
实际工作中性能问题可以通过良好的架构解决,容易犯错的问题可以通过框架和规范以及全面的测试来解决,中间件选择少些但其实该有的都有了,Java的灵活性一样有不少可供考虑的解决方案哪怕是挫得要死的摘掉节点重启,完成后重新上节点的策略。
所以,大家会看到单一语言的技术团队也很多,这个问题的真正考虑还是更多在团队自身的特点、积累等等。用了双语言的,也知道自己为什么要用这些,不用的也清楚自己的路该怎么走。最后的最后说一句:如果你不知道自己为什么要用双语言方案的话,基本上你也就不需要考虑它了

⑦ PHP如何与扫描枪等外设通讯 - PHP进阶讨论

PHP如何与扫描枪等外设通讯? - PHP进阶讨论

亲,这个东西不是这样玩儿的。php做出的程式执行后会输出在浏览器上,然后你用扫描枪扫描的资料会写入到一个Input框里面,然后提交这个表单,php接到请求之后再去进行资料库操作就完事了。
因为扫描枪这种东西属于一种标准输入装置和兄,不需要额外的匹配
例如
<input type=text name=code />,当该元素获得焦点的时候,你可以按键盘输入内容,也可以用扫描枪输入内容。明白?
有用望采纳哦

如何用PHP定时扫描MYSQL的一个表? - PHP进阶讨论

清楚了.基于简单php页面的:方法1扫描的时候发个请求到php页面(麻烦),php页面判断是否时间到了.方法2在客户端浏手棚慧览器使用定时器,请求php页面,php页面判断是否时间到了.基于复杂php页面的:方法1由一个php页面,采用socket等方法,模拟一个客户端,自己呼叫自己,服务器启动时毕答初始化访问一次.基于应用程式的:1多数都有sleep功能,开启应用程式就可以了,包括php.设定为系统开机的时候自动开始.基于java服务器的(别得不懂了)1一个在某一个servlet里启动一个处理执行绪,负责定时处理,在启动引数里设定自动载入这样就可以在服务器每次启动的时候自动处理了.基于服务器的:基本上的解决方案都不是以php为核心的.

PHP如何呼叫JAVA类 - PHP进阶讨论

在php.ini里设定。有java设定的块。下面是我以前的一个配置做为示例,可以参考一下。[ol][*][*][Java][*]java.class.path = /usr/local/lib/php/php_java.jar:/usr/local/apache/htdocs/java[*]java.home = /usr/local/j2sdk_nb/j2sdk1.4.2/jre[*]java.library = /usr/local/j2sdk_nb/j2sdk1.4.2/jre/lib/i386/libjava.so[*]java.library.path = /usr/local/lib/php/extensions/no-debug-non-zts-20020429[*]extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20020429[*]extension = libphp_java.so[*][/ol]Java的两个安装包好象都是预设的安装。PHP要引用的Java Class要存在于java.class.path指定的路径区域中。记得当时试了大半天才大致搞明白,呵呵。关于呼叫直接参考PHP官方文件里的即可。[[i] 本帖最后由 seraph 于 2006-3-27 16:28 编辑 [/i]]

PHP如何开启mb_string? - PHP进阶讨论

mbstring 处理多位元组字符集转换时比较常用
1.执行
yum install php-mbstring
2. 修改php.ini
echo ‘extension=mbstring.so’ >>/etc/php.ini #更具php安装目录而定
3. 重启web service
如果是apache: service d restart

php如何输出$符号? - PHP进阶讨论

原帖由 于 2008-2-17 12:11 发表 [i]弟弟,一般情况下使用单引号,因为这样不用解析,变数将直接被符值.使用双引号的,还有一个解析的过程.因为双引号里边是可以变数的.例子:$a = 'test'$b = "test{$a}"'$c = "test($object->array['a'][0]}" ... 脚仔,用双引号同样可以说到你的效果的,$b = "test".$a;还有一个问题就是你考虑了\n的使用了吗,当然如果不嫌麻烦或字符多的话我也觉得建议使用单引号

如何用php实现webservices - PHP进阶讨论

soap、xml(或普通文字)1.soap自己google或网络相关资料。一大把的或者去看看PHPRPC?2.xmlserver:[php][ol][*]'MyNameSpace');[*]$srv->setClass('User');[*]$srv->handle();[*]?>[/ol]client:[ol][*]':localhost/webservice.php','uri'=>'MyNameSpace'));[*]echo $clt->checkpass('aaaa',�')?'Suessful':'Failed'[*]?>[/ol]

如何遮蔽PHP中的Notice资讯 - PHP进阶讨论

除了修改php.ini之外,可以在程式的前面新增下面的语句达到你的目的:
error_reporting(E_ALL ^ E_NOTICE);

如何让PHP自动执行 - PHP进阶讨论

若有管理许可权一、Window系统下,做计划任务? ? 例如? ???C:\php5\php.exe -f??二、Linux系统下? ? 例如? ???/usr/local/php/bin/php -f? ?若无管理许可权,只有虚拟空间你至少要访问一个URL来启动执行你的任务的指令码,指令码头部加入 ignore_user_abort (true)函式,忽略使用者的中断请求 ,一直回圈执行,例如sleep(60 * 30) 半个小时[]

JavaBridge的效率如何 - PHP进阶讨论

从实际专案中的运用来看,效率还是不理想,如果是大资料的传递还是非常慢的。实践的对策是不要直接用php呼叫lucene建立索引,而是尽量使用异步呼叫方式,通过事件触发回拨,这样可以适当提高执行效率。目前,我已经打算放弃pjb,用ice代替。

如何在php里重启apache - PHP进阶讨论

你这样肯定不行的。 php 作为apache 一个mod. apache都restart了, 结果不一定拿得到 检视原帖>>
求采纳

⑧ java如何延时调用web service

延时调用?是指睡眠一定时间在调用ws还是定时调用ws?
如果单纯的希望运行某方法一定时间后在调用ws可以使用Thread.sleep
如果是轮询,每隔一段时间调用ws可以使用以漏盯桥下几种:
1. spring框架整合的Quartz;
2. 使用ScheledThreadPoolExecutor 调度定时任务返猛;
3. 使用Timer 调则唯度定时任务;
你可以先学习学习timer

⑨ java web项目中 各个系统之间交互的接口如何实现!

在自身项目中 就用Spring来管理.

⑩ 如何选择数据交换协议

数据交换协议数据交换协议的目的是让两个系统进行正确的数据交互。所以几乎各种开发语言都提供了方便使用的数据交换功能。比如说使用JAVA语言的开发的系统使用 MySQL数据库存储数据,就是通过MySQL数据交换协议跟MySQL做数据交换;通过JAVA的RMI可以方便的做跨机器的分布式数据交换,RMI也就是一种数据交换协议。
一般我们在不同的系统、不同的语言之间交换数据的时候,我们会选择一种通用的交换协议或者自己定义一种容易使用的交换协议。 WebService曾经非常流行, 在Web 2.0时代,轻量级的REST协议又开始受到追捧。那么究竟在我们的系统中应该选择什么样的码裂协议呢?
如何选择数据交换协议选择什么样的协议跟我们的应用场景有很大的关系。我们需要考虑我们开发是否方便、接口是否容易配模斗发布、是否需要考虑带宽占用成本、序列化和反序列化的性能、接口培磨协议的扩展性等等。下面我们看下几个比较常用的交换协议实现。
协议实现跨语言性能传输量RPCxml广泛几乎所有低很大N(可实现)json广泛大量一般一般N(可实现)php serializePHPRPC大量一般一般Yhessianhessian大量一般小Ythriftthrift大量高小Yprotobufprotobuf大量高小N(可实现)iceice大量高小YavroApache Avro少量高小Ymessagepackmessagepack
大量高小Y
上面表格列出了一些常用数据交换协议的一些特性的比较。这里并没有比

阅读全文

与javaphprpc相关的资料

热点内容
苹果app网络验证在哪里 浏览:10
博科清空命令 浏览:384
简爱英文pdf 浏览:376
cnc编程有前途吗 浏览:586
联想app怎么联网 浏览:722
linuxftp命令登录 浏览:1000
android获取图片缩略图 浏览:646
神户制钢螺杆压缩机 浏览:29
差分演化算法 浏览:567
中山市加密软件 浏览:446
mc反编译源码 浏览:139
企业商城网站源码 浏览:411
shell脚本编程是什么 浏览:762
单片机led闪烁汇编 浏览:203
点淘app怎么没金蛋了 浏览:878
app拉新哪里找推广码 浏览:935
哪个app生活服务好 浏览:108
mht安卓用什么软件打开 浏览:320
html5即时通讯源码 浏览:144
python编程基础豆瓣 浏览:710