我只是想知道你何时/为什么要在web.xml文件中定义resource-ref元素?
我原本以为它会在您的web/app服务器中使用JNDI定义,然后在Java代码中查找JNDI引用?
资源引用定义对我来说似乎有点多余,我无法想到什么时候它可能有用.例:
<resource-ref>
<description>Primary database</description>
<res-ref-name>jdbc/primaryDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud) 也许这是一个愚蠢的问题,但它让我烦恼.
我有一个双向的员工与车辆的一对多关系.当我第一次在数据库中保留一个Employee(即它没有分配的ID)时,我也希望它的相关Vehicle保持不变.
这对我来说很好,除了我保存的Vehicle实体没有自动映射关联的Employee,并且在数据库中,Vehicle表中的employee_id外键列为null.
我的问题是,在员工本身被持久化的同时,是否有可能让车辆的员工坚持下去?我意识到需要首先保存员工,然后保存车辆.JPA可以自动为我做这个吗?或者我必须做以下事情:
Vehicle vehicle1 = new Vehicle();
Set<Vehicle> vehicles = new HashSet<Vehicle>();
vehicles.add(vehicle1);
Employee newEmployee = new Employee("matt");
newEmployee.setVehicles(vehicles);
Employee savedEmployee = employeeDao.persistOrMerge(newEmployee);
vehicle1.setAssociatedEmployee(savedEmployee);
vehicleDao.persistOrMerge(vehicle1);
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:根据要求,这是我的映射(没有所有其他方法等)
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="employee_id")
private Long id;
@OneToMany(mappedBy="associatedEmployee", cascade=CascadeType.ALL)
private Set<Vehicle> vehicles;
...
}
@Entity
public class Vehicle {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="vehicle_id")
private Long id;
@ManyToOne
@JoinColumn(name="employee_id")
private Employee associatedEmployee;
...
}
Run Code Online (Sandbox Code Playgroud)
我刚刚意识到我应该在Employee类上定义以下方法:
public void addVehicle(Vehicle vehicle) {
vehicle.setAssociatedEmployee(this);
vehicles.add(vehicle);
}
Run Code Online (Sandbox Code Playgroud)
现在上面的代码如下所示:
Vehicle …
Run Code Online (Sandbox Code Playgroud) 我感到有点困惑,有很多框架与Node.js相关的'东西'.有人能够给我一个概述 - 以下图书馆/框架/其他相关/互动的方式 - 包含什么或主要目的是什么? - 他们之间的差异
此外,如果还有其他我已经离开我的列表,请随意添加它们以及它们是什么以及它们如何适合的描述.
鉴于我选择的JPA(Hibernate实现),Spring和<插入MVC框架 - 开发框架 - Struts 1,Struts 2,Spring MVC,Stripes ...>,我问这个问题.
我一直在考虑我的实体层中的关系 - 例如我有一个订单实体,它有许多订单行.我已经设置了我的应用程序,因此它急切地为每个订单加载订单行.如果我将获取策略设置为false,你认为这是一种解决我会遇到的延迟初始化问题的懒惰方法吗?
我看到它的方式,在检索实体及其关联时,我有以下备选方案:
使用Open Session In View模式在每个请求上创建会话,并在返回响应之前提交事务.
实现DTO(数据传输对象)层,以便我执行的每个DAO查询都返回正确初始化的DTO以用于我的目的.我真的不太喜欢这个选项,因为根据我的经验,我发现它创建了很多样板复制代码并且变得很难维护.
不要在JPA中映射任何关联,以便我执行的每个查询都只返回我感兴趣的实体 - 这可能要求我无论如何都要有DTO,这将是一个难以维护的问题,我认为这样做会破坏ORM的目的首先.
急切地获取所有(或大多数关联) - 在上面的示例中,总是在检索订单时获取所有订单行.
所以我的问题是,你何时以及在什么情况下会使用哪些选项?你总是坚持一种做法吗?
我会问一位同事,但我认为,如果我甚至提到"开放式会议"这一术语,我会受到空白的盯着:(我真正想要的是来自资深或经验丰富的开发人员的一些建议.
多谢你们!
我在这里寻找一些意见,我正在构建一个具有相当标准功能的Web应用程序:
当您从Web应用程序发送电子邮件时,通常(通常)会对持久层进行一些更改.例如:
如何发送这些电子邮件对于您的应用程序的成功至关重要.您如何发送它们取决于预期收件人收到电子邮件的重要程度.
我们将使用示例1来查看与邮件服务器关闭的情况相关的以下四种策略.
TRANSACTIONAL&SYNCHRONOUS发送电子邮件失败,并向用户显示一条错误消息,指出无法创建其帐户.当应用程序等待连接超时时,应用程序将显得缓慢且无响应.由于事务已回滚,因此未在数据库中创建该帐户.
TRANSACTIONAL&ASYNCHRONOUS这里的事务定义是指将电子邮件发送到JMS队列或将其保存在数据库表中,以便另一个后台进程进行提取和发送.
用户帐户在数据库中创建,电子邮件将发送到JMS队列以便稍后处理.交易成功并提交.将向用户显示一条消息,指出他们的帐户已创建,并检查其电子邮件是否有确认链接.在这种情况下,可能由于某些其他错误而从未发送电子邮件,但是用户被告知已将电子邮件发送给他们.如果必须调用应用程序支持来诊断电子邮件问题,则可能会有一些延迟将电子邮件发送给用户.
非事务性和同步性用户是在数据库中创建的,但是当应用程序尝试使用确认链接发送电子邮件时,应用程序会收到超时错误.将向用户显示一条错误消息,指出存在错误.应用程序缓慢且无响应,因为它等待连接超时
当邮件服务器恢复生命并且用户再次尝试注册时,会告诉他们他们的帐户已经存在但尚未确认,并且可以选择将电子邮件重新发送给他们.
非事务性和异步性这与事务性和异步性之间的唯一区别在于,如果将电子邮件发送到JMS队列或将其保存在数据库中时出错,则仍会创建用户帐户,但直到用户才会发送电子邮件试图再次注册.
我想知道的是其他人在这里做了什么?除了上面提到的4之外,你能推荐其他解决方案吗?解决这个问题的合理方法是什么?我不想过度设计一个处理(希望)我的邮件服务器出现故障的情况的系统!
最简单的方法是同步编码,但这种方法还有其他缺陷吗?我想我想知道是否有最好的做法,我用谷歌搜索找不到多少.
我正在使用JQuery,Stripes,Spring和JPA(Hibernate)构建一个webapp.
我有一个页面,允许用户输入多个订单行项目,每次onblur出现在价格字段中,我有一个JQuery事件绑定到该字段,它汇总了所有的价格字段(这是一个小计),计算10%税,并将税收添加到小计.我更新页面以显示小计,税金和总计.
我的问题是,我应该在Javascript中进行此计算吗?如果是这样,我怎样才能确保舍入等正常工作?我有点担心精确度问题.
在Java中进行Ajax调用是否会更好?
任何建议都会很棒!
当用户注册新帐户时,我想在我的Web应用程序中实现异步电子邮件发送.这样,如果发送电子邮件消息存在问题或延迟(例如,邮件服务器关闭或与邮件服务器的网络连接缓慢),则不会等待用户完成发送.
我的Web应用程序是使用Spring和Hibernate的JPA实现构建的.
在这个Web应用程序中实现异步电子邮件处理的最佳和最可靠的方法是什么?
我正在考虑将数据库信息保存在数据库表中,然后由Quartz(http://www.opensymphony.com/quartz/)预定作业进行定期轮询以获取更新,当它发现新的未发送电子邮件时,它会尝试发送他们.
这是实现我想要的合理方式吗?
谢谢.
编辑:
最响应的回应是将邮件发送作为同步调用,但是我认为异步方法可能最好的是我当前正在使用GMail作为我的出站邮件服务器(这是用于开发时的测试)和当我的应用程序尝试将电子邮件发送到邮件发送功能的调用返回时,我的响应延迟了25秒.你怎么看?
我想知道是否有人可以向我解释为什么每次我的Java Web应用程序使用Gmail的SMTP服务器发送电子邮件时,它需要花费近30秒的时间?请参阅以下时间戳:
13/04/2010-22:24:27:281 DEBUG test.service.impl.SynchronousEmailService - 发送邮件之前.13/04/2010-22:24:52:625 DEBUG test.service.impl.SynchronousEmailService - 发送邮件后
我正在使用spring的JavaMailSender类,其中包含以下设置:
email.host = smtp.gmail.com
email.username=myaccount@gmail.com email.password = mypassword email.port = 465 mail.smtp.auth.required = true
请注意,邮件正在发送,我收到的很好,只有这种延迟导致应用程序用户体验缓慢.
如果你知道我怎么能自己诊断这个问题也会很好:)
这是一个noob问题但是我需要在我的Java Web应用程序中使用SSL(使用Stripes实现其MVC实现,Spring和Hibernate的标准Java Web应用程序)需要什么?
我正在Tomcat 5.5上部署我的war文件.我只希望SSL用于某些URL - 任何传输用户密码的URL - 因此帐户注册,更改密码和登录.
我只需要获得SSL证书并将其安装在Tomcat中吗?如何确保https仅用于某些URL?
我现在感觉有些矛盾.我有一个使用Stripes用于MVC框架的Web应用程序和用于后端的Spring/Hibernate.我的MVC层中有一个帐户注册方法,需要以下验证:
我在Stripes(MVC层)中有一个验证方法来检查这两个案例,但是想知道我的服务层是否应该复制这些检查?如果服务层接口作为Web服务公开,那么我认为验证是个好主意,但如果它只在Web应用程序的上下文中使用它是否需要?
编辑:我不打算复制验证代码 - 我的意思是在两个地方复制验证方法调用.
我认为我的选择是:
这里最好的做法是什么?我正在寻找关于我应该选择哪个选项以及原因的建议/意见.
请注意,对注册表单的输入字段进行简单的验证检查(如检查空白),我认为这些应仅由MVC验证处理; 我只关心更复杂的验证.
java ×6
email ×2
orm ×2
smtp ×2
ajax ×1
asynchronous ×1
backbone.js ×1
coffeescript ×1
currency ×1
express ×1
gmail ×1
jakarta-mail ×1
javascript ×1
jpa ×1
jquery ×1
node.js ×1
one-to-many ×1
performance ×1
resource-ref ×1
session ×1
spring ×1
ssl ×1
stripes ×1
tomcat ×1
transactions ×1
validation ×1
web.xml ×1