Java 8 Jacksonvalidation

我有一个springbootrest服务。 用户传入一个json对象,该对象被反序列化到这个java pojo中: public final class Request { private String id; private double code; private String name; public String getId() { return id; } public double getCode() { return code; } public String getName() { return name; } } 所以用户需要传入以下json: { “id”: “123457896”, “code”: “Foo”, “name”: “test” } 我想让所有这些领域都需要。 提供更少或更多的东西会引发exception。 有没有办法告诉jackson在反序列化时validation输入? 我试过@JsonProperty(required=true)但这不起作用; 显然从这里和这里看来, JsonProperty注释似乎没有得到尊重。 我有我在控制器中调用的validation器: […]

JAX-RS Web服务在哪个容器中运行?

据我所知,java EE应用服务器主要有两种类型的容器。 即Web容器和EJB容器。 我设法运行一个JAX-RS应用程序,它在Tomcat中使用Jersey作为它的实现。 据我所知,Tomcat只是一个Web容器。 为了在tomcat中运行web服务,必须将jersey jars捆绑到war文件中,因为开箱即用,Tomcat没有jersey jars。 这提出了一个问题。 tomcat是否使用除Jersey之外的其他JAX-RS实现? 如果是的话是什么? 如果不, 如果没有将jars捆绑到war文件中,我无法运行Jax-RS应用程序,这意味着JAX-RS应用程序需要的东西比Web容器提供的更多。 这意味着它们不会在Web容器中运行。 那么它在哪个容器中运行?

FTPClient下载文件失败,retrieveFile()方法replyCode = 550

/ *我在localhost上运行一个FTP服务器。当我下载文件时使用ftpClient.retrieveFile()方法,它的replyCode是550。 我读了commons-net的API并找到550 replyCode,定义是“public static final int FILE_UNAVAILABLE 550”。但我无法从我的代码中找到问题。 谢谢你的帮助。 * / FTPClient ftpClient = new FTPClient(); FileOutputStream fos = null; try { ftpClient.connect(“192.168.1.102”,2121); ftpClient.login(“myusername”, “12345678”); ftpClient.setControlEncoding(“UTF-8”); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); String remoteFileName = “ftpserver.zip”;//this file in the rootdir fos = new FileOutputStream(“f:/down.zip”); ftpClient.setBufferSize(1024); ftpClient.enterLocalPassiveMode(); ftpClient.enterLocalActiveMode(); ftpClient.retrieveFile(remoteFileName, fos); System.out.println(“retrieveFile?”+ftpClient.getReplyCode()); fos.close(); ftpClient.logout(); } catch (IOException e) { e.printStackTrace(); } […]

java中的通用超类

是否有可能在java中创建这样的东西 public abstract class GenericView extends LAYOUTTYPE 以便 public class MyView extends GenericView 扩展GenericView和HorizontalLayout和 public class MyView2 extends GenericView 扩展GenericView和VerticalLayout ?

构造函数调用自己

我最近发现没有参数构造函数和多个参数构造函数不会轮流调用彼此。 这种限制的根本原因是什么? 有些人可能会说构造函数是资源初始化的地方。 所以不能递归调用它们。 我想知道这是否是唯一的原因。 函数/方法/过程可以递归调用。 为什么不是施工人员?

Wicket动态添加组件以形成

我无法动态地向表单添加组件。 我要做的是:给用户一个下拉列表,其中包含他可以选择的项目,如姓名,年龄,…… 当用户按下add时,在1个组件中出现一个(标签+输入框),允许他输入值。 您可能认为我可以隐藏未选择的组件,但用户也可以向下拉列表中添加值。 我遇到的问题是如何添加和删除组件(标签+输入框)而不使用wicket:HTML中的ID? 这是我想要添加的内容: 我在这里遇到的问题是ID始终是我想要动态命名的值。 使用动态HTML创建这个组件是个好主意吗? 我重写了getMarkupResourceStream和getCacheKey来实现这一点。 我仍觉得这不是正确的方法。 还有其他建议吗?

在深度睡眠中连接到蓝牙设备失败

我试图每隔25秒连接一个配对的蓝牙设备,通过AlarmManager调度,触发WakefulBroadcastReceiver启动服务进行连接。 一旦设备进入睡眠状态,一切都会在最初的几个小时内发挥作用,但是大约4-5个小时后,当我认为设备进入深度睡眠状态时,它会开始失效。 我从ParcelFileDescriptor得到一个NullPointerException,声明“FileDescriptor不能为空”。 我已经尝试过搜索这个错误,甚至已经浏览了ParcelFileDescriptor.java中的代码,但我已经走到了尽头。 我在带有Android 4.4.2的Nexus 10上运行它。 尝试连接的代码如下: public GatewaySocket getSocket() throws IOException { if (!BluetoothAdapter.checkBluetoothAddress(macAddress)) return new GatewaySocket(“Address ” + macAddress + ” is not a valid Bluetooth MAC Address”); BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); if (bluetooth == null) return new GatewaySocket(“Sorry, no Bluetooth adapter available”); BluetoothDevice device = bluetooth.getRemoteDevice(macAddress); BluetoothSocket btSocket = null; try […]

Hibernate @Where子句

我有User类,它有组。 @Where(clause = “enabled = 1 and deleted = 0”) @Fetch(FetchMode.SUBSELECT) public Set getGroups() { return groups; } 但是当我试图在已经存储在DB中并且不适合@Where子句的Group上进行某些操作时,Hibernate只是忽略了我。 实际上, @Where我不是我的决定,但我能找到克服这一点的解决方案(创建另一个dao方法来执行某些操作)是如此丑陋。 那么,有没有办法克服这个? 还是我错过了什么? 谢谢您的帮助。

Hibernate实体存储为HttpSession属性值

我正在处理一个带有大量相当混乱的代码库的遗留Java应用程序。 有一个相当标准的“用户”对象存储在请求之间的HttpSession中,因此servlet在顶部执行如下操作: HttpSession session = request.getSession(true); User user = (User)session.getAttribute(“User”); 旧的用户身份validation层(我将不会描述;足以说,它没有使用数据库)正被替换为使用Hibernate映射到数据库的代码。 所以’User’现在是一个Hibernate实体。 我对Hibernate对象生命周期的理解有点模糊,但似乎在HttpSession中存储’User’现在成为一个问题,因为它将在下一个请求期间在不同的事务中被检索。 在这里做什么是正确的? 我可以使用Hibernate Session对象的update()方法在下次重新附加User实例吗? 我需要吗?

项目欧拉:#8

在尝试回答此问题时: 具有最大乘积的1000位数字中的四个相邻数字是9×9×8×9 = 5832。 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866 70172427121883998797908792274921901699720888093776 65727333001053367881220235421809751254540594752243 52584907711670556013604839586446706324415722155397 53697817977846174064955149290862569321978468622482 83972241375657056057490261407972968652414535100474 82166370484403199890008895243450658541227588666881 16427171479924442928230863465674813919123162824586 17866458359124566529476545682848912883142607690042 24219022671055626321111109370544217506941658960408 07198403850962455444362981230987879927244284909188 84580156166097919133875499200524063689912560717606 05886116467109405077541002256983155200055935729725 7163626956188267042825248360082 3257530420752963450 找到具有最大产品的1000位数字中的十三个相邻数字。 这个产品有什么价值? 我得到2091059712然而欧拉说答案是不正确的,有什么我可能做错了吗? public class LargestProductThirteen{ public static void main( String[] args ) { final String num = “”; long greatestProduct = 0; for (int i = 0; i greatestProduct) […]