glassfish3 学习笔记(一)
来源:互联网 发布:listview的优化方案 编辑:程序博客网 时间:2024/05/14 17:32
运行http://localhost:4848出现如下错误:
Source Document: jndi:/__asadmin/WEB-INF/faces-config.xml
Cause: Unable to find class 'com.sun.webui.jsf.faces.UIComponentELResolver'
解决方法:
将JDK版本升级到1.6.0_17以上
出现如下错误:
java.lang.NullPointerException
at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:297)
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:271)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.session.stateless.HelloClient.main(HelloClient.java:19)
Exception in thread "main" javax.naming.NamingException: Lookup failed for 'com.session.stateless.Hello' in SerialContext targetHost=localhost,targetPort=3700 [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext targetHost=localhost,targetPort=3700 [Root exception is java.lang.NullPointerException]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.session.stateless.HelloClient.main(HelloClient.java:19)
Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext targetHost=localhost,targetPort=3700 [Root exception is java.lang.NullPointerException]
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:276)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
... 2 more
解决方法:
将glassfishv3/glassfish/modules文件夹下的gf-client-module.jar,gf-client.jar导入到构建路径下
EJB中Stateful Bean 和Stateless Bean 区别
有状态会话Bean是这样一种EJB,即其服务的业务过程能够延伸到多个方法请求或者事务中。为完成这种业务过程,有状态会话Bean需要为单个客户保存状态信息。如果在方法调用期间有状态会话Bean的状态发生改变,则这种改变必须反映到同一客户的随后调用中。
无状态会话Bean是这样一种EJB,即其服务的业务过程只需要单个业务方法即可完成。由于它们不需要维护客户多个方法调用间的会话状态,因此它是无状态的。
为了限制内存中运行的有状态会话bean实例的数量,EJB容器需要将有状态会话Bean的会话状态保存到硬盘或者其他存储源中,该过程称为挂起(Passivation)。序列化和反序列化过程中不会对EJB持有的JDBC连接,或已打开的Socket,或其他非序列化对象进行操作。因此需要EJB开发者介入进来。
@PrePassivate注解是在挂起之前调用,在@PrePassivate注解的方法中可以对JDBC连接,文件等进行关闭。
@PostActivate注解是激活该会话bean后调用,在@PostActivate注解方法中可以对JDBC连接,文件等进行开启。
无状态会话Bean,在Bean实例池中维护相关Bean,使用后并不一定会立即销毁,可能会被下一个用户继续使用。
glassfish下:
@MessageDriven(
activationConfig = { @ActivationConfigProperty(
propertyName = "destinationType", propertyValue = "javax.jms.Queue"
) },
mappedName = "test")
方式消息驱动部署不成功问题,
上述方式在glassfish下部署不成功,很是奇怪,目前不知道是什么原因。
目前知道的在glassfish下成功部署MDB的方式是:
1.http://localhost:4848/ 登录管理控制台
2.在”配置“菜单下,点击”Java 消息服务“,选择”物理目的地“,点击”新建“按钮,创建一个目标,在”名称“里输入“创建名称”、类型选择需要的类型:javax.jms.Queue或javax.jms.Topic,点击“确定”
3.创建号物理目的后,我们”资源“菜单,点击”JMS 资源“,创建连接工厂,点击”连接工厂“,点击”新建“按钮,在”JNDI名称“输入jms/TopicConnectionFactory,资源类型,选择 ”javax.jms.TopicConnectionFactory"可以根据自己需要的类型选择,最后点击”确定“完成JMS连接工厂的创建。
4.然后点击”目的地资源“,新建目标,点击”新建“按钮,在”JNDI名称“里输入:jms/TestTopic,物理目的地里输入刚刚我们新建的物理目的地名称,这里是:步骤2中创建的物理名称,资源类型选择:javax.jms.Topic,然后点击”确定“按钮完成创建。
Source Document: jndi:/__asadmin/WEB-INF/faces-config.xml
Cause: Unable to find class 'com.sun.webui.jsf.faces.UIComponentELResolver'
解决方法:
将JDK版本升级到1.6.0_17以上
出现如下错误:
java.lang.NullPointerException
at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:297)
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:271)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.session.stateless.HelloClient.main(HelloClient.java:19)
Exception in thread "main" javax.naming.NamingException: Lookup failed for 'com.session.stateless.Hello' in SerialContext targetHost=localhost,targetPort=3700 [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext targetHost=localhost,targetPort=3700 [Root exception is java.lang.NullPointerException]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.session.stateless.HelloClient.main(HelloClient.java:19)
Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext targetHost=localhost,targetPort=3700 [Root exception is java.lang.NullPointerException]
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:276)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
... 2 more
解决方法:
将glassfishv3/glassfish/modules文件夹下的gf-client-module.jar,gf-client.jar导入到构建路径下
EJB中Stateful Bean 和Stateless Bean 区别
有状态会话Bean是这样一种EJB,即其服务的业务过程能够延伸到多个方法请求或者事务中。为完成这种业务过程,有状态会话Bean需要为单个客户保存状态信息。如果在方法调用期间有状态会话Bean的状态发生改变,则这种改变必须反映到同一客户的随后调用中。
无状态会话Bean是这样一种EJB,即其服务的业务过程只需要单个业务方法即可完成。由于它们不需要维护客户多个方法调用间的会话状态,因此它是无状态的。
为了限制内存中运行的有状态会话bean实例的数量,EJB容器需要将有状态会话Bean的会话状态保存到硬盘或者其他存储源中,该过程称为挂起(Passivation)。序列化和反序列化过程中不会对EJB持有的JDBC连接,或已打开的Socket,或其他非序列化对象进行操作。因此需要EJB开发者介入进来。
@PrePassivate注解是在挂起之前调用,在@PrePassivate注解的方法中可以对JDBC连接,文件等进行关闭。
@PostActivate注解是激活该会话bean后调用,在@PostActivate注解方法中可以对JDBC连接,文件等进行开启。
无状态会话Bean,在Bean实例池中维护相关Bean,使用后并不一定会立即销毁,可能会被下一个用户继续使用。
glassfish下:
@MessageDriven(
activationConfig = { @ActivationConfigProperty(
propertyName = "destinationType", propertyValue = "javax.jms.Queue"
) },
mappedName = "test")
方式消息驱动部署不成功问题,
上述方式在glassfish下部署不成功,很是奇怪,目前不知道是什么原因。
目前知道的在glassfish下成功部署MDB的方式是:
1.http://localhost:4848/ 登录管理控制台
2.在”配置“菜单下,点击”Java 消息服务“,选择”物理目的地“,点击”新建“按钮,创建一个目标,在”名称“里输入“创建名称”、类型选择需要的类型:javax.jms.Queue或javax.jms.Topic,点击“确定”
3.创建号物理目的后,我们”资源“菜单,点击”JMS 资源“,创建连接工厂,点击”连接工厂“,点击”新建“按钮,在”JNDI名称“输入jms/TopicConnectionFactory,资源类型,选择 ”javax.jms.TopicConnectionFactory"可以根据自己需要的类型选择,最后点击”确定“完成JMS连接工厂的创建。
4.然后点击”目的地资源“,新建目标,点击”新建“按钮,在”JNDI名称“里输入:jms/TestTopic,物理目的地里输入刚刚我们新建的物理目的地名称,这里是:步骤2中创建的物理名称,资源类型选择:javax.jms.Topic,然后点击”确定“按钮完成创建。
5.在对应的消息驱动Bean下,添加@MessageDriven(mappedName = "jms/TestTopic")即可,
备注:也可以不用创建物理目的,创建目的地资源后物理目的可直接自动生成。
public class LogClient { public static void main(String[] args) throws NamingException, JMSException { Properties props = new Properties(); props.put("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory"); props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming"); props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost"); //host props.setProperty("org.omg.CORBA.ORBInitialPort", "3700"); //EJB Port // 初始化JNDI InitialContext ctx = new InitialContext(props); // 1: 查找连接工厂 TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("jms/TopicConnectionFactory"); // 2: 使用连接工厂创建JMS连接 TopicConnection connection = factory.createTopicConnection(); // 3: 使用JMS连接创建Session TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); // 4: 查找目的地 Topic topic = (Topic)ctx.lookup("jms/TestTopic"); // 5: 创建消息发布者 TopicPublisher publisher = session.createPublisher(topic); // 6:创建和发布消息 TextMessage msg = session.createTextMessage(); msg.setText("This is a test message."); publisher.send(msg); // 完成 publisher.close(); System.out.println("Message published."); }}
- glassfish3 学习笔记(一)
- javaee编程、服务器glassfish3和第三方类包的学习笔记
- Netbean 7.0 + glassfish3配置WebService HTTPS笔记
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- 学习笔记(一)
- JAVA JNDI简介
- 使用GDAL获取网络数据
- 将一个文件夹下的所有文件复制到另一个文件夹下
- 将任一个数字进行拆解
- adb issues
- glassfish3 学习笔记(一)
- ubuntu - rpm的安装
- HDU 1286 新朋友
- 在Servlet中使用开源fileupload包实现文件上传功能 2010-08-05 23:38:25 标签:Servlet 文件上传 fileupload包 反编译 JD-GUI 原创作品,允许
- Data guard简介
- hdu 1166
- js-网站已运行天数
- 一个HIBERNATE一对多的实例
- php图形数字计数器的实现