小编Leo*_*Leo的帖子

javax.mail.NoSuchProviderException:smtp

以下是我发送电子邮件的代码:

    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)

注意:

  1. 如果作为桌面应用程序执行,相同的代码.但是在tomcat上部署时抛出异常.
  2. 最新的mail.jar和smtp.jar被添加到库中.
  3. SMTP主机地址也是正确的.

如果有人可以指点我会有所帮助.

java email

6
推荐指数
1
解决办法
9932
查看次数

XMLInputFactory是线程安全的吗?

在对应用程序进行性能分析时,我注意到一遍又一遍地创建XMLInputFactory实例非常昂贵。在多个线程之间共享其实例是否安全?

Javadoc没有任何关于其线程安全性的信息,并且在互联网上搜索并不能给出明确的答案!

java xml stax java-7

5
推荐指数
1
解决办法
3576
查看次数

Primefaces - 如何获取CellEditEvent的列

我正在使用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)

java jsf primefaces jsf-2

5
推荐指数
1
解决办法
5919
查看次数

如何从Java字符串中删除ANSI控制字符(VT100)

我正在使用自动化,并使用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)?

java ansi jsch vt100

5
推荐指数
1
解决办法
3131
查看次数

使@Schedule仅在群集环境中运行一次

我有两个tomee实例聚集.

每个人都有一个注释方法

@Schedule(dayOfWeek = "*")
public void runMeDaily() {...}
Run Code Online (Sandbox Code Playgroud)

我想每天只运行一次这种方法.一天不两次(每个实例一个)

我可以使用此处描述的标志仅在一个WebLogic群集节点上运行@Scheduled任务?或者只选择一些节点,但我想知道是否有更优雅的方式来做到这一点.

这个问题与集群环境中的EJB3.1 @Schedule有些相关,但我没有使用JBOSS.(而且没有回答)

java quartz-scheduler java-ee tomee

5
推荐指数
1
解决办法
8394
查看次数

类使用相同的方法实现两个接口,但不同的检查异常

在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)

java exception-handling

4
推荐指数
2
解决办法
1288
查看次数

为什么Quartz说这个cron表达式无效?

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中是否有效

java quartz-scheduler

4
推荐指数
1
解决办法
994
查看次数

Mysql 索引不起作用

谁能告诉我为什么 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 …

mysql indexing

3
推荐指数
1
解决办法
7479
查看次数

需要返回两组具有两个不同where子句的数据

我有一个跟踪交易的表.

该表设置为:

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)

mysql sql

3
推荐指数
1
解决办法
255
查看次数

如何在Java中抽象不同的返回类型?

我猜这是一个设计模式问题。

我想将几个操作(输入+处理逻辑+输出)建模为实现某些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)

java design-patterns

2
推荐指数
1
解决办法
3311
查看次数