以下是我发送电子邮件的代码:
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.debug", "false");
final Session session = Session.getInstance(props);
final Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, toAddress);
msg.setSubject(subject);
msg.setSentDate(new Date());
Multipart multipart = new MimeMultipart("related");
BodyPart mbp1 = new MimeBodyPart();
mbp1.setContent(body, "text/html");
multipart.addBodyPart(mbp1);
Transport.send(msg);
Run Code Online (Sandbox Code Playgroud)
错误堆栈跟踪:
javax.mail.NoSuchProviderException: smtp
at javax.mail.Session.getService(Session.java:764)
at javax.mail.Session.getTransport(Session.java:689)
at javax.mail.Session.getTransport(Session.java:632)
at javax.mail.Session.getTransport(Session.java:612)
at javax.mail.Session.getTransport(Session.java:667)
at javax.mail.Transport.send0(Transport.java:154)
at javax.mail.Transport.send(Transport.java:80)
Run Code Online (Sandbox Code Playgroud)
注意:
- 如果作为桌面应用程序执行,相同的代码.但是在tomcat上部署时抛出异常.
- 最新的mail.jar和smtp.jar被添加到库中.
- SMTP主机地址也是正确的.
如果有人可以指点我会有所帮助.
在对应用程序进行性能分析时,我注意到一遍又一遍地创建XMLInputFactory实例非常昂贵。在多个线程之间共享其实例是否安全?
Javadoc没有任何关于其线程安全性的信息,并且在互联网上搜索并不能给出明确的答案!
我正在使用primefaces 4.
我正在使用可编辑的表,当我编辑单元格时,调用侦听器方法传递CellEditEvent
像这样
public void onCellEdit(CellEditEvent event) {
/*
* The rowIndex here can be changed according to the sorting/filtering.
* FilteredData starts as null, but primefaces initializes it, so you
* don't have to check for NPE here
*/
int alteredRow = event.getRowIndex();
UIColumn o = event.getColumn();
System.out.println(this.filteredData.get(event.getRowIndex()).get(columns.get(0)));
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.
该事件有一个getRowIndex()
但它没有getColumnIndex().
相反,它有一个getColumn()方法,返回一个UIColumn对象.
问题是,在调试时,我找不到获取任何列信息的方法(名称,id等)
我可以破解该列以获得一些像这样的唯一ID
<p:ajax event="cellEdit" listener="#{myMB.onCellEdit}"/>
<c:forEach items="#{myMB.columns}" var="column" varStatus="loop">
<p:column id="col#{loop.index}" headerText="#{column}" sortBy="#{column}" filterBy="#{column}" filterMatchMode="contains"/>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{dataRow[column]}" />
</f:facet>
<f:facet name="input">
<p:inputText …
Run Code Online (Sandbox Code Playgroud) 我正在使用自动化,并使用Jsch连接到远程设备并自动执行一些任务。
我在解析命令结果时遇到问题,因为有时它们带有ANSI Control chars。
我已经看到了这个答案和另一个答案,但是它没有提供任何库来做到这一点。如果有的话,我不想重新发明轮子。而且我对这些答案没有信心。
目前,我正在尝试此操作,但我不确定它是否足够完整。
reply = reply.replaceAll("\\[..;..[m]|\\[.{0,2}[m]|\\(Page \\d+\\)|\u001B\\[[K]|\u001B|\u000F", "");
Run Code Online (Sandbox Code Playgroud)
如何从Java字符串中删除ANSI控制字符(VT100)?
我有两个tomee实例聚集.
每个人都有一个注释方法
@Schedule(dayOfWeek = "*")
public void runMeDaily() {...}
Run Code Online (Sandbox Code Playgroud)
我想每天只运行一次这种方法.一天不两次(每个实例一个)
我可以使用此处描述的标志仅在一个WebLogic群集节点上运行@Scheduled任务?或者只选择一些节点,但我想知道是否有更优雅的方式来做到这一点.
这个问题与集群环境中的EJB3.1 @Schedule有些相关,但我没有使用JBOSS.(而且没有回答)
在SG Ganesh和Tushar Sharma撰写的"Oracle认证专业Java SE 7程序员考试1Z0-804和1Z0-805综合OCPJP 7认证指南"一书中,
"如果在2个或更多接口中声明了一个方法,并且该方法声明在throws子句中抛出不同的异常,则实现应列出所有这些异常"(第347页)
那么,我试过这个
public interface I1 {
public void x() throws I1Exception;
}
public interface I2 {
public void x() throws I2Exception;
}
public class I1Exception extends Exception {
}
public class I2Exception extends Exception {
}
public class Sample implements I1, I2{
@Override
public void x() throws I2Exception {
throw new I2Exception();
}
@Override
public void x() throws I1Exception {
throw new I1Exception();
}
}
Run Code Online (Sandbox Code Playgroud)
当然,异常不是方法签名的一部分,因此编译器抱怨第二种方法是重复的.
另一方面
@Override
public void x() throws I1Exception, I2Exception …
Run Code Online (Sandbox Code Playgroud) Quartz 2.x 文档说
所以cron表达式可以这么简单:****?*或更复杂,如:0/5 14,18,3-39,52*?JAN,MAR,SEP MON-FRI 2002-2010
但是,如果我尝试
System.out.println(org.quartz.CronExpression.isValidExpression("* * * * ? * *"));
Run Code Online (Sandbox Code Playgroud)
它说
false
Run Code Online (Sandbox Code Playgroud)
为什么?
isValidExpression的Javadoc是http://quartz-scheduler.org/api/2.2.1/org/quartz/CronExpression.html
PS.这个问题不是重复验证cron表达式在Java中是否有效
谁能告诉我为什么 mysql 不使用“playerLead_status_INDEX”索引?
CREATE TABLE `bcs_player_lead`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(100) DEFAULT NULL,
`last_name` varchar(100) DEFAULT NULL,
`email_id` varchar(100) DEFAULT NULL,
`city` varchar(100) DEFAULT NULL,
`state` varchar(100) DEFAULT NULL,
`country` varchar(100) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`status` int(11) DEFAULT NULL COMMENT '1-New,2-invitation send',
PRIMARY KEY (`id`),
KEY `playerLead_status_INDEX` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=510 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
EXPLAIN SELECT email_id,id,NULL,first_name,last_name,NULL,state,city,NULL,(2) as type FROM bcs_player_lead WHERE status='1'
id|select_type|table |type|possible_keys |key |key_len |ref |rows |Extra
1 |SIMPLE |bcs_player_lead |ALL |playerLead_status_INDEX|{null}|{null}|{null}| 第458话
bcs_player_lead …
我有一个跟踪交易的表.
该表设置为:
transactions:
id, account_id, budget_id, points, type
Run Code Online (Sandbox Code Playgroud)
我需要返回每个budget_id的点数之和,其中type ='allocation'和point之和,其中type ='issue'
我知道如何在一个查询中执行每个操作,但不能同时执行.
预期结果集:
budget_id allocated issued
434 200000 100
242 100000 5020
621 45000 3940
Run Code Online (Sandbox Code Playgroud) 我猜这是一个设计模式问题。
我想将几个操作(输入+处理逻辑+输出)建模为实现某些IOperation接口的类。
每个操作可以具有不同的输入参数和不同的输出参数。
我可以使用每个构造函数为每个操作指定不同的输入。
但是我也想以正交的方式为每个类获取不同的输出,而不必将接口强制转换为具体的类。
显而易见的方法是[1]强制转换为具体的类并调用返回所需结果的特定方法,或者[2]将结果包装到某些OperationResult对象中,而该对象还需要向下转换或一些元数据信息+提取器代码。
我想避免处理反射或贬低或元数据解释。
Java中是否有针对这种情况的已知设计?有什么好的方法呢?
更新-@Laf,这里有一些具体的例子。我想提取“ c”
interface IOperation{
void execute();
}
public class AddOp implements IOperation{
private int a;
private int b;
private int c;
public AddOp(int a, int b){
this.a = a;
this.b = b;
}
@Override
public void execute() {
this.c = this.a + this.b;
}
}
public class AndOp implements IOperation{
private boolean a;
private boolean b;
private boolean c;
public AndOp(boolean a, boolean b){
this.a = a;
this.b = b;
}
@Override …
Run Code Online (Sandbox Code Playgroud)