- 浏览: 802205 次
- 性别:
- 来自: 西安
-
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
首先在linux 中安装了 JBOSS-4.2.3,下载地址是:
http://downloads.sourceforge.net/jboss/jboss-4.2.3.GA-jdk6.zip?modtime=1216411914&big_mirror=1
然后给 安装文件的 ***.bin 加上执行权限,最好将文件安装在 /opt 目录下。
问题:安装好jboss后,启动jboss,发现只有使用 http://locahohost:8080 或者http://127.0.0.1:8080才能访问,使用IP地址却无法访问
解决:我本地的环境是 windows (ip:169.254.11.186) 中 安装虚拟机,在虚拟机中安装linux4(ip:169.254.11.175),在linux中安装 JBoss4.2.3 ,为了让 在 windows 系统中可以使用 http://169.254.11.175:8080 访问linux中的 jBoss 需要我们手动修改 配置文件, 讲 ${jboss.bind.address}
改成 0.0.0.0
/opt/jboss-4.2.3.GA/server/default/deploy/jboss-web.deployer/server.xml 片段
<Connector port="8080" address="0.0.0.0" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
问题:在jboss 中 发布了ejb3.0 的helloworld 的jar包,在windows eclipse开发环境中调用 ,总是报错
javax.naming.CommunicationException: Could not obtain connection to any of these urls: jnp://169.254.11.186,1099,然后我在windows环境中 telnet 169.254.11.175 1099 发现是打开端口失败
解决:
1.首先配置两个系统的host文件 ,让两个系统 互相认识对方系统
windows 系统中配置host文件的位置是:C:\WINDOWS\system32\drivers\etc,修改host文件内容为
169.254.11.175 bea 127.0.0.1 localhost
Linux 系统中配置host文件的位置是:/etc 修改host文件内容为
169.254.11.186 Owner 127.0.0.1 localhost.localdomain localhost bea
验证 两边系统host 配置成功的方法是
在windows 的cmd 中 ping linux 的主机名
C:\Documents and Settings\Owner>ping bea Pinging bea [169.254.11.175] with 32 bytes of data: Reply from 169.254.11.175: bytes=32 time<1ms TTL=64 Reply from 169.254.11.175: bytes=32 time<1ms TTL=64 Reply from 169.254.11.175: bytes=32 time<1ms TTL=64 Reply from 169.254.11.175: bytes=32 time<1ms TTL=64 Ping statistics for 169.254.11.175: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\Documents and Settings\Owner>
在linux 的 中 ping windows 的主机名
[root@bea etc]# ping Owner PING Owner (169.254.11.186) 56(84) bytes of data. 64 bytes from Owner (169.254.11.186): icmp_seq=0 ttl=128 time=0.172 ms 64 bytes from Owner (169.254.11.186): icmp_seq=1 ttl=128 time=0.183 ms 64 bytes from Owner (169.254.11.186): icmp_seq=2 ttl=128 time=0.182 ms 64 bytes from Owner (169.254.11.186): icmp_seq=3 ttl=128 time=0.180 ms 64 bytes from Owner (169.254.11.186): icmp_seq=4 ttl=128 time=0.141 ms
两边都成功则host配置成功!
2. 给JBoos4.2.3 增加启动参数 -b ip
./run.sh -b 169.254.11.175
然后在windows中telnet 169.254.11.175 1099 发现连接成功
3.在window 的eclipse的开发环境中 使用下面的方式调用 部署在 linux中 jboss上的ejb 发现成功了
package cn.com.xinli.ejb3.test; import java.util.Hashtable; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import cn.com.xinli.ejb3.HelloWorld; public class EjbClient { public static void main(String[] args) { Hashtable evn = new Hashtable(); evn.put(Context.PROVIDER_URL, "jnp://169.254.11.175:1099"); evn.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); try { InitialContext context=new InitialContext(evn); /** * ejb3比ejb2有可地方比较好,就是在jndi查找的时候不用我们在写ejb-jar.xml * 只要我们按照jndi名字的查找规范就可以找到远程接口了 * */ HelloWorld helloword=(HelloWorld)context.lookup("HelloWorldBean/remote"); /* System.out.println(helloword.sayHello("huxl")); */ System.out.println(helloword.sayHello("huxl")); helloword.setNum(45); System.out.println(helloword.sayHello("huxl")); HelloWorld helloword2=(HelloWorld)context.lookup("HelloWorldBean/remote"); System.out.println(helloword2.sayHello("huxl")); helloword2.setNum(30); System.out.println(helloword2.sayHello("huxl")); System.out.println(helloword.sayHello("huxl")); HelloWorld helloword3=(HelloWorld)context.lookup("HelloWorldBean/remote"); System.out.println(helloword3.sayHello("huxl")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
扩展:
1.使用的jboss4.2或更高版本发生上述情况,4.2以下版本没有这个问题(已经验证jboss4.0 是ok的,不需要配置启动参),jboss启动时,默认只允许本机进行连接,如果需要其他的IP访问,需要 加上启动参数,最好这样写,则远程访问和本地访问都不会有问题
./run.sh -b 0.0.0.0
JBoss 4.0.4GA 启动参数解释 -h, --help 显示帮助信息 -V, --version 显示版本信息 -D[=] 设置系统属性 -d, --bootdir= 设置启动补丁目录的位置;必须是绝对路径或者url -p, --patchdir= 设置补丁目录的位置;必须是绝对路径或者url -n, --netboot= 从指定的url网络位置启动 -c, --configuration= 指定服务器启动的配置(default、all、minimal) -B, --bootlib= 将其它的jar包添加到bootclasspath的前面 -L, --library= 将其它的jar包添加到 loaders classpath -C, --classpath= 将其它的url添加到loaders classpath -P, --properties= 从指定的url加载系统属性 -b, --host= 所有JBoss Service绑定的地址 -g, --partition= HA分区的名称(缺省为DefaultDomain) -u, --udp= UDP的多播地址 -l, --log= 设置日志记录插件类型 JBoss 4.0.4GA环境变量 JBOSS_HOME JBoss的位置 JAVA Java运行程序的位置 JAVA_OPTS JVM启动参数 MAX_FD JBoss能够使用文件描述符的最大数量(仅用于Un*x)
2. 如果你在windos环境也开一个jboss 4.2.3 ,那么你就更能体验到ejb 分布式技术魅力了,在客户端 可以使用这样的方式 调用
Hashtable evn = new Hashtable(); evn.put(Context.PROVIDER_URL, "jnp://169.254.11.186,1099,169.254.11.175:1099"); evn.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
在环境变量中配置两个 ejb 资源的地址,一个是windows 环境中的Jboss4.2.3 容器,一个是linux 环境中 jboss4.2.3 容器,两个容器中都有helloworld.jar ,则 我们调用的时候 两个容器都开 或者关闭一个都可以完成调用,成功返回结果,除非我们把两个容器都关闭了,客户端 会自动找到一个 可连接的ejb地址 进行处理,不过是不是负载均衡 我没有仔细研究,那位哥们研究了 ,麻烦告知一下
3.各种容器中 ejb客户端的初始化环境参数
/* weblogic: * t3://localhost:7001 * weblogic.jndi.WLInitialContextFactory * jboss: * jnp://127.0.0.1:1099 * org.jnp.interfaces.NamingContextFactory * websphere: * iiop://127.0.0.1:2809 * com.ibm.websphere.naming.WsnInitialContextFactory */
参考:
http://blog.csdn.net/yangdaliang/archive/2009/08/19/4462998.aspx
发表评论
-
本地客户端调用 websphere6.1 ejb资源 解决方案
2011-01-21 12:25 1786开发环境: 中我们都是在jboss4.0上部署ejb2. ... -
ejb2.0用本地引用提高EJB访问效率
2009-12-24 15:21 3007用本地引用提高EJB访问效率 EJB 1 ... -
ejb3 定时器开发
2009-10-28 08:35 3748定时服务用作在一段特定的时间后执行某段程序 ... -
ejb2.0消息驱动bean的开发(JBOSS4.0.4.GA 环境)
2009-10-23 11:12 2309消息驱动bean主要使用在异步的业务 ... -
ejb3 第12讲 --开发EJB容器模型的WEB服务
2009-08-05 08:04 3876JAX-WS JAX-WS规范是一组XML web ... -
ejb3 第10讲 --开发单表映射的实体bean
2009-08-02 23:29 1493目的:使用ejb3 ... -
ejb3 第9讲 --配置jboss数据源
2009-08-02 20:19 1103这个比较简单: 去$JBOSS_HOME\ ... -
ejb3 第8讲 --通过注解方式注入并使用其他EJB或者服务
2009-07-08 08:02 3252情景:有两个bean,一个是HelloWorldBean ... -
ejb3 第7讲 --开发有状态bean
2009-07-05 21:21 1402用 @Stateful 注解的方式表明 bean是有状态 ... -
ejb3 第6讲--开发具有本地接口的无状态bean
2009-07-03 07:01 2829理解: 1.当ejb的服务器端和客户端 ... -
ejb3 第5讲--通过ANT提高EJB应用的开发效率
2009-07-02 22:10 1436<?xml version="1.0" ... -
ejb3 第4讲--把jboss集成进eclipse
2009-06-29 22:45 1266这个比较简单,就不多说了 -
ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端
2009-06-29 22:11 1667ejb中的3种bean: 什么是会话bea ... -
ejb3.0第11讲 --开发消息驱动bean
2009-06-24 08:23 2603概念: 1.java ... -
ejb3.0 --第1讲下载安装运行JBOSS
2009-06-24 07:08 15871.下载地址:jboss4.2.3http://www. ... -
ejb2.0 HelloWord
2008-09-27 07:38 7961中国电信网上营业厅项目是使用ejb2.0开发的,在项目中 ...
相关推荐
本地接口只在同一个JVM内可用,而远程接口允许跨JVM通信。 3. **本地接口的SessionBean** 本地接口通常用于同一应用内部的组件间通信。在示例中,`EJB-HelloWorld`可能包含了名为`HelloWorldLocal`的本地接口,...
通过这个接口,客户端可以跨JVM与EJB进行通信。例如,`EJBHelloWorldRemote.java` 文件可能包含以下代码: ```java import javax.ejb.Remote; @Remote public interface EJBHelloWorldRemote { String sayHello();...
EJB支持跨JVM的透明分布式计算,一个EJB应用可以在多台服务器上部署,实现负载均衡和高可用性。 **7. 容器服务** EJB容器提供的服务包括: - **安全性**:基于角色的访问控制(Role-Based Access Control,RBAC)。...
Enterprise JavaBeans(EJB)是Java平台上用于构建可部署在企业级服务器上的分布式应用程序的一种核心技术。EJB2.0是EJB规范的一个版本,它在1.1版的基础上进行了许多改进,旨在提高开发者的生产力,同时保持了企业...
远程接口允许跨网络调用,而本地接口适用于在同一JVM内的调用。开发者需要在客户端代码中创建EJB的引用,然后通过接口方法调用EJB服务。 6. **事务和安全性**:Websphere支持EJB的事务管理和安全性。事务管理可以...
- **远程接口(Remote Interface)**:允许跨JVM的调用,使客户端能够与服务器端的EJB进行通信。 **EJB的事务管理**: EJB提供强大的事务管理能力,可以设置不同的事务属性,比如所需的事务级别、传播行为等,确保...
EJB可以通过JAX-WS(Java API for XML Web Services)或JAX-RS(Java API for RESTful Web Services)暴露为Web服务,实现跨平台通信。 ### 9. EJB与JSF、Spring等框架的集成 EJB可以与JavaServer Faces (JSF)、...
EJB设计模式是开发者在实际项目中解决特定问题时,根据EJB规范和最佳实践形成的重复性解决方案。这些模式为复杂的企业级应用开发提供了结构化和可重用的方法。 1. **单例Session Bean** - 在EJB中,单例Session ...
- EJB支持跨JVM的分布式计算,通过JNDI(Java Naming and Directory Interface)进行查找和绑定。 - Myeclipse允许开发者配置JNDI名称,以便于客户端查找并调用远程Bean。 7. **EJB 3.x与CDI(Contexts and ...
1. Eclipse介绍:Eclipse是一款开源的、跨平台的集成开发环境,支持多种编程语言,包括Java,是开发Java EE应用的常用工具。 2. MyEclipse插件:MyEclipse是基于Eclipse的商业扩展,提供了更丰富的Java EE功能,包括...
EJB允许在分布式环境中部署和调用,可以通过RMI(远程方法调用)或JNDI(Java命名和目录接口)进行跨网络的访问。 ### 9. EJB与JPA集成 现代EJB通常结合Java Persistence API(JPA)来处理持久化,简化了数据访问...
这些文件是跨平台的,但服务器通常需要额外的配置文件,如jboss.xml和jboss-web.xml。在JBoss中,jboss.xml与ejb-jar.xml同级,jboss-web.xml则与web.xml同级。这些文件的DTD定义可在JBoss安装目录下的docs/dtd目录...
5. **远程接口**:EJB 可以通过远程接口暴露其服务,允许其他应用或者EJB进行跨JVM的调用。 这个"struts1.1_EJB小例子"很可能是演示如何在Struts 1.1框架下集成和使用EJB。具体实现可能包括创建一个Action,该...
5. **实战应用**:在实际开发中,通常将频繁调用且不涉及跨网络的业务逻辑封装到本地接口中,而将那些需要跨JVM或网络的服务暴露为远程接口。例如,数据库操作、业务规则计算等可以设计为本地接口,而客户订单处理、...
远程调用意味着EJB的客户端(可能是一个Web应用程序)可以在不同的JVM上运行,与EJB服务器上的购物车服务进行交互。这通常涉及到EJB的远程接口,使得客户端可以透明地调用服务器端的方法,实现购物车操作。 **EJB...
- Remote Interface:客户端通过远程接口调用EJB的方法,实现跨JVM的通信。 - Local Interface:仅在同一个JVM内可用,提供更快的访问速度。 5. JNDI查找: - EJB实例通过Java Naming and Directory Interface...
- 跨平台:基于Java的特性,RMI支持跨平台通信。 4. RMI的挑战与解决方案 - 安全性:RMI默认允许任何远程调用,可能存在安全风险。可以通过配置JVM参数或使用SSL加密来增强安全性。 - 性能:由于序列化和反序列...
- **跨平台**:作为Java的一部分,RMI天然具有Java的跨平台特性。 ### 4. RMI的挑战与应对 - **网络延迟**:由于涉及到网络通信,RMI可能会受到网络延迟的影响。优化网络环境或减少不必要的远程调用能有效缓解这一...
1. **诊断J2EE系统问题**:PerformaSure能够检测和分析集群化、分布式的J2EE系统中的性能问题,包括低效的Servlet、JSP、EJB、Java类和方法,应用服务器配置和部署问题,低效的第三方组件,JVM堆使用和配置问题,...
4. **版本兼容性**:不同的J2ME设备可能支持不同的Java虚拟机(JVM)版本,因此需考虑跨平台兼容性。 5. **用户界面**:J2ME的UI设计需要适应小屏幕和有限的输入方式,提供良好的用户体验。 **具体实例** "Using ...