`
biaowen
  • 浏览: 74455 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

strusts2 + EJB3 整合,记录一下……

阅读更多
刚接触ejb,今天整了一天ejb3+struts2,折腾死,google也没发现多少实用的demo。发个笔记,也许对初学朋友有些帮助。

将例子简单化,让他们实现结合就好。。。


都说HelloWorld好,我也写个HelloWorld吧。。

1,新建项目

2,将jboss下的client目录所有包都复制到项目lib里(具体需要什么包我还搞不太明白,不管它,就先全部复制过去吧。望指教,谢谢)

3,新建接口类,供客户端调用:
Hello.java
/**
 * 远程接口
 * @author biaowen
 *
 */
public interface Hello {
	
	public String sayHello(String name);
}


4,Hello接口实现类
HelloBean.java
import javax.ejb.Remote;
import javax.ejb.Stateless;

import org.biaowen.service.Hello;

/**
 * Hello实现类
 * @author biaowen
 *
 */
@Stateless
@Remote(Hello.class)
public class HelloBean implements Hello {

	public String sayHello(String name) {
		
		return "Hello " + name;
	}

}


EJB服务端就完成了,导出jar,部署到jboss里,在控制面板上看到:
HelloBean/remote - EJB3.x Default Remote Business Interface
HelloBean/remote-org.biaowen.service.Hello - EJB3.x Remote Business Interface
就说明服务端部署成功了。。

接下来实现struts2客户端:
1,将struts2所需要包copy到项目lib里。struts2包清单就不贴出来了,需要可直接下载附件。

2,配置web.xml,与ejb没有任何偶合,代码清单:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
		<display-name>struts2</display-name>
		
		<filter>
			<filter-name>struts2</filter-name>
			<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
		</filter>
		
		<filter-mapping>
			<filter-name>struts2</filter-name>
			<url-pattern>/*</url-pattern>
		</filter-mapping>
		
		<welcome-file-list>
			<welcome-file>index.jsp</welcome-file>
		</welcome-file-list>
		
</web-app>


3,struts.xml清单:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
	
<struts>
	
	<constant name="struts.ui.theme" value="simple" />
    <constant name="struts.i18n.reload" value="true" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.configuration.xml.reload" value="true" />
    <constant name="struts.enable.SlashesInActionNames" value="true" />
    <constant name="struts.custom.i18n.resources" value="ApplicationResources" />
    <constant name="struts.serve.static.browserCache" value="false" />
    
	<package name="default" extends="struts-default">
		<action name="hello" class="org.biaowen.struts.action.HelloAction">
			<result>hello.jsp</result>
		</action>
	</package>
	
</struts> 


4,接下来创建action,用于作为EJB客户端,代码如下:
HelloAction.java
import java.util.Properties;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.biaowen.ejb.service.Hello;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport {

	private static final long serialVersionUID = -7799123599902957679L;
	
	// 将信息传递到页面
	private String message;
	
	public String execute() {
		
		Properties props = new Properties();
		props.setProperty("java.naming.factory.initial",
				"org.jnp.interfaces.NamingContextFactory");
		props.setProperty("java.naming.provider.url", "localhost:1099");
		Hello hello = null;
		try {
			InitialContext ctx = new InitialContext(props);
			hello = (Hello)ctx.lookup("HelloBean/remote");
		} catch (NamingException e) {
			e.printStackTrace();
		}
		
		message = hello.sayHello("biaowen");
		
		return SUCCESS;
	}

	public String getMessage() {
		return message;
	}
	
}


5,web页面,用来显示返回的helloworld信息:
hello.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>
		<title>ejb+Struts2整合Demo</title>
	</head>
	<body>
		${message}
	</body>
</html>


6,基本完成,不过现在启动运行话会抛异常:
java.lang.NoClassDefFoundError: javax/security/jacc/PolicyContextException

我们还需要一个包javaee.jar,直接从附件获取。(注意:只保留javaee.jar里的javax.security.jacc.*就可以了,否则会和jboss的客户端包冲突,导致页面无法访问,具体那里冲突我也搞不明白。哈)。

ok..在次启动,http://localhost:8080/hello.action 搞定,收工。。。。

附件只包含了struts2包和javaee.jar。其他jboss包自己导入(%JBOSS_HOME%\client)。项目用eclipse可直接恢复。
分享到:
评论

相关推荐

    dwr+ext+strusts2+spring+hibernate整合

    "dwr+ext+struts2+spring+hibernate整合"就是一个典型的例子,它涵盖了前端展示、后端控制、业务逻辑处理、持久层操作等多个层面的技术。下面将分别详细介绍这些技术以及它们在整合中的作用。 1. DWR (Direct Web ...

    strusts2+spring+ibatis

    Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们的整合应用可以构建出高效、灵活的MVC(Model-View-Controller)架构。在这个"Struts2+Spring+iBatis"的项目中,我们看到的是一个用户登录功能...

    strusts2+spring + ibatis框架增删改查

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的动作控制、依赖注入以及数据库操作。本项目实践旨在深入理解和应用这三大框架的集成,实现数据的增删改查(CRUD)功能。 **Struts...

    Struts2+Spring+Mybaits3框架整合实例

    Struts2、Spring和MyBatis3是Java Web开发中常用的三大开源框架,它们的整合应用可以构建出高效、灵活的MVC(Model-View-Controller)架构。本实例将详细解析这三大框架如何协同工作,提升开发效率,并提供一个基于...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    3. 配置Hibernate:在Spring配置文件中,配置Hibernate的SessionFactory,并设置数据库连接信息。同时,需要编写实体类和对应的映射文件(`.hbm.xml`),以便Hibernate能够自动管理数据库表。 4. 配置Struts2:创建...

    详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)

    详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate) 知识点一:SSH三大框架整合概述 SSH三大框架整合是指将Spring、Struts2和Hibernate三个框架进行整合,以便于在JAVAEE项目中实现复杂的业务逻辑。这种...

    strusts2&hibernate&spring整合开发

    Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合开发能够构建出高效、可维护性高的Web应用程序。这个范例是一个基于这三个框架的网上拍卖系统,让我们一起深入探讨它们如何协同工作。 **...

    Strusts2学习资料

    拦截器是Struts2的一大特色,它们是一系列在Action执行前后运行的方法,可以实现登录检查、日志记录、事务管理等功能。通过组合不同的拦截器,可以实现复杂的行为控制。 5. **结果类型(Result Types)** 结果...

    BBS系统(基于strusts2和mysql实现的系统)

    2. **拦截器**:Struts2的拦截器机制允许开发者在Action执行前后插入自定义逻辑,如权限验证、日志记录等。 3. **OGNL表达式语言**:用于在视图和模型之间传递数据,提供了灵活的数据访问和操作方式。 4. **插件...

    Strusts2jar包

    2. **强大的拦截器**:拦截器是Struts2的核心组件,可以插入到请求处理流程中,执行如日志记录、权限验证、性能监控等任务,提高了代码的可复用性和可扩展性。 3. **强大的动作映射**:Action是业务逻辑的载体,...

    Strusts2

    2. **拦截器(Interceptor)**:Struts2的一个重要特性是拦截器,它类似于AOP(面向切面编程)的概念,可以在Action执行前后插入自定义的处理逻辑,如日志记录、权限验证、数据转换等。 3. **配置方式**:Struts2...

    ognl(关于标签strusts2)

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,OGNL(Object-Graph Navigation Language)是核心表达式语言,它被广泛用于视图层,尤其是Struts2的标签库。...

    strusts2xml

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web应用程序框架,它在Java社区中广泛使用,特别是在构建企业级应用时。标题中的"struts2xml"暗示我们将关注Struts2框架的核心配置文件,即`struts....

    java订单管理系统源码ssh框架数据库 MySQL源码类型 WebForm

    JAVA订单管理系统源码ssh框架 strusts2+spring+hibernate 运行环境:Java + mysql 管理员用户名:admin 密码:123 或:123456 或者:1

    宿舍管理系统 strusts2

    宿舍管理系统 strusts2 ,用不了可以找我,QQ375308186

    strusts2中文权威手册

    Struts2是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java web应用程序。这个"Struts2中文权威手册"应该是全面介绍了Struts2框架的使用、配置、设计原理及其在开发过程中的最佳实践,旨在帮助中国...

    struts2+spring+hibernate Demo

    3. 配置web.xml,设置Struts2和Spring的前端控制器。 4. 创建Spring的配置文件(如applicationContext.xml),配置Bean及依赖注入。 5. 配置Struts2的配置文件(struts.xml),定义Action和结果。 6. 配置Hibernate...

    企业专家讲述strusts2(课件)

    在Struts2中,开发者可以利用拦截器(Interceptor)机制来处理请求,这些拦截器可以实现如认证、授权、日志记录等功能,极大地提高了代码的可复用性和可维护性。 课程可能会涵盖以下几个重要的知识点: 1. **...

    eclipse的strusts插件

    **Eclipse的Struts插件**是开发Java Web应用程序的重要工具,特别对于使用Struts2框架的项目来说,它提供了一整套集成开发环境(IDE)功能,帮助开发者提高效率和代码质量。这款插件主要面向那些使用Eclipse作为开发...

    Strusts1

    尽管Struts1的核心版本不包含拦截器,但社区开发的Struts-Plugin提供了Interceptor功能,类似于Spring MVC的拦截器,用于在Action执行前后进行额外的操作,如权限验证、日志记录等。 **7. 结合其他技术** Struts1常...

Global site tag (gtag.js) - Google Analytics