小编Jor*_*lan的帖子

JAX-RS使用异常映射器

我已经读过,我可以创建一个javax.ws.rs.ext.ExceptionMapper将抛出的应用程序异常映射到Response对象的实现.

我创建了一个简单的示例,如果持久化对象时手机长度超过20个字符,则抛出异常.我期望将异常映射到HTTP 400(错误请求)响应; 但是,我收到HTTP 500(内部服务器错误),但有以下异常:

java.lang.ClassCastException: com.example.exception.InvalidDataException cannot be cast to java.lang.Error
Run Code Online (Sandbox Code Playgroud)

我错过了什么?任何意见是极大的赞赏.

异常映射器:

@Provider
public class InvalidDataMapper implements ExceptionMapper<InvalidDataException> {

    @Override
    public Response toResponse(InvalidDataException arg0) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }

}
Run Code Online (Sandbox Code Playgroud)

例外类:

public class InvalidDataException extends Exception {

    private static final long serialVersionUID = 1L;

    public InvalidDataException(String message) {
        super(message);
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

实体类:

@Entity
@Table(name="PERSON")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class Person {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="ID")
    private Long id;

    @Column(name="NAME")
    private String name;

    @Column(name="PHONE")
    private …
Run Code Online (Sandbox Code Playgroud)

java exception-handling jax-rs jersey java-ee

32
推荐指数
1
解决办法
5万
查看次数

JAX-WS - 添加SOAP标头

我正在尝试创建一个独立的客户端来使用一些Web服务.我必须将我的用户名和密码添加到SOAP Header中.我尝试添加凭据如下:

OTSWebSvcsService service = new OTSWebSvcsService();
OTSWebSvcs port = service.getOTSWebSvcs();

BindingProvider prov = (BindingProvider)port;
prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "myusername");
prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "mypassword");

...
Run Code Online (Sandbox Code Playgroud)

当我在服务上调用方法时,我得到以下异常:

com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5048E: One of "SOAP Header" elements required.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我如何将这些属性添加到SOAP标头?

编辑:我使用的是JDK6中包含的JAX-WS 2.1.我现在正在使用JAX-WS 2.2.我现在得到以下异常:

com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5509E: A security token whose type is [http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken] is required.
Run Code Online (Sandbox Code Playgroud)

我该如何创建此令牌?

java ws-security soap web-services jax-ws

30
推荐指数
5
解决办法
10万
查看次数

JAXB映射对XML的循环引用

我有一个包含循环的对象图.我如何让JAXB来处理这个问题?我尝试@XmlTransient在子类中使用注释,但JAXB编组仍然检测到循环.

@Entity
@XmlRootElement
public class Contact {

    @Id
    private Long contactId;

    @OneToMany(mappedBy = "contact")
    private List<ContactAddress> addresses;

...

}

@Entity
@XmlRootElement
public class ContactAddress {

    @Id
    private Long contactAddressId;

    @ManyToOne
    @JoinColumn(name = "contact_id")
    private Contact contact;

    private String address;

...

}
Run Code Online (Sandbox Code Playgroud)

java jpa jaxb xml-serialization

19
推荐指数
3
解决办法
2万
查看次数

如何使用JPA/EclipseLink级联持久化

我在父实体上执行级联持久操作时遇到问题.当子实体被持久化时,父实体的引用(生成的id)为null.我怎样才能让它坚持正确?

实体:

@Entity
public class Contact {

        @Id @GeneratedValue(strategy=GenerationType.TABLE, generator="contact_gen")
        @TableGenerator(name="contact_gen",
            table="id_gen", pkColumnName="gen_name", 
            valueColumnName="gen_val", pkColumnValue="cont_gen")
        @Column(name="contact_id")
        private Long id;

        @Column(name="name")
        private String name;

        @OneToMany(mappedBy="contact", cascade=CascadeType.PERSIST)
        private List<Address> addresses = new ArrayList<Address>();

        public void addAddress(Address address) {
             addresses.add(address);
        }

        ...
}

@Entity
public class Address {

        @Id @GeneratedValue(strategy=GenerationType.TABLE, generator="address_gen")
        @TableGenerator(name="address_gen",
            table="id_gen", pkColumnName="gen_name", 
            valueColumnName="gen_val", pkColumnValue="addr_gen")
        @Column(name="address_id")
        private Long id;

        @Column(name="full_address")
        private String fullAddress;

        @ManyToOne
        @JoinColumn(name="contact_id")
        private Contact contact;

        ...
}
Run Code Online (Sandbox Code Playgroud)

服务:

@Stateless
public class ContactService {

    @PersistenceContext
    private EntityManager em;

    public void …
Run Code Online (Sandbox Code Playgroud)

mysql jpa eclipselink

13
推荐指数
1
解决办法
2万
查看次数

SQL Server URL解码

我需要针对存储URL编码文本的遗留表运行查询.我需要在我的结果中解码此文本.我该如何实现这一目标?

sql sql-server-2000 urldecode

13
推荐指数
2
解决办法
2万
查看次数

使用Guice构造函数注入

我有一些使用工厂的示例代码.我想通过删除工厂来清理代码并使用Guice代替.我试图这样做,但我遇到了一个小障碍.我对Guice很新,所以我希望有人可以帮助我.

现有客户端代码(使用工厂):

public class MailClient {

    public static void main(String[] args) {
        MailConfig config = MailConfigFactory.get();
        config.setHost("smtp.gmail.com");
        Mail mail = MailFactory.get(config);
        mail.send();
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图使用Guice进行重构:

//Replaces existing factories
public class MailModule extends AbstractModule {

    @Override
    protected void configure() {
        bind(Mail.class)
        .to(MailImpl.class);

        bind(MailConfig.class)
        .to(MailConfigImpl.class);
    }
}

public class MailImpl implements Mail {

    private final MailConfig config;

    @Inject
    public MailImpl(MailConfig config) {
        this.config = config;
    }

    public void send() { ... }
}

public class MailClient {

    public static void main(String[] args) …
Run Code Online (Sandbox Code Playgroud)

java dependency-injection guice

6
推荐指数
1
解决办法
1万
查看次数

CSS中的垂直居中元素

我有两个并排的元素.元素2小于元素1.两个元素都没有固定的高度.我需要垂直居中元素2.如何使用CSS实现这一目标?

编辑:

这是我到目前为止:

<div id="container" style="width: 100%;">
    <div id="img1" style="float: left;">
        <img src="image1.jpg".../>
    </div>
    <div id="img2" style="float: right;">
        <img src="image2.jpg".../>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

img1的高度总是大于img2的高度.我希望img2垂直对齐.希望这能澄清我想要实现的目标.

css

5
推荐指数
1
解决办法
3087
查看次数