我想将我的Java EE6Web类(bean,过滤器,servlet)打包到jar中,并将其/WEB-INF/lib/与其他实用程序jar一起放入目录并/WEB-INF/classes/完全放弃目录.
在类加载,访问应用程序上下文等方面,两者之间是否存在实质性差异?
谢谢.
PS:每当谷歌搜索任何java规范时,我总是被重定向到Oracle文档索引,这是远离原始URL的十几次点击.谁知道那里发生了什么?
我需要一个代码示例或库来解析Accept-Language标题并返回我的首选语言.
RFC2616声明:
Accept-Language请求标头字段与Accept类似,但限制首选的自然语言集作为对请求的响应.语言标签在3.10节中定义.
Run Code Online (Sandbox Code Playgroud)Accept-Language = "Accept-Language" ":" 1#( language-range [ ";" "q" "=" qvalue ] ) language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )可以给每个语言范围赋予相关的质量值,该值表示用户对该范围指定的语言的偏好的估计.质量值默认为"q = 1".
进一步的阅读表明,有太多的"可选","应该","可能"和其他转动的言论阻止我重新发明轮子 - 所有我想知道的是用户喜欢的语言,任何浏览器都会回答这个问题十亿次一天.
任何语言的任何代码片段(请使用Lisp和Assembler除外)都会有所帮助.
提前谢谢了!
假设我有两个经典的非抽象JPA类:Person和Student.
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;
// ...
}
@Entity
public class Student extends Person {
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在有一些身份证的人进入大学并成为一名学生.我如何在JPA中处理这个事实并保持个人身份?
student = new Student();
student.setPersonData(person.getPersonData());
student.setId(person.getId());
entityManager.persist(student);
Run Code Online (Sandbox Code Playgroud)
上面的代码生成'传递给持久化的分离实体'异常,而使用entityManager.merge(student)分配的跳过id并创建具有新id的Person和Student的两个新实体.任何想法如何保持原始ID?
我遇到了一个简单的任务.我想要做的是转变Map<K,Set<V>>为List<Map<K,V>>获得所有可能的组合:
Map {
{'k1' => set{'v11', 'v12'}},
{'k2' => set{'v21', 'v22', 'v23'}},
{'k3' => set{'v31'}}
}
Run Code Online (Sandbox Code Playgroud)
预期结果:
List
{
Map{'k1'=>'v11', 'k2'=>'v21', 'k3'=>'v31'},
Map{'k1'=>'v11', 'k2'=>'v22', 'k3'=>'v31'},
Map{'k1'=>'v11', 'k2'=>'v23', 'k3'=>'v31'},
Map{'k1'=>'v12', 'k2'=>'v21', 'k3'=>'v31'},
Map{'k1'=>'v12', 'k2'=>'v22', 'k3'=>'v31'},
Map{'k1'=>'v12', 'k2'=>'v23', 'k3'=>'v31'}
}
Run Code Online (Sandbox Code Playgroud)
对我感到羞耻,需要你的帮助.
为downvoters更新
我不是一个要求社区为我做家庭作业的学生,我不会问我是否真的需要帮助.好吧,原则上我会在符合条件的情况下尽快为这个问题分配全部代表奖金(800左右).
更新2
尊重我在之前的更新中的承诺,我开始了两个赏金的序列,其中最大的一个归于我的救世主,剩下的就是对其他可能的解决方案的奖励.
更新3
这是技术性的,交付承诺的消息(参见之前的更新).我要感谢所有SO社区在真正需要时提供帮助.非常特别感谢"Tudor"和"Ed Staub"及时参与和响应.第二个赏金将被分配到最优雅的解决方案,新人和每个人都有兴趣的好机会.
有没有人设法从没有XJC的JAXB模式文件生成Java代码?
有点类似
JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler()
Run Code Online (Sandbox Code Playgroud)
用于动态编译Java代码.
注意:在JDK 6上运行,意味着com.sun.*不推荐使用工具包(感谢Blaise Doughan的提示)
假设以下应用程序格局:
+-----------------+
| App server |
+-----------------+
| | +-------+
| ear1 | | |
| +-web1 (/ctx1) +--<-- http://localhost/ctx1/xxx/ --+ +--<-- http://www.example.com/xxx/
| | | |
| | | proxy |
| ear2 | | |
| +-web2 (/ctx2) +--<-- http://localhost/ctx2/yyy/ --+ +--<-- http://abc.example.com/yyy/
| | | |
+-----------------+ +-------+
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,代理(nginx在我的情况下)是将请求转发到单个应用程序服务器实例,而后者又有多个具有不同上下文路径的Web模块.当然我不希望我的公共服务器暴露内部上下文根和代理它的工作做得好,包装和解包http请求等.但仍然有一个大问题:JSF生成的HTML代码(链接,css,js资源,表单动作)包含上下文路径,/ctx1并/ctx2在我的情况.这就是我想要避免的.
除了使用越来越多不同的应用服务器实例(域)之外,我现在没有解决方案,导致我的硬件资源逐渐消失.据我了解,我需要扩展我的JSF应用程序与一些可能已注册的包装器faces-config.xml,这将删除生成的html中的上下文前缀.还欢迎任何其他解决方案.
请指出我正确的方向.
我遇到了一个对我来说绝对新鲜的有趣问题.正如我突然发现的那样,Jar规范说,包括在内,META-INF并且MANIFEST.MF必须是*.jar包的第一个和第二个条目,而不仅仅是归档中的目录和文件.
我正在使用Java框架非常注意这个要求而不是那么冗长.我如何检查META-INF并MANIFEST.MF在罐子里正确订购?
更新: 许多罐子都是第三方,其中有很多.我无法在记事本,excel,hexeditor,photoshop或任何寻找字节序列的东西中打开这些罐子.我需要命令行工具.谢谢!
更新2: 以下是我提出这个问题的原因:http: //www.mail-archive.com/dev@felix.apache.org/msg17097.html
我有点困惑.问题在于标题,这就是我要问的原因.我在一个VM上运行JSF + JPA Web应用程序.JPA班有一个@Transient领域.现在想象一些Web用户打开一些页面并执行下面的代码
import javax.persistence.EntityManager;
// method 1 in backing bean
Agent a = entityManager.find(Agent.class, "007");
a.setTransientValue("Aston Martin");
Run Code Online (Sandbox Code Playgroud)
当另一个Web用户/线程尝试读取该瞬态值时,我应该期望什么输出:
// method 2 in backing bean
Agent a = entityManager.find(Agent.class, "007");
String val = a.getTransientValue();
Run Code Online (Sandbox Code Playgroud)
换句话说,就JVM而言,find()方法是否总是返回新的类实例或相同或"它取决于"?我通过JSR-220查看了答案,没有成功,任何帮助或文档参考将不胜感激.
我只是不明白:如果我希望我的复合组件插入子项,我会使用 <composite:insertChildren/>但在这种情况下#{cc.childCount}总是返回0.另一方面,如果我不使用 <composite:insertChildren/>我总是在childCount没有孩子被渲染的情况下得到正确的.为什么会这样?
我想在我的组件中做的就是在没有子节点时渲染一些"默认"面板,在其他情况下不渲染它 - 行为类似于<ui:insert name="param_name">default value</ui:insert>.所以我需要insertChildren和childCount,它们似乎不能一起工作.
这是代码:
<my:test>
<h:outputText value="child1" rendered="#{some.trueValue}"/>
<h:outputText value="child2" rendered="#{some.trueValue}"/>
<my:test>
Run Code Online (Sandbox Code Playgroud)
如果我使用下面的实现,我会2按预期呈现
<composite:implementation>
<h:outputText value="#{cc.childCount}"/>
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)
什么时候insertChildren使用我得到两个孩子渲染,0最后:
<composite:implementation>
<composite:insertChildren/>
<h:outputText value="#{cc.childCount}"/>
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)
而我的目标是:
<composite:implementation>
<composite:insertChildren/>
<h:panelGroup rendered="#{cc.childCount == 0}">
some default data
</h:panelGroup>
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)
任何想法/解决方法?
我需要动态地使用资源做很多事情:解析xsd/xml文档,构建和编译java类,将它们打包到jar和wars中,在DB中保存,将它们部署为OSGi等.
我使用的大多数库/ API允许在内存中执行所有这些中间任务,但是只有一些"特殊"库可以运行java.io.File.除了使用在Java EE环境中不好的真实临时文件和目录之外,没有什么可以留给我的.
我相信必须有一个库/解决方案,用于内存文件结构,扩展节点java.io.File(我认为).请放入已知/类似库的链接.欢迎任何评论.
谢谢!