当设备未注册(应用程序已卸载)时,FCM HTTP v1 API应返回错误代码"UNREGISTERED".但是,API返回404"未找到请求的实体".
有没有人经历过这个?这是预期的吗?在文档中的任何地方都没有提到这一点.
当404错误并收到"未找到请求的实体"消息时,假设设备未注册是否安全?
以下是收到的错误的全部内容.
{
"error": {
"code": 404,
"message": "Requested entity was not found.",
"errors": [
{
"message": "Requested entity was not found.",
"domain": "global",
"reason": "notFound"
}
],
"status": "NOT_FOUND"
}
}
Run Code Online (Sandbox Code Playgroud)
例外:
Caused by: com.google.firebase.messaging.FirebaseMessagingException: Requested entity was not found.
at com.google.firebase.messaging.FirebaseMessaging.handleSendHttpError(FirebaseMessaging.java:266) ~[firebase-admin-5.9.0.jar:?]
Run Code Online (Sandbox Code Playgroud)
有关参考API文档:
https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages https://firebase.google.com/docs/reference/fcm/rest/v1/ErrorCode
我们有一个现有的生产数据库.我们决定使用liquibase进行所有进一步更新并创建任何新数据库(如开发或集成).
我们已经基于现有的生产模式创建了liquibase脚本(以创建任何新的数据库,如开发,集成等).在该脚本之上,我们还添加了两个更新.展望生产数据库的所有进一步更新将由liquibase完成.
如果我们在生产中执行liquibase,它将尝试完成所有已经存在的完整更改,这不应该发生,因为生产已经拥有除了两个新更新之外的所有内容.现在我们想使用liquibase将这两个更改单独更新为制作.
我们怎么做到这一点?
我们正在使用firebase云消息传递将推送通知发送到Android应用程序.
目前,为了测试推送通知,我们需要将消息发送到FCM服务器并等待消息到达设备.大多数时候设备需要很长时间才能从FCM服务器获取通知.
我可以看到下面的一些链接解释了使用adb broadcast命令向设备发送推送通知(此示例说明使用GCM框架发送消息,但我们使用FCM) 是否可以从adb shell/am命令行模拟GCM接收?我收到了一个错误
有没有类似的方法使用adb向具有FCM的设备发送推送通知?
android adb firebase google-cloud-messaging firebase-cloud-messaging
我有一个静态html文件"myhtml.html"存储在我的assets/html /目录中,这个html加载自定义字体(存储在assets/fonts /下),如下所示:
<style type="text/css">
@font-face {
font-family: 'MyFont';
src: url('file:///android_asset/fonts/myfont.ttf');
}
</style>
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码加载此html:
String html = getHtml(); // This method loads the myhtml.html from asset. This loads properly.
WebView webView = (WebView) findViewById(R.id.webbox);
WebSettings webSettings = webView.getSettings();
webSettings.setDefaultTextEncodingName("utf-8");
webSettings.setFixedFontFamily("fonts/myfont.ttf");
webView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "UTF-8", null);
Run Code Online (Sandbox Code Playgroud)
除了Android 4.2(API 17)之外,此代码适用于所有Android版本.
在Android 4.2中,加载了HTML但未加载自定义字体.
具有'in'表达式的JPA条件API转换为多个'OR'而不是'in'
例如
我的主要模特
public class Person {
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "department_id")
private Department department;
...
}
Run Code Online (Sandbox Code Playgroud)
多对一的关系
public class Department {
@Id
@Column(name="department_id")
private Integer departmentId;
@OneToMany(mappedBy="department")
private List<Person> person;
...
}
Run Code Online (Sandbox Code Playgroud)
在persistence.xml中定义了这两个模型(注意:它没有指定任何db方言)
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="primary" transaction-type="JTA">
<jta-data-source>java:openejb/Resource/jdbc/myDS</jta-data-source>
<class>com.xyz.Person</class>
<class>com.xyz.Department</class>
...
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
<properties>
<property name="openjpa.Log" value="${open.jpa.log}" />
<property name="openjpa.ConnectionFactoryProperties" value="printParameters=true" />
<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
以下是使用Criteria API构建查询的代码:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Person> criteriaQuery = cb.createQuery(Person.class);
Root<Person> personRoot = criteriaQuery.from(Person.class); …Run Code Online (Sandbox Code Playgroud) 我们在一个账户中有很多 AWS quicksight 报告,需要迁移到另一个账户。
在同一个账户中,我们可以使用仪表板的“另存为”功能来创建报告的副本,但是有没有办法从一个账户中导出分析并导入到另一个账户中?
目前,似乎只有我们的方法是在新帐户中从头开始重新创建所有报告,但有人有其他选择吗?
使用Spring云监听AWS SQS队列,如下所示:
@SqsListener(value = "${queue.name}", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void queueListener(String message, @Headers Map<String, Object> sqsHeaders) {
// code
}
Run Code Online (Sandbox Code Playgroud)
Spring配置:
<aws-messaging:annotation-driven-queue-listener
max-number-of-messages="10" wait-time-out="20" visibility-timeout="3600"
amazon-sqs="awsSqsClient" />
Run Code Online (Sandbox Code Playgroud)
AwsSqsClient:
@Bean
public com.amazonaws.services.sqs.AmazonSQSAsyncClient awsSqsClient() {
ExecutorService executorService = Executors.newFixedThreadPool(10);
return new AmazonSQSAsyncClient(new DefaultAWSCredentialsProviderChain(), executorService);
}
Run Code Online (Sandbox Code Playgroud)
这很好用.
在SQS客户端中配置了10个线程来处理这些消息,如上所示.这也工作正常,在任何时间点处理最多10条消息.
问题是,我无法弄清楚控制轮询间隔的方法.默认情况下,一旦所有线程都空闲,弹出轮询.
即考虑以下示例
与此同时,大约有25条消息被送到队列.在完成之前传递的所有3条消息之前,Spring不会轮询队列.从上面的例子来看,只有20分钟之后春季民意调查,尽管有7个线程仍然免费!
知道我们如何控制这种民意调查吗?即如果有任何线程空闲,则应该开始轮询,并且不应该等到所有线程都空闲
message-queue amazon-sqs amazon-web-services aws-sdk spring-cloud
突然间,我连续得到以下错误的选择查询.
Unable to enlist connection in transaction: enlistResource returns 'false'
Run Code Online (Sandbox Code Playgroud)
这似乎是从DBCP抛出的(https://commons.apache.org/proper/commons-dbcp/jacoco/org.apache.commons.dbcp2.managed/TransactionContext.java.html)
本质上,此代码调用javax.transaction.Transaction.enlistResource
查看API,它说"使用与目标Transaction对象关联的事务指定资源.如果资源已成功登记,则为true;否则为false."
我仍然不清楚为什么抛出这个异常.
技术堆栈:
数据源配置:
<Resource id="jdbc/myDS" type="javax.sql.DataSource">
dataSourceCreator = tomcat
jtaManaged = true
driverClassName = ${jdbc.driver}
url = ${jdbc.url}
username = ${jdbc.username}
password = ${jdbc.password}
initialSize = 5
maxActive = 100
maxIdle = 10
minIdle = 5
maxWait = 30000
validationQuery = SELECT 1
testOnBorrow = false
testOnReturn = false
testWhileIdle = true
timeBetweenEvictionRunsMillis = 1800000
numTestsPerEvictionRun = 2 …Run Code Online (Sandbox Code Playgroud) Java zipEntry.getSize()返回实际文件的大小,有时返回-1(尽管文件大小大于0)。
Java API文档说:“返回条目数据的未压缩大小;如果未知,则返回-1。”
不确定在什么情况下它将返回-1,即在什么情况下将未知?