我需要动态地使用资源做很多事情:解析xsd/xml文档,构建和编译java类,将它们打包到jar和wars中,在DB中保存,将它们部署为OSGi等.
我使用的大多数库/ API允许在内存中执行所有这些中间任务,但是只有一些"特殊"库可以运行java.io.File.除了使用在Java EE环境中不好的真实临时文件和目录之外,没有什么可以留给我的.
我相信必须有一个库/解决方案,用于内存文件结构,扩展节点java.io.File(我认为).请放入已知/类似库的链接.欢迎任何评论.
谢谢!
我需要为每个客户部署相同的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 以编程方式构建的.因此,如果有帮助的话,我可能会干扰构建过程并在此时提供提示信息.
想象一下以下两个实体.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) 给定:简单的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.
提前谢谢了!
我Glassfish 3.1.1 (Metro JAX-WS stack)在我的域的虚拟服务器中安装了几个http侦听器.当我部署我的EAR时,Web应用程序和soap服务都绑定到所有可用的http侦听器,而我希望它们由不同的侦听器持有,每个侦听器都有自己的性能和连接池设置.
我认为sun-web.xml应该负责这种绑定,但我没有找到任何绑定服务到特定端口或虚拟服务器的选项.
有任何想法吗?
我需要删除一个实体并创建另一个实体:
@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,@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会话,事务会发生什么?
我有问题引用和显示复合组件的子项,如下所示:
<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}但我不知道如何在复合组件的特定位置呈现它们.任何想法或解决方法?
我正在尝试扩展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)
没有显示.我在这里错过了什么?
我需要一些帮助查询分层数据.这是单个简单的表,其中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)