Tag: java ee

Apache Camel根据请求丰富了包含文件内容的消息

我正在实现RESTful服务(使用CXFRS组件),它应返回某些请求的文件。 每个文件都由其id和扩展名提取,即restfulservice.com/path/file/1/pdf 。 添加的每个文件永远不会更改。 提取后不应移动或删除文件,通常应同时访问它们。 这是我的Camel上下文的一部分: from(“direct:fetchFile”) .process(fetchFileProcessor) // set file.id & file.extension .bean(fileService, “fetchFile(${header.file.id}, ${header.file.extension})”) // set body to filename .setHeader(“CamelFileName”, simple(“${body}”)) .choice() .when(header(“file.extension”).isEqualTo(“xml”)) .pollEnrich(“file:///{{application.fileStorage.basePath}}/xml?noop=true”, 500) .when(header(“file.extension”).isEqualTo(“pdf”)) .pollEnrich(“file:///{{application.fileStorage.basePath}}/pdf?noop=true”, 500) .end() .convertBodyTo(File.class) .bean(responseProvider, “getResponse(${body}, 200)”); 此配置的问题是响应仅为第二个(为什么?)请求具有非空主体,没有超时设置服务在第二个请求上使用调试消息进入永久循环 DEBUG oaccfFileConsumer – Took 0.000 seconds to poll \xml Apace Camel版本是2.10.4 任何帮助,将不胜感激 UPD1 : Content Enricher页面上有警告,说’pollEnrich不访问当前Exchange中的任何数据’。 但是如果我将fileName=${body}到文件URL,则没有任何变化 UPD2 : […]

部署为WAR-only的EJB 3.1应用程序:ejb-jar.xml怎么样?

我有一个JavaEE6应用程序,由Web东西和EJB组成,并且部署为仅使用WAR(使用EJB3.1)。 构建基于Maven。 我刚刚读到了在Java EE 6中订购模块初始化的新可能性,这也是我的应用程序所需要的。 此外,我想有一个选项来定义XML中的一些EJB属性。 由于该示例部署为EAR项目,因此订单在application.xml中定义。 但是在WAR部署的项目中,没有application.xml。 现在我想知道我在哪里可以定义这样的信息? 或者是否可以在WAR-deployed-app中以某种方式使用application.xml? 编辑: 哎呀我没有正确阅读模块顺序示例,在第一时间我认为它是关于我的应用程序中的EJB加载的顺序。 当然我的WAR-app中只有一个模块,所以排序没有意义。 好的,但正如我所说,一个大问题仍然存在(也改变了问题标题以反映变化):ejb-jar.xml怎么样? 我可以用XML以某种方式定义关于我的EJB的东西(因为它对某些设置有用,以避免重新编译)?

什么叫会话商店?

在Web应用程序/网站的上下文中称为会话存储? 它不仅仅是会话变量的临时存储吗?

在跳转到JavaEE之前,我应该做更多的JavaSE吗?

我差不多完成了“Head First Java”这本书。 我正在研究这个的原因是我希望有一天能用JavaEE开发工作。 现在我在想,我应该继续学习EE(转向Head First Servlets和JSP)还是应该花更多时间学习SE? 这会有帮助吗? 我会继续直接说我想在最快但最理想的时间学习EE(平衡的方式)。 任何建议? 提前致谢!

如何使JNDI名称与GlassFish和WildFly兼容

我正在开发Java EE 7应用程序,并且要求将应用程序部署到运行GlassFish 4.0或WildFly 8.1.0的应用程序服务器上。 我遇到的问题是GlassFish和WildFly对JNDI名称使用略有不同的格式,但我看不出如何使我的应用程序兼容两者。 在GlassFish中,我的persistence.xml文件引用数据源jdbc / myDataSouce,但在WildFly中,数据源需要是java:/ jdbc / myDataSource。 对于使用@Resource注释的类也是如此。 在GlassFish中,使用JavaMail的类的注释将是@Resource(name =“mail / myMailSession”),但要部署到WildFly,这需要是@Resource(name =“java:mail / myMailSession”)。 我知道我可以解压缩EAR和JAR文件以手动编辑文件,例如persistence.xml,但我不能对已经使用@Resource注释的类执行此操作。 有没有办法可以将我的编译应用程序部署到GlassFish和WildFly上,而无需维护两个不同版本的代码? 我假设答案可能取决于特定于应用程序的部署描述符,但我找不到任何涵盖这两种情况的示例。 有人能指出我正确的方向吗?

使用部署在其中的Web应用程序关闭tomcat

我对我的webapp开发遇到的tomcat操作有些怀疑: 有没有办法从部署的webapp中关闭tomcat本身? tomcat是在一个JVM或单个JVM中运行它的所有webapps / war还是在一些配置文件中配置? 是否有可能增加在tomcat中部署的特定webapp的java堆大小? 非常感谢。

CDI具有非托管对象

假设我有两个类,首先是一个没有任何属性,字段或注释的类: public class B {} 和一个注入B的类,如下所示: public class A { @Inject private B b; public B getB() { return b; } } 现在A类在我们使用它之前是没用的,所以有两个选择: @Inject它 使用可靠的“new A()”手动构造它 如果A被注入,CDI管理它并且足够注入B,其具有隐含的@Dependent范围。 很酷,就是我想要的。 但是,如果我手动构造A(假设在工厂或构建器中),CDI完全忽略我的对象并且不会注入类型B的对象。 示例我在谈论它什么时候不起作用,这里对象a将始终保持为null: public class Builder { @Inject private A a; public static Builder ofTypeSomething() { // do some magic here return new Builder(); } private Builder() { […]

Java配置构建路径或WEB-INF / lib文件夹

我已经看过很多教程和应用程序将他们的jar放在构建路径中,而其他人将它放在他们的web-inf / lib文件夹中,是否有任何显着差异? 两者的优点和缺点是什么? 我将一个jar放在libs文件夹中并将jar放在构建路径中的指示器是什么?

EJB3.1系统exception与javax.ejb.EJBException

在提出我的问题之前,只是关于EJB3.1exception的一些背景知识 – 应用程序例外包括 用户定义的具有@ApplicationException注释的已检查或未检查的exception 所有已检查的例外 java.lang.Exception&它的子类exception 除了java.rmi.RemoteException和它的子类exception 系统例外包括 java.rmi.RemoteException和它的子类exception 所有未经检查的例外情况 java.lang.RuntimeException和它的子类exception java.lang.Error和它的子类exception 以下是我在本书中读到的声明 在EJB系统中,客户端不会例外,当遇到此类exception时,这些exception不会按原样传递给客户端,而是在javax.ejb.EJBException中包含。 我的问题 – 上面描述的所有应用程序exception是否应该由EJB直接抛给客户端? 如果在抛出到客户端之前将系统exception包装在javax.ejb.EJBException中,那么javax.ejb.EJBException是否被视为系统exception?

如何检查jar文件是否有效?

我的webapp允许用户上传jar文件。 但是,上传jar文件后,它已损坏。 我已经通过比较md5校验和(winmd5free)来validation这一点。 上传的jar文件看起来“正常”和“正确” 与原始文件相比较的文件大小(在KB级别) 我可以使用7z打开上传的jar文件并查看其内容(资源和类文件),与原始文件相比,一切都是相同的 当我打开上传的jar文件(使用Notepad ++)时,我注意到二进制内容与原始内容不同。 另外,当我使用JarInputStream读取jar条目时,没有条目。 JarInputStream is = new JarInputStream(new FileInputStream(new File(“uploaded.jar”))); JarEntry entry = null; while(null != (entry = is.getNextJarEntry())) { System.out.println(entry.getName()); } 此外,当我双击jar(Windows)时,我收到以下消息。 错误:jarfile无效或损坏 我的问题是 有没有办法以编程方式检查jar文件是否有效? 我本来希望JarInputStream立即检测到它,但它根本没有显示任何问题 当我双击jar文件时,在Windows中,java.exe是否给了我无效或损坏的jar文件消息? 如何在类路径中传入无效的jar文件时,不会抛出错误/exception? 例如java -cp uploaded.jar; libs * com.some.class.Test ? 请注意,这与jar签名和/或检查jar的签名无关。 它只是检查一个文件(上传与否)是否是一个有效的jar文件(不一定是jar的类文件是有效的,因为已经有关于这个问题的另一个SOpost)。 跑步的结果 jar -tvf uploaded.jar java.util.zip.ZipException: error in opening zip file at […]