小编aro*_*oth的帖子

JPA/Hibernate - 通过超类查询时如何确定子类类型?

我刚刚注意到 Hibernate 中的这种行为,并发现它有点令人惊讶(以一种受欢迎的方式)。我有一个名为的实体类型SyncItem,它充当许多其他实体的超类。继承策略设置为InheritanceType.JOINED,超类中的所有字段都有一个表,而子类表仅包含子类中添加的任何内容的字段,以及对超类表的引用。

例如,我的SyncItem表格如下所示:

mysql> describe syncItems;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| hidden     | bit(1)       | NO   |     | NULL    |                |
| title      | varchar(255) | NO   |     | NULL    |                |
| createDate | datetime     | NO   |     | NULL    |                |
| modifyDate | datetime     | YES …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

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

Heroku - 我可以从Procfile中调用Maven吗?

我正在调查Heroku作为一个平台,我正在尝试使用基本的Java webapp来运行它.webapp已经构建并运行Maven(使用Tomcat和cargo-maven-plugin),所以我认为这应该是轻而易举的,因为Heroku使用Maven来管理其安装/部署任务.

然而事实并非如此,因为我无法让事情真正启动.我Procfile的内容如下:

web: sh ./startServer-heroku.sh
Run Code Online (Sandbox Code Playgroud)

startServer-heroku.sh只是:

mvn clean install cargo:start -Dcargo.maven.wait=true
Run Code Online (Sandbox Code Playgroud)

当我使用foreman start命令在本地测试时,这可以正常工作,如Heroku教程文档中所述.但是当我在实际的Heroku服务器上尝试它时,我得到以下日志消息:

2011-11-09T02:30:27+00:00 heroku[web.1]: State changed from created to starting 
2011-11-09T02:30:27+00:00 heroku[slugc]: Slug compilation finished 
2011-11-09T02:30:33+00:00 heroku[web.1]: Starting process with command `sh ./startServer-heroku.sh` 
2011-11-09T02:30:33+00:00 app[web.1]: ./startServer-heroku.sh: 1: mvn: not found 
2011-11-09T02:30:33+00:00 heroku[web.1]: Process exited 
2011-11-09T02:30:34+00:00 heroku[web.1]: State changed from starting to crashed
Run Code Online (Sandbox Code Playgroud)

似乎mvn无法在系统上找到PATH,因此命令失败.

可以mvn从Heroku 调用Procfile吗?是否有任何具有明确的命令列表的地方Procfile

deployment heroku maven

5
推荐指数
2
解决办法
4361
查看次数

为什么android.os.Bundle是最后一堂课?

我最近遇到了一些问题android.os.Bundle,我希望通过简单地扩展类并使其更松散类型来修复.我遇到的具体问题是:

W/Bundle  ( 6782): Key access_token expected byte[] but value was a java.lang.String.  The default value <null> was returned.
W/Bundle  ( 6782): Attempt to cast generated internal exception:
W/Bundle  ( 6782): java.lang.ClassCastException: java.lang.String
W/Bundle  ( 6782):  at android.os.Bundle.getByteArray(Bundle.java:1305)
Run Code Online (Sandbox Code Playgroud)

当然,从转换Stringbyte[]是小事,所以我的想法是只拥有Bundle它是否在寻找一个自动执行此转换byte[],但找到一个String替代.这是愚蠢的,它并没有做到这一点已经(而且它有特定的getter和setter的几乎每一个基本类型和几个不同的Object类型,而不是普通的那些只是在以下方面的工作Object,或在最坏的情况Number,StringParcelable)在我看来.

但无论如何,我很快发现我无法通过扩展解决问题Bundle,因为它已被声明final.这有什么已知/具体原因吗?还有其他类android.os没有final,那么Bundle值得分配的是什么呢?

另外,关于如何解决这个问题的任何想法?一个包装类已经没有了,因为它没有共同interface的实现(实际导致问题的代码是第三方库的一部分,因此我不能只更新它直接引用包装类).

我想这留下了唯一的选择,寻找代码中的所有位置,恰好为String第三方代码期望作为字节数组传递的东西设置值.

java android

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

无法使用 SLF4J 禁用石英调度程序日志记录

将quartz-scheduler添加到项目后,Tomcat的服务器日志会收到以下垃圾邮件:

[INFO] [talledLocalContainer] 12:15:06.319 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - 批量获取0个触发器

我正在尝试禁用该日志消息,该消息每 25 秒左右重复一次。我已经回答过同一问题的许多其他答案,例如:

...建议的方法都不起作用。

我在 中声明了以下依赖项pom.xml

    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.5</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我已将以下log4j.properties设置添加到我的项目中:

log4j.rootLogger=OFF
log4j.logger.quartz=OFF
log4j.logger.o.quartz=OFF
log4j.logger.org.quartz=OFF
Run Code Online (Sandbox Code Playgroud)

...还有以下内容simplelogger.properties

org.slf4j.simpleLogger.defaultLogLevel=error
Run Code Online (Sandbox Code Playgroud)

除了尝试链接答案之一建议的编程解决方案之外,该解决方案还应禁用所有日志记录,大致如下:

List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
    logger.setLevel(Level.OFF);
}
Run Code Online (Sandbox Code Playgroud)

这似乎禁用了除了石英运行时的日志消息 之外的所有内容。

有没有办法摆脱quartz 中的日志消息,而不需要修改quartz 源代码来删除它?

java logging slf4j quartz-scheduler maven

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

添加第二个节点后 Cassandra 中持续超时

我正在尝试将相当大的数据量(约 4100 万行)从 SQL 数据库迁移到 Cassandra。我之前已经使用一半的数据集进行了试运行,一切都完全按照预期进行。

问题是,现在我正在尝试完整迁移,Cassandra 不断抛出超时错误。例如:

[INFO] [talledLocalContainer] com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1:10112 (com.datastax.driver.core.exceptions.DriverException: Timed out waiting for server response))
[INFO] [talledLocalContainer]   at com.datastax.driver.core.exceptions.NoHostAvailableException.copy(NoHostAvailableException.java:84)
[INFO] [talledLocalContainer]   at com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:289)
[INFO] [talledLocalContainer]   at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:205)
[INFO] [talledLocalContainer]   at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:52)
[INFO] [talledLocalContainer]   at com.mycompany.tasks.CassandraMigrationTask.execute(CassandraMigrationTask.java:164)
[INFO] [talledLocalContainer]   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
[INFO] [talledLocalContainer]   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
[INFO] [talledLocalContainer] Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1:10112 (com.datastax.driver.core.exceptions.DriverException: Timed out waiting for server response))
[INFO] [talledLocalContainer]   at com.datastax.driver.core.RequestHandler.sendRequest(RequestHandler.java:108)
[INFO] [talledLocalContainer] …
Run Code Online (Sandbox Code Playgroud)

java timeout cassandra

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

SOAP,WCF和消息签名

我有一个Java(基于JAX-WS)的SOAP客户端,试图与基于(第三方)WCF的服务器进行通讯。我发现这里表达观点非常准确。但是目标仍然存在。

长话短说,我可以从服务器中哄骗有效的“安全上下文令牌”,但是却挂在消息签名问题上(我相信)。

服务器似乎期望hmac-sha1使用客户端/服务器秘密密钥(PSHA1算法)使用身份验证代码对消息进行签名。很公平。但是,JAX-WS似乎要使用rsa-sha1X509证书来签名出站消息(服务器不喜欢),并且似乎仅在提供hmac-sha1a 时才使用UsernameToken(服务器也不喜欢)。

因此,我尝试从SOAPHandler实现中手动签名出站SOAP消息。客户端发送以获取安全上下文令牌的请求如下所示:

<t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
    <t:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</t:TokenType>
    <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
    <t:Entropy>
        <t:BinarySecret Type="http://schemas.xmlsoap.org/ws/2005/02/trust/Nonce">NzM1MDZjYWVkMTEzNDlkNGEyODY0ZDBlMjlkODEyMTM=</t:BinarySecret>
    </t:Entropy>
    <t:KeySize>256</t:KeySize>
</t:RequestSecurityToken>
Run Code Online (Sandbox Code Playgroud)

服务器发回的令牌如下所示:

<t:RequestSecurityTokenResponse xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
    <t:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</t:TokenType>
    <t:RequestedSecurityToken>
        <c:SecurityContextToken xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc" u:Id="uuid-106bdbae-76e5-4195-b5d0-cc1c1a7a813e-13">
            <c:Identifier>urn:uuid:c0be4929-da8d-4955-8e13-b25aa7a37217</c:Identifier>
        </c:SecurityContextToken>
    </t:RequestedSecurityToken>
    <t:RequestedAttachedReference>
        <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <o:Reference ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" URI="#uuid-106bdbae-76e5-4195-b5d0-cc1c1a7a813e-13" />
        </o:SecurityTokenReference>
    </t:RequestedAttachedReference>
    <t:RequestedUnattachedReference>
        <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <o:Reference URI="urn:uuid:c0be4929-da8d-4955-8e13-b25aa7a37217" ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" />
        </o:SecurityTokenReference>
    </t:RequestedUnattachedReference>
    <t:RequestedProofToken>
        <t:ComputedKey>http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1</t:ComputedKey>
    </t:RequestedProofToken>
    <t:Entropy>
        <t:BinarySecret u:Id="uuid-106bdbae-76e5-4195-b5d0-cc1c1a7a813e-14" Type="http://schemas.xmlsoap.org/ws/2005/02/trust/Nonce">dssunihZGy2dnnDHV9PMe3vU3lg/kKKZQkFohvGvCAk=</t:BinarySecret>
    </t:Entropy>
    <t:Lifetime>
        <u:Created>2016-04-08T04:11:54.392Z</u:Created>
        <u:Expires>2016-04-08T19:11:54.392Z</u:Expires>
    </t:Lifetime>
    <t:KeySize>256</t:KeySize>
</t:RequestSecurityTokenResponse>
Run Code Online (Sandbox Code Playgroud)

BinarySecret使用PSHA1以下方法组合客户端和服务器密钥:

private …
Run Code Online (Sandbox Code Playgroud)

java wcf soap soap-client

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

最新的Android更新会禁用电池优化白名单吗?

TL; DR

Android 7.1.2的“ 2017年6月5日”安全更新是否导致Android开始忽略电池优化白名单(即让应用程序禁用“打ze”模式的功能)?

如果是这样,如果应用程序需要持续保持CPU和wifi的使用情况,那么现在该如何通过编程方式禁用“打ze”模式?

语境

我有一个Android应用程序,它支持将本地音频文件投射到联网的Chromecast接收器(使用嵌入式HTTP服务器将文件内容流式传输到接收器)。

为了在Android M上实现此功能(就在设备投射音频时没有使Chromecast会话掉落,否则处于空闲状态),我不得不在此答案中使用该方法来禁用打ze模式。

具体来说,AndroidManifest.xml我有:

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
Run Code Online (Sandbox Code Playgroud)

...,只要建立Chromecast会话,就会执行以下代码:

if (Build.VERSION.SDK_INT >= 23) {
    String packageName = context.getPackageName();
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    if (! pm.isIgnoringBatteryOptimizations(packageName)) {
        //reguest that Doze mode be disabled
        Intent intent = new Intent();
        intent.setAction(
            Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
        intent.setData(Uri.parse("package:" + packageName));

        context.startActivity(intent);
    }

}
Run Code Online (Sandbox Code Playgroud)

...并且在Chromecast播放处于活动状态时,我还以标准方式获取唤醒/ wifi锁定:

PowerManager powerManager = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myapp-cast-server-cpu");
wakeLock.acquire();

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiLock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "myapp-cast-server-net");
wifiLock.acquire(); 
Run Code Online (Sandbox Code Playgroud)

该应用程序出现在电池白名单中,而就在几周前,这一切都运行良好。但是,该应用程序现在被打ze睡模式捕获。

测试设备没有改变;这是运行Android …

java android media-player chromecast android-doze

5
推荐指数
0
解决办法
1273
查看次数

CSS:具有半流体中心的三列布局

我正在尝试创建一个基本的3列布局.基本上中心柱应该是流动的,因为它应该扩展以消耗左右列未使用的任何空间.但是,它还需要固定min-width大约378像素.

有许多用于与一个完全流体中心柱创建3列布局,选项使用浮动.但是,到目前为止我遇到的每个预先打包的解决方案(以及我自己尝试过的解决方案)的问题是,随着页面宽度的减小,右列将在页面的中心列顶部出现太狭隘了.

如果可能的话,我想防止这种情况发生.理想情况下,一旦min-width被击中,右列应该保持原样,页面应该可以水平滚动.所以目标是:

  1. 3列布局,带有流体中心柱和固定宽度的左右柱.
  2. 中心柱,具有固定的最小宽度,以防止它变得太小.
  3. 一个右列,它尊重最小宽度,当窗口变得太小时,不会踩踏,浮动或包裹在中心列下方.

一个纯CSS的解决方案是首选,但如果有一个简单的方法来使用一些聪明的JavaScript,我也不反对这种方法.

html css layout css3

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

Java:基本数学错误?

我必须在这里做一些根本错误的事情.我的代码非常简单:

private static final long MILLIS_PER_YEAR = 1000 * 60 * 60 * 24 * 365;

//...

public long getAge() {
    long millis = System.currentTimeMillis() - this.getBirthdate().getTime();
    System.out.println("Computed age:  " + (millis / MILLIS_PER_YEAR) + ", birthdate=" + this.getBirthdate() + ", birthdateMillis=" 
            + this.getBirthdate().getTime() + ", now=" + new Date() + ", nowMillis=" + System.currentTimeMillis() 
            + ", elapsedMillis=" + millis);
    return millis / MILLIS_PER_YEAR;
}
Run Code Online (Sandbox Code Playgroud)

...但它会给出一些完全不正确的输出:

Computed age:  248, birthdate=2001-01-01 10:00:00.0, birthdateMillis=978307200000, now=Fri Aug 10 16:56:48 EST 2012, nowMillis=1344581808173, elapsedMillis=366274608173 …
Run Code Online (Sandbox Code Playgroud)

java time date

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

iOS - 从套接字获取CFReadStream/CFWriteStream

我正在尝试为iOS库添加一些简单的点对点连接功能.传出连接的编码很简单; 调用CFStreamCreatePairWithSocketToHost连接到远程主机并设置用于从/向其读/写的流.很简单.

但是,我找不到一个等效的简单方法来设置套接字来监听/接受传入的连接.于是我又回到基础知识和使用socket(),bind(),listen(),并accept()实现低级别的连接处理,这里的例子后,大部分图案:

http://www.pcs.cnu.edu/~dgame/sockets/server.c

这一切都很好,但现在我能够接受传入的连接,我想知道如何创建CFReadStreamCFWriteStream实例来管理它们.有这么简单的方法吗?

顺便说一句,我知道CocoaAsyncSocket存在一个支持异步服务器套接字的库,但我真的对异步解决方案不感兴趣.

sockets networking ios

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