小编Ant*_*oly的帖子

Maven - Java EE 6 Web Profile Javadocs

通过声明以下依赖项:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我可以使用Java EE 6项目所需的一切(Servlet 3.0,JPA 2,EJB,CDI等).问题是:Maven无法为依赖项下载Javadoc(或者至少m2eclipse"下载JavaDoc"功能不起作用),因此当我使用非常方便的代码完成功能时,Eclipse不会向我显示Javadoc.

我发现这篇文章特定于Servlet 3.0 API,Maven依赖Servlet 3.0 API?.

任何人都可以指出适用于每个API的解决方案吗?或者,任何人都可以提供一个虚拟指南来安装Java EE 6 Javadoc并将其链接到本地​​存储库中的javaee-web-api工件吗?

dependencies javadoc maven java-ee-6

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

使用本机Java SE 6 JAX-WS实现而不是JBoss WS堆栈

JBoss 6.0 Final附带了JBoss WS(默认情况下为Apache CXF堆栈),我知道我可以用JBossWS下载站点中相应的JBoss WS Native或Metro版本替换默认实现.

问题是,我有一个客户端jar库(不幸的是二进制文件),它使用了一些专有的SOAP Web服务.当我使用部署到JBoss的Web应用程序中的客户端API时,我遇到了大量间歇性SOAP故障(使用Apache CXF和JBoss Native堆栈进行测试).

由于从独立的jar文件(没有第三方JAX-WS实现)运行时,相同的Web服务似乎工作正常,所以我考虑禁用JBoss WS堆栈,转而使用Java SE提供的本机JAX-WS RI堆栈6.

我知道JBoss Metro WS堆栈应该与Java SE 6附带的内容足够接近,但如果我能使用本机Java SE版本,我将非常感激.

那么,这可行吗?有人指出了方向吗?

java jax-ws classloader jbossws jboss6.x

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

最终不可修改的套件是否安全?

的javadoc并不清楚这一点:是不可修改的集合线程安全的?或者我应该担心内部状态并发问题?

Set<String> originalSet = new HashSet<>();
originalSet.add("Will");
originalSet.add("this");
originalSet.add("be");
originalSet.add("thread");
originalSet.add("safe?");
final Set<String> unmodifiableSet = Collections.unmodifiableSet(originalSet);
originalSet = null; // no other references to the originalSet

// Can unmodifiableSet be shared among several threads?  
Run Code Online (Sandbox Code Playgroud)

我偶然发现了一段代码,其中一个静态的,只读的Set是针对多个线程共享的......原作者写了这样的东西:

mySet = Collections.synchronizedSet(Collections.unmodifiableSet(originalSet));
Run Code Online (Sandbox Code Playgroud)

然后每个线程使用以下代码访问它:

synchronized (mySet) {
  // Iterate and read operations
}
Run Code Online (Sandbox Code Playgroud)

通过这种逻辑只有一个线程可以同时对设置进行操作.所以我的问题是,对于一个不可改变的集合,使用诸如操作时,每个,contains,size,等等,我真的需要同步访问?

java collections thread-safety

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

多个构造函数与静态Create方法

作为"javaland"程序员,我习惯于工厂方法和多个构造函数.我对工厂模式的主要用途是将决策延迟到运行时,在实例化期间执行某种副作用或限制或隐藏具体类型.当我深入研究C#时,我看到越来越多的API混合了多个构造函数和静态Create方法.

例如,XmlReaderXmlTextReader.XmlWriterXmlTextWriter.

我的问题是:

  1. Create方法有什么特别的东西,或者它只是一个约定(比如java :) getInstance
  2. 关于工厂方法与构造函数的C#有哪些好的做法?例如,为什么有几个Create方法接受XmlWriterSettings参数XmlWriter而没有构造函数XmlTextWriter具有相同的目的?而另一方面,为什么只有构造函数接受Encoding参数呢?
  3. 我想主要的问题是,在惯用的C#中,何时建议公开工厂方法以及何时公开构造函数?

c# oop

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

如何在没有传输编码的情况下发送HTTP响应:chunked?

我有一个响应Twilio API的Java Servlet.似乎Twilio不支持我的回复使用的分块转移.我该如何避免使用Transfer-Encoding: chunked

这是我的代码:

// response is HttpServletResponse
// xml is a String with XML in it
response.getWriter().write(xml);
response.getWriter().flush();
Run Code Online (Sandbox Code Playgroud)

我使用Jetty作为Servlet容器.

java servlets jetty chunked-encoding

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

JPA 相当于 Hibernate 的 @Generate(GenerationTime.ALWAYS)

当数据库中生成实体的某些非关键字段时(例如,通过触发器),调用persist将不会带回数据库刚刚生成的值。实际上,这意味着您可能需要或refresh之后的实体(当启用 2 级缓存时,您甚至可能需要该实体)。persistmergeevict

@GeneratedHibernate 有一个处理生成属性的自定义注释。

// Refresh property 1 on insert and update
@Generated(GenerationTime.ALWAYS) 
@Column(insertable = false, updatable = false)
private String property1;

// Refresh property 2 on insert
@Generated(GenerationTime.INSERT) 
@Column(insertable = false)
private String property2;
Run Code Online (Sandbox Code Playgroud)

JPA@GeneratedValue仅适用于主键属性。

@Generated所以,我的问题是JPA API是否有替代品(也许是 2.1)?如果没有,处理非关键数据库生成字段的最佳实践是什么?

java jpa

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

为变量分配下划线.下划线做什么?

最近我遇到了这样的代码:

var myVariable: variableKind = _
Run Code Online (Sandbox Code Playgroud)

这似乎是一种分配null方式myVariable.

_在这种情况下,任何人都可以解释背后的理由吗?分配_null变量之间有什么区别?

scala

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

流:过滤子项,返回父项

假设一个类MyClass:

public class MyClass {

    private final Integer myId;
    private final String myCSVListOfThings;

    public MyClass(Integer myId, String myCSVListOfThings) {
        this.myId = myId;
        this.myCSVListOfThings = myCSVListOfThings;
    }

    // Getters, Setters, etc
}
Run Code Online (Sandbox Code Playgroud)

这个流:

final Stream<MyClass> streamOfObjects = Stream.of(
        new MyClass(1, "thing1;thing2;thing3"),
        new MyClass(2, "thing2;thing3;thing4"),
        new MyClass(3, "thingX;thingY;thingZ"));
Run Code Online (Sandbox Code Playgroud)

我想要返回每个实例MyClass包含一个条目"thing2"myCSVListOfThings.

如果我想要List<String>包含myCSVListOfThings这个可以轻松完成:

List<String> filteredThings = streamOfObjects
        .flatMap(o -> Arrays.stream(o.getMyCSVListOfThings().split(";")))
        .filter("thing2"::equals)
        .collect(Collectors.toList()); 
Run Code Online (Sandbox Code Playgroud)

但我真正需要的是一个List<MyClass>.

这就是我现在所拥有的:

List<MyClass> filteredClasses = streamOfObjects.filter(o -> {
     Stream<String> …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

给出非交换关联操作,foldRight是否相当于foldLeft?

在一个在线课程中,它表明foldLeft并且foldRight对于具有关联性和可交换性的运算符是等效的.

其中一名学生坚持认为这些操作员只需要联想.因此,对于函数组合和矩阵乘法等操作,此属性应该为true.

据我所知,不可交换的关联操作不会产生等效的结果foldLeft,foldRight除非z是中性的,并且操作以这样的方式累积,即操作数的顺序保持不变.在一般情况下,IMO的操作必须是可交换的.

list.foldLeft(z)(operation) == list.foldRight(z)(operation)
Run Code Online (Sandbox Code Playgroud)

因此,为了foldLeftfoldRight等同应该operation是同时联想和可交换的,还是足以operation成为联想的?

scala equivalent fold

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

Maven Embedded Glassfish插件 - 数据源和JDBC驱动程序

我正在尝试按照这种方法为嵌入式glassfish创建数据源.教程和我的代码之间唯一的重要区别是我使用官方maven插件和embedded-glassfish:run目标运行服务器.

pom文件中的JDBC驱动程序存在依赖关系:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.3.155</version>
</dependency> 
Run Code Online (Sandbox Code Playgroud)

和我的 glassfish-resources.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
  <jdbc-resource enabled="true" jndi-name="jdbc/myDatasource" object-type="user" pool-name="connectionPool">
    <description/>
  </jdbc-resource>
  <jdbc-connection-pool datasource-classname="org.h2.jdbcx.JdbcDataSource"  name="connectionPool" res-type="javax.sql.DataSource">
    <property name="URL" value="jdbc:h2:~/Documents/Projetos/DBs/h2/glassfish/glassfish;AUTO_SERVER=TRUE;MVCC=TRUE"/>
    <property name="User" value="sa"/>
    <property name="Password" value=""/>
    <property name="driverClass" value="org.h2.Driver"/>
  </jdbc-connection-pool>
</resources> 
Run Code Online (Sandbox Code Playgroud)

使用本地glassfish服务器运行良好.但嵌入式实例并不幸运:

03/06/2011 19:26:31 com.sun.enterprise.v3.server.ApplicationLifecycle deploy GRAVE:无效资源:jdbc/myDatasource_ pm java.lang.RuntimeException:无效资源: com.sun.enterprise中的jdbc/myDatasource _pm位于org.glassfish.persistence.common.PersistenceHelper.lookupPMResource(PersistenceHelper.java:63)的com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:468)中的.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:539) )org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource(ProviderContainerContractInfoBase.java:71)at

我很无能......任何人都可以对此有所了解吗?

java-ee maven-plugin glassfish-embedded glassfish-3

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