我正在尝试实现一个用于流式传输大型对象的servlet:
oracle.sql.BLOB blob = rs.getBLOB('obj');
InputStream in = blob.getBinaryStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
ServletOutputStream out = response.getOutputStream();
int counter=0
while((length=in.read(buffer)) != -1){
out.write(buffer,0,length);
counter++;
if(counter % 10 == 0){
counter=0;
response.flushBuffer();
}
Run Code Online (Sandbox Code Playgroud)
此代码假设通过chunck将数据发送到客户端块.现在发生的事情是,当我传输大对象(100 MB)时,内存会上升,如果有多个并行下载/流,服务器有时会死掉.
为什么这flushBuffer()不是向客户端发送数据?只有在响应关闭后,客户端才会弹出打开/保存文件.
我在jsp中有一个表单.有两个提交按钮:"搜索"和"添加新"按钮.我已经为每个按钮设置了自己的方法属性.
<s:form name="searchForm" action="employeeAction" method="post">
<s:textfield name="id" label="Employee ID"/>
<s:textfield name="name" label="Employee Name"/>
<s:submit value="Search" method="doSearch"/>
<s:submit value="Add New" method="doAddNew"/>
</s:form>
Run Code Online (Sandbox Code Playgroud)
在struts.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>
</package>
<package name="example" namespace="/example" extends="default">
<action name="employeeAction" class="example.EmployeeAction">
<result name="search">/example/search.jsp</result>
<result name="add">/example/add.jsp</result>
</action>
</package>
</struts>
Run Code Online (Sandbox Code Playgroud)
在EmployeeAction类中
public class EmployeeAction …Run Code Online (Sandbox Code Playgroud) 我正在检查来自html5rocks的代码:http://www.html5rocks.com/static/demos/parallax/demo-1a/scripts/parallax.js
并注意他们使用
(function(win, d) {
var $ = d.querySelector.bind(d);
....
var mainBG = $('section#content');
....
})(window, document);
Run Code Online (Sandbox Code Playgroud)
为什么他们将文档绑定到querySelector.是不是它已经作为文件的范围?
我们使用它s:select来显示资源包中的字符串列表.
在行动中:
//bank codes will be something [12,13,14]
List<String> bankCodesList; //with setter and getter
String selectedBankCode;
Run Code Online (Sandbox Code Playgroud)
在消息资源中,每个银行都有一个名称:
bank.code.12= ALFM Bank
bank.code.13= RIHN Bank
....
Run Code Online (Sandbox Code Playgroud)
在JSP中:
<s:select name = "selectedBankCode"
list = "bankCodesList"
listKey = "toString()"
listValue = "%{getText('bank.code.' + toString())}" />
Run Code Online (Sandbox Code Playgroud)
银行列表是List<String>我们用来toString()获取密钥并用于toString()从资源包中获取价值的.
我除了发现s:select有一个status属性相同,s:iterator但我找不到任何!
所以你认为还有更好的方法吗?!
LoggerProducer.java是一个类,用于生成要在CDI bean中注入的Logger:
@Inject
Logger LOG;
Run Code Online (Sandbox Code Playgroud)
完整代码:
import javax.ejb.Singleton;
/**
* @author rveldpau
*/
@Singleton
public class LoggerProducer {
private Map<String, Logger> loggers = new HashMap<>();
@Produces
public Logger getProducer(InjectionPoint ip) {
String key = getKeyFromIp(ip);
if (!loggers.containsKey(key)) {
loggers.put(key, Logger.getLogger(key));
}
return loggers.get(key);
}
private String getKeyFromIp(InjectionPoint ip) {
return ip.getMember().getDeclaringClass().getCanonicalName();
}
}
Run Code Online (Sandbox Code Playgroud)
问题:可以@Singleton安全地变成@ApplicationScoped?
我的意思是,为什么有人想在这里使用EJB?是否存在技术原因,因为不涉及任何交易,而且(AFAIK)无论如何都是线程安全的?
我显然是指javax.enterprise.context.ApplicationScoped,而不是javax.faces.bean.ApplicationScoped.
题
从线程创建其他线程的最有效方法是什么?
上下文
我正在重新设计一个更高效的应用程序.最大的改进之一是运行并发操作; 但我不熟悉并发编程.我希望改进的方案如下:
我们有多个市场可以从中导入订单,然后上传到我们的ERP系统.每个市场都有多种记录类型可供导入.目前,这MP->RT->RT->RT->RT与MP调用marketplace()的位置一样,并且添加了后续的recordtypes(RT).
我想要实现的是如下流程:
MP
|-> RT
|-> RT
|-> RT
|-> RT
MP
|-> RT
|-> RT
...
Run Code Online (Sandbox Code Playgroud)
调用多个市场的地方,然后同时添加多个记录类型.
我目前正在使用一个executor service控制MP任务,但我想知道处理RT任务的最佳方法.
java concurrency multithreading thread-safety executorservice
我想在我的网站上使用Bootstrap.我有单选按钮,我试图使用bootstrap中的"按钮".
<td style="margin-bottom:0px; padding-bottom: 0px;font-size=12px;vertical-align:bottom;">
<div class="btn-group" data-toggle="buttons" id="topButtonDiv" >
<button type="button" class="btn btn-primary">Home
<input type="radio" id="radio1" ></button>
<button type="button" class="btn btn-primary">Home1
<input type="radio" id="radio2" > </button>
<button type="button" class="btn btn-primary">Home2
<input type="radio" id="radio7"> </button>
</div>
</td>
Run Code Online (Sandbox Code Playgroud)
我面临的问题是,我仍然看到单选按钮中的圆圈,在Bootstrap示例中,我看到没有这样的圆圈存在.
http://getbootstrap.com/javascript/#buttons-usage
你能让我知道我在这里缺少什么吗?
我将一些参数传递给ModelDriven<Transporter>通过查询字符串实现的动作类.
<s:form namespace="/admin_side" action="Test" id="dataForm" name="dataForm">
<s:url id="editURL" action="EditTest" escapeAmp="false">
<s:param name="transporterId" value="1"/>
<s:param name="transporterName" value="'DHL'"/>
</s:url>
<s:a href="%{editURL}">Click</s:a>
</s:form>
Run Code Online (Sandbox Code Playgroud)
动作类如下.
@Namespace("/admin_side")
@ResultPath("/WEB-INF/content")
@ParentPackage(value = "struts-default")
public final class TestAction extends ActionSupport
implements Serializable, Preparable, ModelDriven<Transporter>
{
private static final long serialVersionUID = 1L;
private Transporter transporter = new Transporter();
@Action(value = "Test",
results = {
@Result(name = ActionSupport.SUCCESS, location = "Test.jsp"),
@Result(name = ActionSupport.INPUT, location = "Test.jsp")},
interceptorRefs = {
@InterceptorRef(value = "paramsPrepareParamsStack",
params = {"params.acceptParamNames", "transporterId, …Run Code Online (Sandbox Code Playgroud) java model-driven struts2 interceptorstack struts2-interceptors
我有一个JPA 2 Web应用程序(Struts 2,Hibernate 4仅作为JPA实现).
当前的要求是将(非id)数字顺序字段(仅对某些行填充)添加到现有实体.根据特定条件插入新行时,我需要将新字段设置为its highest value + 1或NULL.
例如:
ID NEW_FIELD DESCRIPTION
--------------------------------
1 1 bla bla
2 bla bla <--- unmatched: not needed here
3 bla bla <--- unmatched: not needed here
4 2 bla bla
5 3 bla bla
6 4 bla bla
7 bla bla <--- unmatched: not needed here
8 5 bla bla
9 bla bla <--- unmatched: not needed here
10 6 bla bla
Run Code Online (Sandbox Code Playgroud)
在旧的SQL中,它将是这样的:
INSERT INTO myTable ( …Run Code Online (Sandbox Code Playgroud) 我在课堂上使用基于sturts 2的基于注解的验证,同时使动作错误消失,我得到了这个奇怪的“ FreeMarker模板错误!”。这是我的实体类。
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userid;
private String userPhoneNumber;
private String userName;
private String password;
private String full_name;
private String useremail;
@OneToOne
private userType usertypeid;
public Long getUserid() {
return userid;
}
public void setUserid(Long userid) {
this.userid = userid;
}
public String getUserPhoneNumber() {
return userPhoneNumber;
}
@RequiredStringValidator(message = "Enter Phone Number",type = ValidatorType.FIELD)
public void setUserPhoneNumber(String userPhoneNumber) {
this.userPhoneNumber = …Run Code Online (Sandbox Code Playgroud) java ×7
struts2 ×4
jsp ×3
bind ×1
blob ×1
cdi ×1
concurrency ×1
document ×1
ejb-3.1 ×1
freemarker ×1
hibernate ×1
html ×1
java-ee ×1
javascript ×1
jpa ×1
model-driven ×1
ognl ×1
oracle11g ×1
parallax.js ×1
servlets ×1
sql ×1
streaming ×1
struts-tags ×1