我对servlet映射的web.xml结构感到困惑,执行它没有任何问题,但我试图弄清楚为什么我们在部署描述符中有这样的模式.
<web-app>
<servlet>
<servlet-name>Servlet1</servlet-name>
<servlet-path>foo.Servlet</servlet-path>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/enroll</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
现在只要我理解url-pattern"/ enroll"的请求,servlet容器就会将servlet-name与url-pattern匹配,并尝试查找相应的servlet-path并转发控件to foo.Servlet.所以基本上会有两个传递一个用于查找servlet-name而另一个用于servlet-path,我的问题是如果容器设计为以下列方式工作
<web-app>
<servlet>
<servlet-name>foo.Servlet</servlet-path>
<url-pattern>/enroll</url-pattern>
</servlet>
</web-app>
Run Code Online (Sandbox Code Playgroud)
如果我们使用以下方法会有什么缺点.这不会更有效,响应时间也会很快.
我想问一下您测试Java EE代码的首选方法?
我发现只有三个项目,它们试图帮助在Java EE环境中编写单元测试代码:
所以我想,
非常感谢...
有没有人在现实世界中都有过这方面的经历?他们如何在性能(内存使用,速度等)方面进行比较?稳定性?
JBoss Seam在Glassfish上运行良好吗?
我熟悉LAMP堆栈,多年来已成功部署了一些基于它的Web sties.我已经使用了从Apache + modPerl到PHP,Ruby和Rails的所有东西.通过充分利用缓存,我的Rails站点可以承受相当不错的负载,但我并不是说大量的.
我从来没有真正喜欢Java作为一种语言或XML,并且非常忽略了整个Java EE方面.对于那些在这两个领域都拥有真实和直接经验的人来说:Java EE是否有一些我非常喜欢的东西,或者只是一堆热风?什么证明专有应用程序服务器的高价格是合理的?
我不是在这里曳:我正在寻找的东西,Java EE的真指甲是从缺少具体的例子现代 LAMP架构,如果存在这种差异.(Modern = Rails,Django等).或者用LAMP真正做得更好的东西(更少的XML坐起来).
+++++更新于2008年10月16日
我很遗憾地报告说,这里的大多数回复都没有用,只是分为两类:"它可以扩展,因为这里有大型网站的三个例子"和"它可以扩展,因为它确实比实际上要好得多LAMP堆栈".
我已经做了很多阅读,并得出结论,Java EE只有一个非常好的技巧:交易(感谢Will),至于其余的你可以成功或失败的自己的优点,环境中没有任何内在的东西为了让你创建一个可扩展且可靠的网站,事实上Java EE有很多陷阱可以很容易地失败(例如,很容易开始使用会话bean而没有意识到你现在正在为相当多的JMS付费通过不同的设计可能已经避免的流量.)
有用的讨论
我添加了以下注释以启用我的EJB3实体之一的缓存,以使用ehCache测试缓存,其中我使用Hibernate作为持久性提供程序:
....
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Table(name = "F")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
@NamedQueries({ @NamedQuery(name = "F.findAll", query = "SELECT f FROM F f")})
public class F implements Serializable {
.....
}
Run Code Online (Sandbox Code Playgroud)
我在persistence.xml中添加了以下内容:
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>
<property name="hibernate.cache.provider_configuration_file_resource_path" value="/ehcache.xml"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,我收到以下错误:
/persistence/F.class):警告:无法在类型'org.hibernate.annotations.Cache'中找到注释方法'usage()':org.hibernate.annotations.Cache的类文件未找到编译器中发生异常(1.6.0_16).在检查Bug Parade重复项后,请在Java Developer Connection(http://java.sun.com/webapps/bugreport)上提交一个错误.在报告中包含您的计划和以下诊断.谢谢.com.sun.tools.javac.code.Symbol $ CompletionFailure:未找到org.hibernate.annotations.CacheConcurrencyStrategy的类文件
任何人都可以帮助我,让我知道我目前需要做什么或做错了什么?
异步JMS(Java消息服务)使用者与实际MDB(消息驱动Bean)之间是否存在任何差异.我看到的唯一区别是MDB类具有@MessageDriven异步JMS使用者没有的注释.
还有我遗失的其他东西?
我通过托管bean以这种方式获取连接用户的用户名(使用j_security_check):
......
username = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal().getName();
Run Code Online (Sandbox Code Playgroud)
然后以这种方式在jsf页面中显示它:#{userBean.username}
但我认为无法获得连接用户的数量并获得他们的角色.换句话说,除了用户名,用户角色和连接用户数之外,我还要显示.
我怎样才能做到这一点!?在此先感谢您的帮助!
编辑:我现在可以使用托管bean中的namedquery获取连接用户的角色:
public Users getUserRole(){
try {
Users auser = (Users)
em.createNamedQuery("Users.findByUsername").
setParameter("username", getRemoteUser()).getSingleResult();
return auser;
} catch (NoResultException nre) {
JsfUtil.addErrorMessage(nre, "getUserRole Error");
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
并在xhtml页面中:
<h:outputLabel for="rolefacet" value="Role: "/>
<h:outputFormat id="rolefacet" value="#{UserBean.userRole.ugroup}" />
Run Code Online (Sandbox Code Playgroud)
而ugroup是Users实体类中的角色名称.
编辑:一个仍然不适合我的解决方案是在我的web.xml中添加一个HttpSessionListener:
package beans;
/**
*
* @author med81
*/
import java.io.Serializable;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.ArrayList;
import javax.faces.context.FacesContext;
public class SessionCounter implements …Run Code Online (Sandbox Code Playgroud) 我有一个基于Seam 2.2的Java EE 5 Web应用程序,其中一堆表通过Hibernate 3.3.3映射到JPA 1.0实体.在开发期间,它运行在Tomcat 6,Oracle 10 XE和Windows 7上.
现在,操作部门要求我们将数据模型拆分为一个模式,即一个模式,即所有数据库对象的所有者(myschema)和一个充当应用程序数据库用户的模式(myschema_app).所以我做了以下事情:
myschema_appmyschema(常规一和两个N:M中间表)和序列根据使用(一个或多个的select,insert,update,delete),以myschema_appmyschema_app以便使用与以前相同的名称并隐藏其他模式的名称前缀hibernate.default_schema为新的模式名称persistence.xmlcontext.xml当我在hibernate.hbm2ddl.auto设置时启动应用程序时,validate当框架尝试创建EntityManagerFactory告诉我缺少表时,我得到一个异常.当我在myschema_app连接的sql工具中直接执行select语句时,一切正常.
我知道在另一个表上使用同义词对于应用程序是透明的.有谁知道我可能忽略了什么?
我需要将a中的一些值包含file.properties在WEB-INF/web.xml这样的内容中:
<param-name>uploadDirectory</param-name>
<param-value>myFile.properties['keyForTheValue']</param-value>
Run Code Online (Sandbox Code Playgroud)
我正在使用这个:
我正在将一个spring-managed bean注入一个抽象类,它似乎不起作用.这是我所做的解释,如果还不够,我可以编辑帖子并添加一些代码:
结果 - 它不起作用.
然后我尝试将注入的bean从抽象类移动到两个子类中.现在它有效.
那么,我做错了什么,或者理论上不可能将bean注入Spring 3和Java EE 5的抽象类中?