是否可以仅使用注释设置JAX-RS应用程序?(使用Servlet 3.0和JAX-RS Jersey 1.1.0)
我试过,没有运气.web.xml似乎需要使用一些.
配置A(工作,但具有web.xml配置)
web.xml中
...
<servlet>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
...
Run Code Online (Sandbox Code Playgroud)
Java的
@ApplicationPath("/")
public class MyApplication extends Application {
...
}
Run Code Online (Sandbox Code Playgroud)
配置B(不工作,抛出异常)
@ApplicationPath("/")
@WebServlet("/*") // <--
public class MyApplication extends Application {
...
}
Run Code Online (Sandbox Code Playgroud)
后者似乎坚持认为Application将是Servlet的子类(例外不会留下任何猜测)
java.lang.ClassCastException: org.foo.rest.MyApplication cannot be cast to javax.servlet.Servlet
Run Code Online (Sandbox Code Playgroud)
问题
为什么web.xml定义有效,但注释没有?有什么不同?
有没有办法使它工作,例如有一个没有web.xml的JAX-RS应用程序?
@JoinColumn和之间的确切区别是@PrimaryKeyJoinColumn什么?
您@JoinColumn用于属于外键的列.典型的列可能看起来像(例如在具有附加属性的连接表中):
@ManyToOne
@JoinColumn(name = "...")
private OtherClass oc;
Run Code Online (Sandbox Code Playgroud)
如果我将列提升为/ PK(也就是识别关系)会发生什么?由于该列现在是PK,我必须用以下标记来标记@Id:
@Id
@ManyToOne
@JoinColumn(name = "...")
private OtherClass oc;
Run Code Online (Sandbox Code Playgroud)
现在的问题是:
和@Id+ @JoinColumn只是一样@PrimaryKeyJoinColumn吗?:
@ManyToOne
@PrimaryKeyJoinColumn(name = "...")
private OtherClass oc;
Run Code Online (Sandbox Code Playgroud)
如果没有,那@PrimaryKeyJoinColumn有什么用?
JPA实体类是否可以包含两个嵌入(@Embedded)字段?一个例子是:
@Entity
public class Person {
@Embedded
public Address home;
@Embedded
public Address work;
}
public class Address {
public String street;
...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,一个Person可以包含两个Address实例 - 家庭和工作.我正在使用JPA和Hibernate的实现.当我使用Hibernate Tools生成模式时,它只嵌入一个Address.我想要的是两个嵌入式Address实例,每个实例的列名都有区别或预先设置了一些前缀(例如家庭和工作).我知道@AttributeOverrides,但这要求每个属性都被单独覆盖.如果嵌入的object(Address)变大,因为每个列需要单独重写,这会很麻烦.
我理解本地视图,远程视图和无界面视图之间的区别.我只是不明白"无视图"(无注释)和无界面视图之间的区别.还有为什么我要用我的界面注释@Local?如果我根本不对界面进行注释会有什么不同呢?
我在Question实体中有以下内容:
@NamedQuery(name = "Question.allApproved",
query = "SELECT q FROM Question q WHERE q.status = 'APPROVED'")
Run Code Online (Sandbox Code Playgroud)
和
@Enumerated(EnumType.STRING)
private Status status;
// usual accessors
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
异常说明:编译查询时出错[Question.countApproved:
SELECT COUNT(q) FROM Question q WHERE q.status = 'APPROVED'],第1行,第47列:无效的枚举等于表达式,无法将类型[myCompnay.application.Status]的枚举值与非枚举值类型进行比较[java.lang.String].at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:501)
我该如何解决?
我正在尝试通过注释将无状态EJB注入我的JAX-RS Web服务.不幸的是,EJB是公正的null,NullPointerException当我尝试使用它时,我得到了它.
@Path("book")
public class BookResource {
@EJB
private BookEJB bookEJB;
public BookResource() {
}
@GET
@Produces("application/xml")
@Path("/{bookId}")
public Book getBookById(@PathParam("bookId") Integer id)
{
return bookEJB.findById(id);
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
以下是有关我的机器的一些信息:
你们能展示一些有用的例子吗?
当我开始寻找多态性的好处时,我在这里找到了这个问题.但在这里我无法找到答案.让我告诉我想找到什么.这里我有一些课程:
class CoolingMachines{
public void startMachine(){
//No implementationion
}
public void stopMachine(){
//No implementationion
}
}
class Refrigerator extends CoolingMachines{
public void startMachine(){
System.out.println("Refrigerator Starts");
}
public void stopMachine(){
System.out.println("Refrigerator Stop");
}
public void trip(){
System.out.println("Refrigerator Trip");
}
}
class AirConditioner extends CoolingMachines{
public void startMachine(){
System.out.println("AC Starts");
}
public void stopMachine(){
System.out.println("AC Stop");
}
}
public class PolymorphismDemo {
CoolingMachines cm = new Refrigerator();
Refrigerator rf = new Refrigerator();
}
Run Code Online (Sandbox Code Playgroud)
现在我在Demo类中创建了两个对象,并且是对它的引用Refrigerator.我完全理解从rf对象我可以调用trip()方法 …
在persistence.xml JPA配置文件中,您可以使用如下行:
<persistence-unit name="com.nz_war_1.0-SNAPSHOTPU" transaction-type="JTA">
Run Code Online (Sandbox Code Playgroud)
或有时:
<persistence-unit name="com.nz_war_1.0-SNAPSHOTPU" transaction-type=”RESOURCE_LOCAL”>
Run Code Online (Sandbox Code Playgroud)
我的问题是:
transaction-type="JTA"和之间有什么区别transaction-type=”RESOURCE_LOCAL”?
我还注意到一些缺少事务类型的persistence.xml文件.这是对的吗?
我们正在规划一个大型企业应用程序.在经历了J2EE的痛苦之后,我们将重点放在评估hibernate上.
看起来新的Java EE API更简单.我还读了一些关于Hibernate和iBatis的好东西.我们的团队对任何框架都缺乏经验.
我想确定5个主要的比较点
如果您要管理一个由具有J2EE经验的约6位开发人员组成的团队,您将使用哪种ORM工具?为什么?
你知道任何实用程序类/库,可以将Map转换为URL友好的查询字符串吗?
示例:
我有一张地图:
- "param1"= 12,
- "param2"="cat"
我想得到:__CODE__.
PS.我知道我可以轻松地自己编写,我很惊讶我无法在任何地方找到它(我到目前为止检查了Apache Commons).