我们正在将我们的应用程序迁移到Java EE容器中,并寻找用于我们迁移的应用程序的单元测试(和集成测试)的工具.我们的要求包括:
您在Java EE环境中使用什么来实现测试?您部署了哪些技术/设置?
我的研究发现了Cactus和JUnitEE:你有成功的设置吗?
是否可以在 Java EE 6 中以编程方式对用户进行身份验证?
让我解释一下更多细节:
我有一个带有 Servlet 和 hibernate 的现有 Java SE 项目;我手动管理所有身份验证和访问控制:
class Authenticator {
int Id
string username
}
Authenticator login(string username, string password) ;
void doListData(Authenticator auth) {
if (isLoggedIn(auth)) listData();
else doListError
}
void doUpdateData (Authenticator auth) {
if (isLoggedAsAdmin(auth)) updateData() ;
else doListError();
}
void doListError () {
listError() ;
}
Run Code Online (Sandbox Code Playgroud)
我在这个项目中集成了 J2ee/jpa/servlet 3/... (Glassfish 3)。
我见过这样的注释:
@RolesAllowed ("viewer")
void doListdata (...) {
istData() ;
}
@RolesAllowed("admin")
void doUpdateData (...) {
updateData() …Run Code Online (Sandbox Code Playgroud) 我是Java EE世界的新手.作为一个尝试熟悉Java EE的练习,我正在尝试创建一个分层的Web应用程序,但我有点卡在最好的方法是在后台启动服务工作.
服务参数:
因此,想法是用户按下网页上的按钮,并在服务器上的某个位置打开套接字连接.对于剩余的用户会话(或者直到用户按下某种断开按钮),套接字保持打开状态并将接收的信息推送到某种集中式存储,servlet可以通过AJAX查询并返回给用户.
是否有Java EE类型的方法来处理这种情况?当然,我想要做的就是编写一个Java应用程序来监听servlet可以连接的端口并生成打开这些套接字的新线程,但这对我来说似乎非常特别.
(PS:我也是Stack Overflow的新手,所以请原谅我,如果我需要一些时间来计算网站!)
我有一个JAX-RS Web服务,它使用JPA实体类.我有一个像这样的资源类:
@Path("/entity")
public class MyEntityResource
{
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/{entity}")
public MyEntity getMyEntity(@PathParam("entity") String entity)
{
log.debug("Entering getMyEntity with param: " + entity);
MyEntity entityObject = genericService.find(MyEntity.class, entity);
if (entityObject == null)
{
log.debug("Entity not found.");
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
log.debug("Exiting getMyEntity");
return entityObject;
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行该服务并对该实体进行get调用时,我收到此错误:
SEVERE: The response of the WebApplicationException cannot be utilized as the response is already committed. Re-throwing to the HTTP container
javax.ws.rs.WebApplicationException: javax.xml.bind.MarshalException
- with linked exception:
[Exception [EclipseLink-25003] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): …Run Code Online (Sandbox Code Playgroud) 如何通过JAX WS Web服务发送JPA生成的实体,而不会因为这些实体中的引用循环而获得XML无限循环异常?
任何的想法?我发现这个MOXy可以做到......部分.但是我已经生成了实体,并且手动将XmlTransient和这样的注释添加到每个实体中都很疯狂.
你还有其他想法怎么做吗?
谢谢!
我是JAXB的新手.我能够填充XML.在我的情况下,我需要我的名称空间前缀
<set xmlns="www.google.com"
xmlns:myName="www.google.com">
Run Code Online (Sandbox Code Playgroud)
代替
<set xmlns="www.google.com"
xmlns:ns2="www.google.com">
Run Code Online (Sandbox Code Playgroud)
我使用了package-info类和@XmlType注释.我是否需要添加任何变量来获取第二个命名空间的所需名称,如"xmlns:MyName"而不是"xmlns:ns2"?
以下是我用于在 WebLogic 10.3.2 版本上使用 MOXy JAXB 转换创建子类的类。我正在使用 EclipseLink 2.4.1 MOXy 来生成 XML。我无法在以下代码中生成 type 属性。如果我在这里做错了什么,请告诉我。
我正在使用 EclipseLink MOXy 2.4.1 和 WebLogic 10.3.2 并且在 WebLogic 中配置了 MOXy 2.4.1
import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlDiscriminatorNode;
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlDiscriminatorNode("@type")
public abstract class BaseEntity {
private String firstName;
private String lastName;
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
Run Code Online (Sandbox Code Playgroud)
子类
package forum13831189;
import …Run Code Online (Sandbox Code Playgroud) 我对JAXB/Jackson编组有一个问题.我有这样的注释
@XmlAttribute(name = "private")
protected Boolean mPrivate;
Run Code Online (Sandbox Code Playgroud)
如果mPrivate变量是,我希望这个属性不存在null.
如果输出是XML,这可以正常工作.但如果我使用杰克逊切换到JSON,输出就是
xxxxxxx, "private":null, xxxxxxxx
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么会发生这种情况以及如何解决这个问题?提前致谢.
我有一个非常简单的类,有两个字段,String sourceAddress和int port.
我希望它们映射到源/地址和源/端口节点,而不是jaxb默认的sourceAddress和sourcePort.
所以我使用MOXy @XmlPath注释.
问题是注释只是被忽略,我得到"jaxb默认"xml文件:
<szk>
<sourceAddress>test</sourceAddress>
<sourcePort>10000</sourcePort>
</sz>
Run Code Online (Sandbox Code Playgroud)
提前感谢任何帮助Agostino
import javax.xml.bind.*;
import javax.xml.bind.annotation.*;
import org.eclipse.persistence.jaxb.JAXBContext;
import org.eclipse.persistence.oxm.annotations.XmlPath;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SZK {
@XmlPath("source/address")
private String sourceAddress;
@XmlPath("source/port")
private int sourcePort;
public static void main (String [] args) throws JAXBException{
SZK k = new SZK();
k.sourceAddress = "test";
k.sourcePort = 10000;
javax.xml.bind.JAXBContext jc = JAXBContext.newInstance(SZK.class);
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(k, System.out);
}
}
我正在使用最新的Mono 3.12.1.除了字符串插值之外,所有C#6功能都适用于我.我正在使用MCS编译器.
这是我的代码:
const string someString = "Some String";
var str = $"string: {someString}";
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
error CS1056: Unexpected character `$'
Run Code Online (Sandbox Code Playgroud)
Mono支持字符串插值吗?
jaxb ×6
eclipselink ×4
moxy ×4
java ×3
java-ee ×2
jpa ×2
annotations ×1
c#-6.0 ×1
daemon ×1
jackson ×1
jakarta-ee ×1
java-ee-6 ×1
jax-rs ×1
mono ×1
rbac ×1
security ×1
service ×1
sockets ×1
unit-testing ×1
web-services ×1