小编Dea*_*lze的帖子

如何关闭com.sun.net.httpserver.HttpServer?

嵌入在JDK 6中的Http Server是开发Web服务的一个很大的帮助,但是我遇到了我发布了一个Endpoint然后代码崩溃并让服务器运行的情况.

一旦丢失对它的引用(或已发布的端点),如何关闭嵌入式服务器?

java jdk1.6 com.sun.net.httpserver

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

Java Regular Expression用于查找特定长度的多行

我正在尝试使用Java regexp来匹配跨越多行的模式.该模式有一行以'A'开头,后跟正好50个字符,然后是一行或多行以'B'开头,后跟正好50个字符:

A...    //  exactly 50 chars after the A
B...
B...
Run Code Online (Sandbox Code Playgroud)

但是,Java正则表达式似乎并不支持这一点.

这是一个适用于A和B一行的正则表达式:

A.{50}[\\n[\\n\\r]]B.{50}[\\n[\\n\\r]]
Run Code Online (Sandbox Code Playgroud)

这是相同的正则表达式修改,以找到一个或多个B行:

A.{50}[\\n[\\n\\r]][B.{50}[\\n[\\n\\r]]]+
Run Code Online (Sandbox Code Playgroud)

但是,此正则表达式仅查找第一个B行上的前导B字符.

[\\n[\\r\\n]]用来处理DOS和UNIX换行.启用MULTILINE模式不会影响结果.

问题似乎是当我使用带有'+'的括号将B行的正则表达式转换为可捕获多行的字符类时.

有没有关于Java regexp的东西,不允许'.' 字符或花括号来指定精确的行长度?

java regex

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

如何判断我的EntityManager是使用JTA还是RESOURCE_LOCAL数据源?

我有一个实用程序类,如下所示.我希望能够将此类与RESOURCE_LOCAL或JTA持久性单元一起使用.如果我将persistence.xml从JTA更改为RESOURCE_LOCAL,则不必更改代码.

我尝试使用EntityManager.getTransaction()来查看是否存在活动事务,但是如果正在使用JTA,则调用getTransaction()会抛出异常.我可以使用try/catch包围对getTransaction()的调用,但我不想为此采用异常处理.EntityManager.getProperties()不显示任何指示JTA或RESOURCE_LOCAL的内容

我需要一些方法来告诉EntityManager(或EntityManagerFactory)在下面的代码中使用什么类型的持久性单元.

public class CredentialsUtil {

public static final String VGBD_PU = "VGDBpu";
static Logger logger = Logger.getLogger(CredentialsUtilStatic.class);
static EntityManagerFactory emf = Persistence.createEntityManagerFactory(VGBD_PU);
public static final String sharedKey="pgpsympwd";



public static String getPassword(String username) {

    String selectStr = "select pgp_sym_decrypt(pgpsympassword, '" + sharedKey + "') from credentials where username='" + username + "'";

    EntityManager em =null;
    String password = "";

    try {
        em = emf.createEntityManager();

        java.util.Map<java.lang.String,java.lang.Object> propMap = em.getProperties();
        logger.info(propMap.keySet().size() + " properties");

        for (String key : propMap.keySet())
            logger.info(key + …
Run Code Online (Sandbox Code Playgroud)

jpa jta entitymanager

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

带有m2e的Eclipse Indigo在多模块项目中找不到maven依赖项

我使用Indigo和m2e 1.0创建了一个多模块项目.其中一个子模块依赖于另一个.这一切都在maven下正确构建.

但是,Eclipse无法从依赖项.jar中找到此模块使用的任何类.项目属性显示Maven依赖项下的工件,但它不显示实际的.jar文件本身.

我为此项目添加了Maven菜单的依赖项.

.project和.classpath在某些时候自动生成.我没有必要运行mvn eclipse:eclipse或mvn eclipse:m2e(或者m2e的目标)..classpath中没有依赖的.jar,但它确实有org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER.

我已经尝试了Maven菜单下的所有选项(更新依赖项,更新配置)并刷新项目.我已关闭并重新打开Eclipse.它仍然显示错误.

这使得Eclipse作为多模块项目中的Java编辑器毫无价值.我可以在.classpath中手动添加依赖项.jar,但这违背了使用m2e集成Eclipse和Maven的目的.

在Eclipse中有这个解决方案吗?

谢谢.

eclipse m2e

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

使用 Maven 创建一个包含 JNLP 的 jar-with-dependencies.jar 的 .war 文件

我有一个 Maven 项目,它将 Swing 客户端构建为 jar-with-dependencies.jar 文件。我想使用 Java Web Start 来分发这个 my.gui-0.1.0-jar-with-dependencies.jar 文件。为此,我创建了一个单独的 Maven 项目,该项目使用 JNLP 工件构建了一个 .war 文件。我需要在这个 .war 文件中包含 my.gui-0.1.0-jar-with-dependencies.jar。

我无法确定 jar-with-dependencies.jar 文件的 Maven 坐标。如果我将 Maven 坐标用于 GUI 项目,它会将 GUI 项目的依赖 .jar 文件放在 WEB-INF/lib 中,这不是我想要的。我需要在 .war 文件中包含 my.gui-0.1.0-jar-with-dependencies.jar 文件本身。(我想它可能在 WEB-INF/lib 中。)

我如何告诉 Maven 依赖项是 jar-with-dependencies.jar 文件本身?

如果除了告诉 Maven 包含 jar-with-dependencies.jar 本身的机制之外,还有另一种方式也可以工作。jar-with-dependencies.jar 必须位于我为支持 Java Web Start 而创建的 .war 文件中。

我知道有一个 Maven Webstart 插件,但这看起来像是一场噩梦,所以我只是自己构建一个 .war 文件,其中包含必要的 JNLP 工件。

java jnlp java-web-start maven

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

使用JAX-WS调用异步Web服务:使用wsimport支持异步还是自己滚动?

有一个由年轻的杨优秀的文章,介绍了如何使用的wsimport创建具有异步Web服务调用Web服务客户端工件.异步要求WSDL具有标记

<enableAsyncMapping>true</enableAsyncMapping>

在其绑定部分.如果您使用自下而上的方法和JAX-WS带注释的Java类,则无法直接在WSDL中执行此操作,因为WSDL是Web服务器上生成的工件.相反,当在WSDL上执行wsimport时,您使用Ant或Maven等构建工具来包含此绑定.

生成的客户端工件具有返回a的异步方法调用

Future<?>
Run Code Online (Sandbox Code Playgroud)

或者a

Response
Run Code Online (Sandbox Code Playgroud)

这是一个未来.

阅读杨的文章后我的问题是为什么不只是使用Executors和Futures滚动我自己的异步Web服务调用.wsimport创建的工件是否提供了一些我无法通过自己的方法看到的优势?

如果有人对这两种方法都有经验或见解,我将非常感谢您的反馈.

asynchronous web-services jax-ws jax-ws-customization

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

装饰模式的GoF解释令人困惑(或者只是错误的)

我正在讨论一些设计模式问题,我查看了GoF中Decorator模式的定义和示例.它说

动态地将附加职责附加到对象.装饰器为子类化提供了灵活的替代扩展功能.

它给出了使用继承的装饰器的例子,但绝对不是动态的.

NetObjectives犯同样的错误:

http://www.netobjectives.com/PatternRepository/index.php?title=TheDecoratorPattern

关于装饰器的Portland Pattern Repository讨论表明,对于什么是装饰器而不是装饰器存在混淆

http://c2.com/cgi/wiki?DecoratorPattern

维基百科通过注意装饰器内的委托应该在构造时设置(其他DI技术也可以)来解释这个矛盾

http://en.wikipedia.org/wiki/Decorator_pattern

Decorator模式的所有示例(在Java或C++中)都需要通过继承或通过实现接口来构造静态构造.然而,GoF中的解释说,附加职责是动态附加的.但这完全是错的.

PPR上的评论讨论了可以在运行时添加方法的动态语言,但Java和C++不是动态的,而Decorator的解释并不是说它仅限于Groovy和Lisp等动态语言.

Decorator的正确解释是不是说在不支持动态方法创建的语言中,涉及静态和动态构造?

GoF的解释完全错误,如他们自己的例子所示,或者我误解了什么?

design-patterns

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

Docker构建挂起。我怎么看发生了什么事?

下载完成后,此Dockerfile会挂起:

FROM ubuntu:18.04
MAINTAINER Dean Schulze

ENV JS_CE_VERSION 7.1.0
ENV JS_CE_HOME /opt/jasperreports-server-cp-${JS_CE_VERSION}
ENV PATH $PATH:${JS_CE_HOME}

RUN apt-get update && apt-get install -y wget \
&& wget --progress=bar:force:noscroll -O TIB_js-jrs-cp_${JS_CE_VERSION}_linux_x86_64.run https://sourceforge.net/projects/jasperserver/files/JasperServer/JasperReports%20Server%20Community%20Edition%20${JS_CE_VERSION}/TIB_js-jrs-cp_${JS_CE_VERSION}_linux_x86_64.run \
&& chmod a+x TIB_js-jrs-cp_${JS_CE_VERSION}_linux_x86_64.run \
&& /TIB_js-jrs-cp_${JS_CE_VERSION}_linux_x86_64.run --mode unattended --jasperLicenseAccepted yes --postgres_password Postgres1 --prefix ${JS_CE_HOME} \
&& rm TIB_js-jrs-cp_${JS_CE_VERSION}_linux_x86_64.run \
&& rm -rf ${JS_CE_HOME}/apache-ant ${JS_CE_HOME}/buildomatic \
${JS_CE_HOME}/docs ${JS_CE_HOME}/samples ${JS_CE_HOME}/scripts \
&& apt-get clean

EXPOSE 8080

CMD ctlscript.sh start && tail -f /dev/null
Run Code Online (Sandbox Code Playgroud)

输出的最后几行是

Resolving superb-dca2.dl.sourceforge.net (superb-dca2.dl.sourceforge.net)... 209.61.193.20
Connecting to …
Run Code Online (Sandbox Code Playgroud)

docker

4
推荐指数
3
解决办法
4972
查看次数

autoreconf 失败并显示“可能未定义的宏:AM_PATH_GLIB_2_0”

在修改此源代码时,我收到此错误autoreconf

$ autoreconf
configure.ac:240: warning: macro 'AM_PATH_GLIB_2_0' not found in library
configure.ac:246: warning: macro 'AM_PATH_GTK_2_0' not found in library
configure.ac:240: error: possibly undefined macro: AM_PATH_GLIB_2_0
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:246: error: possibly undefined macro: AM_PATH_GTK_2_0
autoreconf: /usr/bin/autoconf failed with exit status: 1
Run Code Online (Sandbox Code Playgroud)

中的行configure.ac是:

AM_PATH_GLIB_2_0([2.7.1], [ac_glib_test="yes"], [ac_glib_test="no"], [gthread])
Run Code Online (Sandbox Code Playgroud)

这是我使用的 autoconf/automake 工具版本的问题,还是其他原因?

谢谢。

c automake autoconf autoreconf slurm

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

如何使用 REST API 在 Keycloak 中创建带密码的用户?

我可以使用 REST API 创建一个新用户:

http://localhost:8080/auth/admin/realms/myRealm/users

但用户没有密码。在这篇文章这篇文章之后,我向 json 添加了凭据,如下所示

{
  "firstName":"functest",
  "lastName":"functest",
  "email":"me@gmail.com",
  "enabled":true,
  "username":"functest",
  "credentials":[{"type":"password","value":"abc123","temporary":false}]
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用用户名和密码登录时,它失败了。当我查看用户界面中的用户凭据时,它确实显示了一行“类型” password,但用户标签为空白。

如何使用 REST API 创建具有密码的用户?

rest keycloak keycloak-rest-api

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