小编Mar*_*ijk的帖子

连接AppEngine数据存储区和搜索API

我想知道连接数据存储区和搜索API的最佳方法是什么.

我正在寻找的是每当我创建一个实体(例如产品)时,该产品将被添加到搜索索引中.在更新时,索引也应该更新,并且当删除产品时 - 你猜对了 - 应该从搜索索引中删除产品.

在搜索产品时,我想对产品索引进行全文搜索,但不是文档,而是需要真正的实体.可能我需要首先使用索引进行搜索,然后再次调用数据存储区?

最让我担心的是保持数据存储区和搜索索引同步.当然,通过搜索索引和数据存储区不仅会很麻烦,而且我觉得它也可能会给分页带来痛苦.

我想知道是否有些人已经"连接"了数据存储区并以这种方式搜索api以及结果是什么,也许还有一些最佳实践可用.appengine docs并没有说明这个领域.

java google-app-engine jpa gae-search google-cloud-datastore

11
推荐指数
1
解决办法
691
查看次数

Spring @RestController不返回纯文本响应

我正在尝试使用新的Spring 4.0 @RestController从控制器返回一个简单的文本响应:

@RestController
@RequestMapping(value = "/heartbeat")
public class HeartbeatController {

    private static final Logger logger = LoggerFactory.getLogger(HeartbeatController.class);

    @RequestMapping
    public String heartbeat() {
        logger.info("Received heartbeat!");
        return "I'm Alive!";
    }

    @RequestMapping(value = "/test", produces = MediaType.TEXT_PLAIN_VALUE)
    public String heartbeat2() {
        logger.info("Received heartbeat!");
        return "I'm Alive!";
    }
}
Run Code Online (Sandbox Code Playgroud)

当我访问/心跳然后我回来:

"I'm Alive!"
Run Code Online (Sandbox Code Playgroud)

结果包括双引号,我没想到的.

当我访问/ heartbeat/test然后我得到一个空响应,但我希望我活着!文本.

UPDATE

curl -i http://myserver.com/rest/heartbeat

HTTP/1.1 200 OK内容类型:application/json; charset = UTF-8服务器:开发/ 1.0日期:2013年12月17日星期二18:59:08 GMT缓存控制:无缓存过期:1990年1月1日星期五00:00:00 GMT内容长度:12

"我还活着!"

curl -i -H"Accept:application/json" http://myserver.com/rest/heartbeat HTTP/1.1 200 OK Content-Type:application/json; charset = UTF-8 Server:Development/1.0日期:星期二, 2013年12月17日19:01:12 GMT …

rest spring spring-mvc spring-4

11
推荐指数
2
解决办法
2万
查看次数

appengine-maven-plugin配置选项,如jvm标志

自版本1.7.4.Google App Engine的官方appengine-maven-plugin由Google发布.它有一个任务appengine:devserver来启动本地开发服务器.

这个插件似乎没有任何Maven配置选项.

我想知道我怎么能a)提供jvm标志b)禁用新版本检查(离线工作时)

请注意,到目前为止,我使用的是非官方的net.kindleit maven-gae-plugin,如:

<plugin>
    <groupId>net.kindleit</groupId>
    <artifactId>maven-gae-plugin</artifactId>
    <version>0.9.4</version>
    <configuration>
        <disableUpdateCheck>true</disableUpdateCheck>
        <javaAgent>${env.REBEL_HOME}/jrebel.jar</javaAgent>
        <jvmFlags>
            <jvmFlag>-noverify</jvmFlag>
            <jvmFlag>-Ddatastore.backing_store=${project.basedir}/local_db.bin</jvmFlag>
            <jvmFlag>-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20</jvmFlag>
            <jvmFlag>-Drebel.spring_data_plugin=true</jvmFlag>
        </jvmFlags>
        <wait>true</wait>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-tools-sdk</artifactId>
            <version>${com.google.appengine.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>${com.google.appengine.version}</version>
        </dependency>
    </dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)

java google-app-engine maven

10
推荐指数
3
解决办法
4156
查看次数

Google Cloud Endpoints Security(OAuth2)和自定义用户架构

我正在阅读与OAuth2 Security相关的Google Cloud Endpoints文档.我认为这种安全性是针对Google帐户的.

是否支持自定义用户架构进行身份验证?

我想要的是拥有使用Google Cloud Endpoints但针对用户的本地存储(App Engine)进行身份验证的客户端JS应用程序.

Google Clound端点是否适用于此或我是否需要编写自己的安全机制?

java oauth-2.0 google-cloud-endpoints

9
推荐指数
1
解决办法
598
查看次数

如何在没有组件扫描的情况下设置Spring Data JPA存储库

出于性能原因,我正在从组件扫描切换到明确声明我的bean.所以基本上我想删除@EnableJpaRepositories它扫描存储库.

我的存储库是扩展的标准接口JpaRepository.我如何申报我的存储库?

spring jpa spring-data spring-data-jpa

9
推荐指数
2
解决办法
2470
查看次数

pgAdmin 禁用登录对话框/自动登录

我正在使用 docker-compose 和以下脚本运行 pgAdmin:

version: "3.9"
services:
  postgres:
    image: "postgres:13"
    container_name: "postgres"
    environment:
      POSTGRES_PASSWORD: pwd
    ports:
      - "5432:5432"
    volumes:
      - ./initdb:/docker-entrypoint-initdb.d
  pgadmin:
    image: "dpage/pgadmin4"
    container_name: "pgadmin"
    environment:
      PGADMIN_DEFAULT_EMAIL: pgadmin@mycomp.com
      PGADMIN_DEFAULT_PASSWORD: secret
    links:
      - postgres:postgres
    ports:
      - 5050:80
Run Code Online (Sandbox Code Playgroud)

该脚本使用PGADMIN_DEFAULT_EMAILPGADMIN_DEFAULT_PASSWORD来更改默认的 pgAdmin 凭据。

然而,当我在开发机器上运行这个 docker 实例时,我想自动登录到 pgAdmin。

是否可以禁用登录/自动登录?

postgresql pgadmin docker docker-compose pgadmin-4

9
推荐指数
1
解决办法
4638
查看次数

Datanucleus警告:类在持久性单元中指定但未注释,因此忽略

启动我的应用程序时,我会在每个课程中看到此警告:

WARN  [DataNucleus.MetaData] - Class com.mycomp.MyClass was specified in persistence-unit myPersistenceUnit but not annotated, so ignoring
Run Code Online (Sandbox Code Playgroud)

该应用程序正确启动所以没有直接问题,但我想知道这个即将到来的形式,以及如何避免id.

我的persistence.xml看起来像:

<persistence-unit name="myPersistenceUnit">
    <provider>org.datanucleus.api.jpa.PersistenceProviderImpl</provider>
    <properties>
        <property name="datanucleus.ConnectionURL" value="appengine" />
        <property name="datanucleus.NontransactionalRead" value="true" />
        <property name="datanucleus.NontransactionalWrite" value="true" />
        <property name="datanucleus.appengine.datastoreEnableXGTransactions" value="true" />
        <property name="datanucleus.jpa.addClassTransformer" value="false" />
    </properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)

我正在使用Spring在Google App Engine上运行我的应用程序.

但我找不到警告的起源.似乎有些东西告诉我的应用程序对所有类进行一些检查.

PS:我正在定义我的entityManagerFactory,如下所示:

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
    entityManagerFactory.setPersistenceUnitName("myPersistenceUnit");
    entityManagerFactory.setPersistenceUnitPostProcessors(new ClasspathScanningPersistenceUnitPostProcessor("com.mycomp.domain"));
    return entityManagerFactory;
}
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏.

java google-app-engine spring jpa datanucleus

8
推荐指数
1
解决办法
8095
查看次数

如何使用Hamcrest(原始)自动装箱/加宽?

我遇到了https://code.google.com/p/hamcrest/issues/detail?id=130,为Hamcrest匹配器添加了一些糖语法.但这个想法遭到了Hamcrest开发者的拒绝.

任何其他聪明的想法,通过避免在longs后面输入L来使测试更具可读性?

@Test
public void test1() {
    int actual = 1;
    assertThat(actual, is(1));
}

@Test
public void test2() {
    long actual = 1L;
    assertThat(actual, is(1)); // fails as expected is <1> but result was <1L> 
    // assertThat(actual, is(1L)); off course works..
}

@Test
public void test3() {
    Long actual = new Long(1);
    assertThat(actual, is(1)); // fails as expected is <1> but result was <1L>
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

使用默认Java语言(==),标准junit assert(assertTrue)和hamcrest is()方法比较例如int和long时的差异.似乎奇怪的是,hamcrest doest不支持匹配/比较long vs int,其余的是.

@Test
public void test2() {
    long …
Run Code Online (Sandbox Code Playgroud)

java autoboxing hamcrest

8
推荐指数
1
解决办法
7790
查看次数

如何在提示中截断工作目录以显示第一个和最后一个文件夹?

我正在寻找一种方法来实现一个响应式工作目录,我至少想要显示第一个和最后一个文件夹.它应该基于终端中的可用.例如$(exprtput cols之类的东西- 35)}.

想象一下当前的工作目录是什么 ~/workspace/i/keep/my/projects/project1/src

然后我想显示提示,如:

~/workspace/../src

如果终端足够大我想拥有:

~/workspace/../project1/src

要么

~/workspace/../projects/project1/src

~/workspace/../my/projects/project1/src

所以前进.

如果有足够的地方,它甚至应该显示完整的路径.为了赢得空间,家庭目录应始终显示为~.

这是否可以在OSX上使用纯bash脚本?

macos bash prompt

8
推荐指数
1
解决办法
2156
查看次数

新的Spring Data JDK8 Jsr310JpaConverters无法自动运行?

我正在尝试使用Spring Data JPA 1.8新的jdk日期转换器.

在我的Spring Boot应用程序中,我添加了一个配置类,如:

@Configuration
@ComponentScan(basePackageClasses = LocalContainerEntityManagerFactoryBean.class)
@EnableJpaAuditing
public class DataConfig {
}
Run Code Online (Sandbox Code Playgroud)

这是如何org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters应用自动转换的建议.我也使用像org.springframework.data.jpa.domain.support和的直接包引用org.springframework.data.jpa.convert.threeten.

问题是jdk 8日期转换不会发生导致sql异常.

但是,当我手动将转换器应用于我的域类时,如:

@Convert(converter = Jsr310JpaConverters.LocalDateConverter.class)
private LocalDate birthdate;
Run Code Online (Sandbox Code Playgroud)

然后转换确实有效.

spring spring-data spring-data-jpa

8
推荐指数
1
解决办法
3358
查看次数