我正在尝试使用Glassfish Server(一个简单的购物车)的第一个EJB.我打算为每个Http Session使用CartBean.如果我的购物车豆跟随 -
public interface CartLocal {
public void addItem(String item);
public void removeItem(String item);
}
@Stateful
public class CartBean implements CartLocal {
List<String> item = new java.util.ArrayList<String>();
public void addItem(String item) {
....
}
public void removeItem(String item) {
....
}
}
Run Code Online (Sandbox Code Playgroud)
我必须在web servlet客户端中使用上面的有状态会话bean,这样,对于每个新的Http Session,我们都会获得一个新的有状态会话bean.这样一个用户就有一个购物车.我的理解是错误的在servlet中使用会话bean,或者下面的代码是错误的,这为所有用户创建了一个有状态会话bean.
@EJB CartLocal cart;
protected void doGet(....) throws IOException...... {
cart.addItem(....);
}
Run Code Online (Sandbox Code Playgroud) 我们可以使用RSA密钥创建XML数字签名.但是如何使用椭圆曲线键来签署xml文件?我收到错误消息,如 -
Exception in thread "main" java.security.KeyException: ECKeyValue not supported
at org.jcp.xml.dsig.internal.dom.DOMKeyValue$EC.<init>(DOMKeyValue.java:350)
at org.jcp.xml.dsig.internal.dom.DOMKeyInfoFactory.newKeyValue(DOMKeyInfoFactory.java:71)
at csr.ExtractEC.main(XMLSignatureECTest.java:57)
Caused by: java.lang.ClassNotFoundException: sun/security/ec/ECParameters
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.jcp.xml.dsig.internal.dom.DOMKeyValue$EC.getMethods(DOMKeyValue.java:367)
at org.jcp.xml.dsig.internal.dom.DOMKeyValue$EC$1.run(DOMKeyValue.java:343)
at org.jcp.xml.dsig.internal.dom.DOMKeyValue$EC$1.run(DOMKeyValue.java:339)
at java.security.AccessController.doPrivileged(Native Method)
at org.jcp.xml.dsig.internal.dom.DOMKeyValue$EC.<init>(DOMKeyValue.java:338)
... 2 more
Run Code Online (Sandbox Code Playgroud)
我用下面的代码创建了SignatureMethod和KeyInfo -
String url = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256";
SignatureMethod signatureMethod = factory.newSignatureMethod(url, null);
SignedInfo signedInfo = factory.newSignedInfo(c14n, signatureMethod, Collections.singletonList(reference));
PrivateKey privateKey = Utils.generatePrivateEC("e:\\certs\\ec\\ec.key.p8");
Certificate certificate = Utils.generatePublic("e:\\certs\\ec\\ec.cer");
KeyInfoFactory keyInfoFactory = factory.getKeyInfoFactory();
KeyValue keyValue = keyInfoFactory.newKeyValue(certificate.getPublicKey());
KeyInfo keyInfo = keyInfoFactory.newKeyInfo(Collections.singletonList(keyValue));
Run Code Online (Sandbox Code Playgroud)
JDK - Oracle JDK …
当我将应用程序作为独立的Java程序运行时,它运行良好.当我将它作为applet运行时,它会抛出带有以下stacktrace的JAXBException.
javax.xml.bind.JAXBException: jaxb.properties in package com/test/package does not contain the javax.xml.bind.context.factory property.
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
当我添加一个jaxb.properties时,我收到以下错误 -
javax.xml.bind.JAXBException
- with linked exception:
[java.lang.NoSuchMethodException: com.sun.xml.internal.ws.developer.JAXBContextFactory.createContext([Ljava.lang.Class;, java.util.Map)]
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我将以下jar添加到classpath中 -
导致此错误的原因.我错过了任何依赖项.
编辑:我在浏览器和开发环境中使用Java 7 u 59.
我有一个tiff文件,其中包含一些由制表符分隔的文本(4个空格).但是当我从这个tiff图像文件中提取文本时,我总是在两列之间得到一个空格.示例示例:
TIFF IMAGE:
col-a col-b col-c
desired output:
col-a col-b col-c
but I am getting the following:
col-a col-b col-c
Run Code Online (Sandbox Code Playgroud)
我尝试使用相同格式的多个图像,但结果始终相同.我该如何解决这个问题?我可以训练tesseract来理解这个吗?
我们使用java原语'byte' fileInputStream.read(byte)等读取和写入二进制文件.在另一个例子中我们看到byte[] = String.getBytes().一个字节只是8位值.为什么我们byte[]用来读二进制文件?从文件或字符串读取后,字节值包含什么?