Java如何将业务层打包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java如何将业务层打包相关的知识,希望对你有一定的参考价值。
参考技术A 如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自定义配置文件MANIFEST.MF ,例如:Manifest-Version: 1.0
Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jar lib\log4j-1.2.13.jar lib\mysql-connector-java-3.1.13-bin.jar
Main-Class: src.YourMainClassName
其中的Class-Path就指定了外来jar包的位置。请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下建立一个lib文件夹,并将相关的jar包放在里面。否则将会出现Exception in thread "main" java.lang.NoClassDefFoundError的错误。
如果想在所导出的jar包中包含第三方jar包,可以如下操作:
1.在工程目录下放入第三方jar包
2.Class-Path: name.jar
上诉两个步骤就可以成功导出引用了jar包的java工程,并将第三方jar包放在导出的工程中
注意:如果在Class-Path 中引入比较多的jar包,不要写成一行,不然会报:java.io.IOException : line too long ,需要分多行写,第二行以及下面的第三行、第四行写的时候需要在前面空两格(敲两下空格键)即可
最后介绍一下使用Eclipse制作jar包的过程吧:
1. 首先在Eclipse中打开项目, 右键点击项目,选择“Export”;
2. 选择Java/JAR file,Next;
3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间;
这里有几个选项:
* Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
* Export all output folders for checked projects 表示导出选中项目的所有文件夹
* Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
* Export refactorings for checked projects 把一些重构的信息文件也包含进去
在Select the export destination中选择导出的jar的路径,Next
4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class文件。一般不用理他,Next
5. 下一个页面里可以对项目做一些配置。
* Generate the manifest file是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
* Use existing mainfest from workspace。这是可以选择我们自定义的.MF文件,格式如上所写。
* Seal content。要封装整个jar或者指定的包packet
* Main class。这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。
最后Finish 完成
如何将错误从服务层传递到 vanilla Java Servlet? [复制]
【中文标题】如何将错误从服务层传递到 vanilla Java Servlet? [复制]【英文标题】:How can I pass errors from service layer to vanilla Java Servlets? [duplicate] 【发布时间】:2022-01-23 08:13:35 【问题描述】:我目前正在使用 TomEE 8.0.8 WebProfile。除了 TomEE 中包含的内容之外,我无法使用 Spring 或其他任何东西。
我正在尝试实现一个 3 层应用程序。该应用程序已经以 2 层方式实现(业务逻辑编写在 HTTPServlet 类中,这些类调用 DAO,然后分派到 .jsp 文件)。我在尝试不将业务逻辑与 Servlet 实现细节联系起来时遇到了一些困难。
我所有的服务类都是无状态 EJB,其方法可以将 DTO 作为参数并返回其他 DTO 作为结果。
如果需要,这些服务类应该返回一个以上的错误(例如:attr 1 的长度错误,attr 2 的格式错误,attr 3 为空):我的想法是创建一个带有List<>
错误的自定义异常从服务层抛出。但是,我不知道这种方法是否正确,也不知道是否有一些干净的方法可以在控制器上处理这些异常,而无需到处“尝试/捕获”。 (也许是一个拦截器?香草 servlet 有可能吗?)
【问题讨论】:
这不是重复的。这个问题是关于解耦业务层(EJB)和前端层(Servlets)。引用的副本是关于在表示层(jsp)中显示消息。 @gmanjon 所有关于 SO 的问题都被许多人视为重复问题或 XY 问题 【参考方案1】:您的问题更多地与设计方法有关,而不是与实施有关,因此它可以有多个答案。但是,在您的 3 层应用程序的上下文中,您遵循的是:
JSP(客户端浏览器)--> Servlet --> EJB --> 数据库
从这个角度来看(这完全是我的观点),这是传统上使用的一种合理方法,您可以在 servlet 层中进行数据验证,最好使用 Java Validation Framework 之类的框架。拦截器方法也很合理,这里可以利用 servlet 过滤器来提供验证。
【讨论】:
以上是关于Java如何将业务层打包的主要内容,如果未能解决你的问题,请参考以下文章
Java Spring Boot如何实现业务逻辑层和资源库层?
请问JAVA三层架构,持久层,业务层,表现层,都该怎么理解?和MVC三层模型有啥
如何将现有的业务层实施到 SilverLight 4.0 应用程序?