小编Osw*_*Osw的帖子

Java内存中的文件结构?

我需要动态地使用资源做很多事情:解析xsd/xml文档,构建和编译java类,将它们打包到jar和wars中,在DB中保存,将它们部署为OSGi等.

我使用的大多数库/ API允许在内存中执行所有这些中间任务,但是只有一些"特殊"库可以运行java.io.File.除了使用在Java EE环境中不好的真实临时文件和目录之外,没有什么可以留给我的.

我相信必须有一个库/解决方案,用于内存文件结构,扩展节点java.io.File(我认为).请放入已知/类似库的链接.欢迎任何评论.

谢谢!

java file in-memory

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

如何在JAX-WS中控制JAXBContext?

我需要为每个客户部署相同的Web服务.这种@javax.jws.WebService使用Object方法参数和返回类型(导致<xs:anyType/>在WSDL).每个Web服务实例都与类路径上的客户jar一起部署.这个jar有已知的结构,并包含客户想要通过我的服务处理的JAXB注释类.

问题是,当客户通过自己班级的方法agrument的一个实例,服务器端JAXB上下文中,因为(我的理解)仅部署时间解编入一些奇怪的Xerces DOM节点@WebMethod@WebService注释进行扫描,正如已经说,都是Object只处理.

简单来说,我需要提示JAXB,WEB-INF/lib/customer_classes_14586.jar这意味着JAXBContext在JAX-WS部署期间对创建进行一些控制.

有可能吗?

服务器特定的解决方案很好(带有metro ws堆栈的glassfish 3.1)

UPDATE

我错过了一件可能很重要的事情:我通过Web管理控制台在运行时将这些Web服务部署为OSGI包.当我按下部署按钮时,新的jar是从客户库,webservice类,wsdl和manifests 以编程方式构建的.因此,如果有帮助的话,我可能会干扰构建过程并在此时提供提示信息.

java osgi web-services jax-ws jaxb

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

JPA - "版本化"实体,需要设计建议

想象一下以下两个实体.Element是包含一些数据的简单类:

@Entity
public class Element {
    private String data;

    public String getData() { return data; }    
    public void setData(String data) { this.data = data; }
}
Run Code Online (Sandbox Code Playgroud)

下一个类,名为VersionedElement,扩展Element并包含不同版本以及当前版本.这是我的"解决方案":

@Entity
public class VersionedElement extends Element {
    private Set<Element> versions;
    private Element currentVersion;

    @Override
    public String getData() {
        return getCurrentVersion().getData();
    }

    @Override
    public void setData(String data) {
        getCurrentVersion().setData(data);
    }

    @OneToMany
    public Set<Element> getVersions() {
        return versions;
    }

    public void setVersions(Set<Element> versions) {
        this.versions = versions;
    }

    @ManyToOne …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

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

需要EJB 3.1 Singleton + JPA + JSF设计建议

给定:简单的JSF webapp(没有Seam),让JSF bean调用很少的EJB,然后加载并持久化JPA实体.我想要的是@Singleton为ejb 使用注释并注入EntityManager 而不是 EntityManagerFactory:

@Singleton
public class MyEJB {
  @PersistenceContext(unitName = PERSISTENCE_UNIT_NAME)
  protected EntityManager em; // not EntityManagerFactory
}
Run Code Online (Sandbox Code Playgroud)

Spec说这@Singleton是线程安全的,支持并发和事务属性(从我的pov)可以安全地从JSF bean调用.我期望还有性能优势,因为EntityManager没有为每个调用重新创建它的内部缓存功能.

我主要担心的是在我有几个单身人士的情况下对JPA实体进行创建/更新操作,因此,相同数量的长生命EntityManagers.

  • 如果一个单例更新JPA实例以及如何将这些更改填充到其他单例,会发生什么?
  • 由于我无法关闭实体管理器,我是否需要在每次实体更新时刷新它?
  • 如果这些少数单身人士共享同一个实体经理会更好吗?
  • 我只看到了这种设计的几个例子.为什么?有什么严重的缺点吗?

提前谢谢了!

jsf jpa ejb-3.0 jsf-2 ejb-3.1

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

如何将Web服务绑定到特定的glassfish端口?

Glassfish 3.1.1 (Metro JAX-WS stack)在我的域的虚拟服务器中安装了几个http侦听器.当我部署我的EAR时,Web应用程序和soap服务都绑定到所有可用的http侦听器,而我希望它们由不同的侦听器持有,每个侦听器都有自己的性能和连接池设置.

我认为sun-web.xml应该负责这种绑定,但我没有找到任何绑定服务到特定端口或虚拟服务器的选项.

有任何想法吗?

web-services glassfish glassfish-3

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

JPA:Eclipselink不尊重em.remove()

我需要删除一个实体并创建另一个实体:

@Stateless
public class StatelessBean {
  @PersistenceUnit(unitName = "Unit001")
  EntityManagerFactory emf;

  protected void test() {
    EntityManager em = emf.createEntityManager();
    MyObj obj1 = em.find(MyObj.class, 100);
    MyObj obj2 = new MyObj();
    obj2.setKey("the same unique key as in obj1");
    em.remove(obj1);
    // em.flush(); 
    em.persist(obj2); // works fine when flush() is uncommented
    em.close();
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我留下em.flush()评论,那么我得到com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException(新旧对象具有相同的键值)

这种异常行为可能是什么原因?

服务器:Glassfish 3.1.2

Eclipse Persistence Services - 2.3.2.v20111125-r10461

persistence.xml中:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
  <persistence-unit name="Unit001">
    <jta-data-source>jdbc/Unit001DS</jta-data-source>
    <properties>
      <property name="eclipselink.logging.level" value="INFO"/>
      <property name="eclipselink.target-database" value="MySQL"/>
    </properties>
  </persistence-unit>
</persistence> …
Run Code Online (Sandbox Code Playgroud)

ejb jpa glassfish eclipselink

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

在@Asynchronous方法调用期间销毁有状态bean会发生什么?

我有一个有状态的EJB,@Asynchronous返回一个事务方法Future<T>.它是从Web层(@SessionScopedCDI bean)调用的,如下所示:

@SessionScoped
@Named
public class SessionBean {
  @EJB
  EjbService service

  public void call() {
    Future<Object> response = service.process();
  }

}

@Stateful
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class EjbService {

  @Asynchronous
  public Future<Object> process() {
  //
  }

}
Run Code Online (Sandbox Code Playgroud)

问题是如果用户在执行此异步调用期间终止Web会话,事务会发生什么?

ejb java-ee ejb-3.0 java-ee-7

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

JSF2:如何在组件内的特定位置渲染复合组件的子项?

我有问题引用和显示复合组件的子项,如下所示:

<xyz:mycomponent>
  <h:outputText value="some text"/>
  <h:outputText value="another text"/>
</xyz:mycomponent>
Run Code Online (Sandbox Code Playgroud)

在哪里mycomponent定义如下:

<composite:implementation>
  <!-- some tags here -->
  <h:paneGroup>
    <!-- I want component's childs (two outputText's) to be rendered here -->
  </h:paneGroup>
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)

我可以列出组件的子项,#{cc.children}但我不知道如何在复合组件的特定位置呈现它们.任何想法或解决方法?

java jsf composite-component jsf-2

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

扩展的@FacesComponent作为复合接口componentType不呈现任何内容

我正在尝试扩展JSF的组件类(让它成为其中之一h:panelGroup)并通过复合组件呈现它:

步骤1:

@FacesComponent(value="customPanel")
public class CustomPanel extends HtmlPanelGroup { // or UIPanel
}
Run Code Online (Sandbox Code Playgroud)

第2步:

<!-- INTERFACE -->
<composite:interface componentType="customPanel"/>

<!-- IMPLEMENTATION -->
<composite:implementation>
  <h:outputText value="Some text:"/>
  <composite:insertChildren/>
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)

第3步:

<xyz:panel>Hello world!</xyz:panel>
Run Code Online (Sandbox Code Playgroud)

没有显示.我在这里错过了什么?

jsf composite-component jsf-2

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

在分层查询中查找"最深"的子项

我需要一些帮助查询分层数据.这是单个简单的表,其中parent_id引用id,对于根条目可以为null.

  create table edition (
      id           NUMBER(20),
      parent_id    NUMBER(20)
  );
Run Code Online (Sandbox Code Playgroud)

对于表中的每条记录,我需要找到具有最大id的最深的孩子.如果记录没有子节点,则应返回其自己的id.我自己尝试但是在使用START WITH A.id = B.idA和B是子查询的地方失败了,看起来Oracle不允许这样的连接.

以下是示例数据:

     id      parent_id
   ----------------------
      1        NULL
      2           1
      3           1
      4           1
      5           4
      6           5
      7           5
Run Code Online (Sandbox Code Playgroud)

和样本结果

     id      result
   ----------------------
      1           7
      2           2
      3           3
      4           7
      5           7
      6           6
      7           7
Run Code Online (Sandbox Code Playgroud)

sql oracle connect-by oracle11g transitive-closure-table

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